TaskFlow’s Docker Compose stack defines 8 services: two isolated MongoDB databases, four Node.js microservices, and two React frontends served by Nginx. Each service is assigned a fixed container name, port mapping, and restart policy so that the stack behaves consistently across development and production environments.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Ajith66310/task-manager-full/llms.txt
Use this file to discover all available pages before exploring further.
Service overview
| Service | Container name | Image / build context | Host port | Container port | Depends on | Restart policy |
|---|---|---|---|---|---|---|
mongo-user | task_manager_mongo_user | mongo:latest | 27018 | 27017 | — | unless-stopped |
mongo-task | task_manager_mongo_task | mongo:latest | 27019 | 27017 | — | unless-stopped |
api-gateway | task_manager_api_gateway | ./api-gateway | 5000 | 5000 | user-service, task-service | unless-stopped |
user-service | task_manager_user_service | ./user-service | — | 5001 | mongo-user | unless-stopped |
task-service | task_manager_task_service | ./task-service | — | 5002 | mongo-task, user-service, notification-service | unless-stopped |
notification-service | task_manager_notification_service | ./notification-service | — | 5003 | — | unless-stopped |
admin-frontend | task_manager_admin_frontend | ./task-manager-frontend | 3000 | 80 | api-gateway | unless-stopped |
user-frontend | task_manager_user_frontend | ./task-manager-user-frontend | 5173 | 80 | api-gateway | unless-stopped |
All services use the
restart: unless-stopped policy. Docker will automatically restart any container that exits unexpectedly — such as after a crash or a host machine reboot — unless you have explicitly stopped the container with docker-compose stop or docker-compose down.Health check endpoints
Use these endpoints to verify that a service is reachable after startup.API Gateway
The gateway listens on port5000 and forwards requests to the upstream microservices. A successful response to any proxied route confirms the gateway is operational:
Notification Service
The notification service exposes a dedicated health check route:Volume mounts
Two named volumes provide persistent storage for the MongoDB containers:| Volume name | Mounted in | Mount path | Purpose |
|---|---|---|---|
mongo_user_data | mongo-user | /data/db | Persists all user accounts, authentication records, and admin data. |
mongo_task_data | mongo-task | /data/db | Persists all task records, assignments, and task history. |
docker-compose down -v removes both volumes and permanently deletes all stored data. See Deploy TaskFlow with Docker Compose for teardown details.
Frontend build configuration
Both frontend services use a multi-stage Docker build. The first stage installs dependencies and compiles the React application using Vite or Create React App. The second stage copies the compiled output into annginx:alpine image and serves it with the following Nginx configuration:
try_files directive ensures that client-side routing works correctly — all unmatched paths fall back to index.html so the React router handles navigation.
The API URL is injected at build time as a build argument (VITE_API_URL for the user frontend, REACT_APP_API_URL for the admin frontend) and baked into the static bundle. Changing the API Gateway address requires a full image rebuild for both frontend services.