petitspas/docker-compose.yml
Julien Martin d32d956b0e feat(dashboard-admin): connect admin dashboard to real API data (Ticket #92)
- Frontend:
  - Create UserService to handle user-related API calls (gestionnaires, parents, AMs, admins)
  - Update AdminDashboardScreen to use dynamic widgets
  - Implement dynamic management widgets:
    - GestionnaireManagementWidget
    - ParentManagementWidget
    - AssistanteMaternelleManagementWidget
    - AdminManagementWidget
  - Add data models: ParentModel, AssistanteMaternelleModel
  - Update AppUser model
  - Update ApiConfig

- Backend:
  - Update controllers (Parents, AMs, Gestionnaires, Users) to allow ADMINISTRATEUR role to list users
  - Fix: Activate endpoint GET /gestionnaires (import GestionnairesModule in UserModule)

- Docs:
  - Add note about backend fix for Gestionnaires module
  - Update .cursorrules to forbid worktrees

- Seed:
  - Add test data seed script (reset-and-seed-db.sh)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:17:51 +01:00

103 lines
3.2 KiB
YAML

services:
# Base de données PostgreSQL
database:
image: postgres:17
container_name: ptitspas-postgres
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ./database/BDD.sql:/docker-entrypoint-initdb.d/01_init.sql
- postgres_data:/var/lib/postgresql/data
networks:
- ptitspas_network
# Interface d'administration DB
pgadmin:
image: dpage/pgadmin4
container_name: ptitspas-pgadmin
restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
SCRIPT_NAME: /pgadmin
depends_on:
- database
labels:
- "traefik.enable=true"
- "traefik.http.routers.ptitspas-pgadmin.rule=Host(\"app.ptits-pas.fr\") && PathPrefix(\"/pgadmin\")"
- "traefik.http.routers.ptitspas-pgadmin.entrypoints=websecure"
- "traefik.http.routers.ptitspas-pgadmin.tls.certresolver=leresolver"
- "traefik.http.routers.ptitspas-pgadmin.priority=30"
- "traefik.http.services.ptitspas-pgadmin.loadbalancer.server.port=80"
networks:
- ptitspas_network
- proxy_network
# Backend NestJS
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: ptitspas-backend
restart: unless-stopped
environment:
POSTGRES_HOST: ${POSTGRES_HOST}
POSTGRES_PORT: ${POSTGRES_PORT}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
API_PORT: ${API_PORT}
JWT_ACCESS_SECRET: ${JWT_ACCESS_SECRET}
JWT_ACCESS_EXPIRES: ${JWT_ACCESS_EXPIRES}
JWT_REFRESH_SECRET: ${JWT_REFRESH_SECRET}
JWT_REFRESH_EXPIRES: ${JWT_REFRESH_EXPIRES}
NODE_ENV: ${NODE_ENV}
LOG_API_REQUESTS: ${LOG_API_REQUESTS:-false}
CONFIG_ENCRYPTION_KEY: ${CONFIG_ENCRYPTION_KEY}
depends_on:
- database
labels:
- "traefik.enable=true"
- "traefik.http.routers.ptitspas-api.rule=Host(\"app.ptits-pas.fr\") && PathPrefix(\"/api\")"
- "traefik.http.routers.ptitspas-api.entrypoints=websecure"
- "traefik.http.routers.ptitspas-api.tls.certresolver=leresolver"
- "traefik.http.routers.ptitspas-api.priority=20"
- "traefik.http.services.ptitspas-api.loadbalancer.server.port=3000"
networks:
- ptitspas_network
- proxy_network
# Frontend Flutter
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: ptitspas-frontend
restart: unless-stopped
environment:
API_URL: ${API_URL}
depends_on:
- backend
labels:
- "traefik.enable=true"
- "traefik.http.routers.ptitspas-front.rule=Host(\"app.ptits-pas.fr\")"
- "traefik.http.routers.ptitspas-front.entrypoints=websecure"
- "traefik.http.routers.ptitspas-front.tls.certresolver=leresolver"
- "traefik.http.routers.ptitspas-front.priority=10"
- "traefik.http.services.ptitspas-front.loadbalancer.server.port=80"
networks:
- ptitspas_network
- proxy_network
volumes:
postgres_data:
networks:
ptitspas_network:
driver: bridge
proxy_network:
external: true