Skip to main content

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.

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.

Service overview

ServiceContainer nameImage / build contextHost portContainer portDepends onRestart policy
mongo-usertask_manager_mongo_usermongo:latest2701827017unless-stopped
mongo-tasktask_manager_mongo_taskmongo:latest2701927017unless-stopped
api-gatewaytask_manager_api_gateway./api-gateway50005000user-service, task-serviceunless-stopped
user-servicetask_manager_user_service./user-service5001mongo-userunless-stopped
task-servicetask_manager_task_service./task-service5002mongo-task, user-service, notification-serviceunless-stopped
notification-servicetask_manager_notification_service./notification-service5003unless-stopped
admin-frontendtask_manager_admin_frontend./task-manager-frontend300080api-gatewayunless-stopped
user-frontendtask_manager_user_frontend./task-manager-user-frontend517380api-gatewayunless-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 port 5000 and forwards requests to the upstream microservices. A successful response to any proxied route confirms the gateway is operational:
GET http://localhost:5000

Notification Service

The notification service exposes a dedicated health check route:
GET http://localhost:5003/health
A healthy service responds with:
Notification Service is running

Volume mounts

Two named volumes provide persistent storage for the MongoDB containers:
Volume nameMounted inMount pathPurpose
mongo_user_datamongo-user/data/dbPersists all user accounts, authentication records, and admin data.
mongo_task_datamongo-task/data/dbPersists all task records, assignments, and task history.
Named volumes are managed by Docker and survive container restarts and rebuilds. The data is retained as long as the volumes exist on the host. Running 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 an nginx:alpine image and serves it with the following Nginx configuration:
server {
    listen 80;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
}
The 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.

Build docs developers (and LLMs) love