Full-stack NPI (New Product Introduction) gate tracking tool with: - Express/TypeScript API with PostgreSQL - React/Vite/Mantine frontend - 13-gate process (G0-G12) with 4 product categories - RACI matrix auto-population from templates - File attachments with preview (images, PDFs, text) - Kanban board, Gantt/timeline views - Docker Compose orchestration Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
69 lines
1.9 KiB
YAML
69 lines
1.9 KiB
YAML
services:
|
|
db:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
- ./db/init:/docker-entrypoint-initdb.d
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-npi_tracker}
|
|
POSTGRES_USER: ${POSTGRES_USER:-npi}
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD:-changeme_in_production}
|
|
ports:
|
|
- "5434:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-npi} -d ${POSTGRES_DB:-npi_tracker}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
api:
|
|
build:
|
|
context: ./api
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-npi}:${DB_PASSWORD:-changeme_in_production}@db:5432/${POSTGRES_DB:-npi_tracker}
|
|
APP_PASSWORD: ${APP_PASSWORD:-npi2026}
|
|
NODE_ENV: ${NODE_ENV:-development}
|
|
API_PORT: ${API_PORT:-3001}
|
|
MAILGUN_API_KEY: ${MAILGUN_API_KEY:-}
|
|
MAILGUN_DOMAIN: ${MAILGUN_DOMAIN:-}
|
|
MAILGUN_FROM: ${MAILGUN_FROM:-npi-tracker@yourdomain.com}
|
|
ports:
|
|
- "4010:3001"
|
|
volumes:
|
|
- ./api/src:/app/src
|
|
- uploads:/app/uploads
|
|
|
|
web:
|
|
build:
|
|
context: ./web
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- api
|
|
ports:
|
|
- "4011:80"
|
|
|
|
scheduler:
|
|
build:
|
|
context: ./api
|
|
dockerfile: Dockerfile
|
|
command: node dist/scheduler.js
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: postgresql://${POSTGRES_USER:-npi}:${DB_PASSWORD:-changeme_in_production}@db:5432/${POSTGRES_DB:-npi_tracker}
|
|
MAILGUN_API_KEY: ${MAILGUN_API_KEY:-}
|
|
MAILGUN_DOMAIN: ${MAILGUN_DOMAIN:-}
|
|
MAILGUN_FROM: ${MAILGUN_FROM:-npi-tracker@yourdomain.com}
|
|
|
|
volumes:
|
|
pgdata:
|
|
uploads:
|