TaskFlow separates concerns across independently deployable services, each running in its own Docker container. All client traffic enters through a single API Gateway, which routes requests to the appropriate backend. The two frontend applications — one for end users, one for administrators — are served by Nginx and communicate exclusively through the gateway, never directly with individual backend services.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.
Services overview
API Gateway
Runs on port 5000. The single entrypoint for all client requests. Uses
http-proxy-middleware to route incoming paths to the correct backend service. Handles CORS and request logging.User Service
Runs on port 5001. Manages user registration, JWT authentication, admin account operations, and user profile data. Connected exclusively to the
mongo-user database.Task Service
Runs on port 5002. Handles the full task lifecycle — create, read, update, delete — for both users and administrators. Connected exclusively to the
mongo-task database.Notification Service
Runs on port 5003. Sends automated email alerts via the EmailJS API when task status changes. Stateless — it holds no database connection.
mongo-user
Isolated MongoDB container for the user service. Exposed on host port 27018 and accessible within the Docker network at
mongo-user:27017. Data is persisted in the mongo_user_data named volume.mongo-task
Isolated MongoDB container for the task service. Exposed on host port 27019 and accessible within the Docker network at
mongo-task:27017. Data is persisted in the mongo_task_data named volume.API Gateway routing
The API Gateway (api-gateway/server.js) uses Express and http-proxy-middleware to forward requests based on path prefix. The routing table is:
| Incoming path | Forwarded to | Service |
|---|---|---|
/api/auth | http://user-service:5001/api/auth | User Service |
/api/users | http://user-service:5001/api/users | User Service |
/api/admin/tasks | http://task-service:5002/api/admin/tasks | Task Service |
/api/admin | http://user-service:5001/api/admin | User Service |
/api/tasks | http://task-service:5002/api/tasks | Task Service |
/api/admin/tasks is registered before /api/admin so that admin task requests are not incorrectly captured by the broader admin proxy rule.
Frontend applications
Both frontends are React applications built with Vite and served in production by Nginx inside their containers:- User Frontend (
task-manager-user-frontend) — served on port 5173. End users log in, manage their own tasks, and track progress. - Admin Frontend (
task-manager-frontend) — served on port 3000. Administrators verify users, assign tasks, and monitor the full task list.
nginx.conf that proxies API calls to the gateway at http://localhost:5000/api. Neither frontend communicates directly with any backend service.
Data isolation
Each backend service that requires persistence is paired with its own dedicated MongoDB instance:user-service→mongo-user→ databaseTaskManagerUsertask-service→mongo-task→ databaseTaskManagerTask
Service startup order
Docker Compose enforces startup dependencies via
depends_on. The task service depends on both the user service and the notification service — it will not start until both are running. The API Gateway waits for the user service and task service. Both frontend containers wait for the API Gateway.The full startup chain is: mongo-user and mongo-task → user-service and notification-service → task-service → api-gateway → admin-frontend and user-frontend.Container summary
| Container | Image | Exposed port | Depends on |
|---|---|---|---|
task_manager_mongo_user | mongo:latest | 27018 | — |
task_manager_mongo_task | mongo:latest | 27019 | — |
task_manager_user_service | Custom build | — | mongo-user |
task_manager_notification_service | Custom build | — | — |
task_manager_task_service | Custom build | — | mongo-task, user-service, notification-service |
task_manager_api_gateway | Custom build | 5000 | user-service, task-service |
task_manager_admin_frontend | Custom build | 3000 | api-gateway |
task_manager_user_frontend | Custom build | 5173 | api-gateway |