How dharani525/taskflow works
1. System Purpose and Deployment Shape
TaskFlow is a full-stack, role-scoped team task-management system: Members manage their tasks, Managers manage direct-report tasks, and Admins manage organization-wide visibility and user assignments. It comprises a React SPA, Spring Boot REST API, and PostgreSQL persistence.
• docker-compose.yml
• task-backend/Dockerfile
• task-frontend/Dockerfile
2. Application Entry Points
The backend starts as a Java 17 Spring Boot application; HTTP controllers expose authentication, task, and administrative APIs. The frontend is a Vite/React application bootstrapped into the browser and served in containers through Nginx.
• task-backend/src/main/java/com/backend/taskflow/TaskflowApplication.java
• task-frontend/src/main.jsx
• task-frontend/src/App.jsx
• task-frontend/nginx.conf
3. Authentication and Authorization Boundary
Unauthenticated registration/login flows issue JWTs. For protected API requests, the Spring Security filter extracts and validates the JWT, loads user details, and establishes the security context. Security configuration also defines CORS and endpoint access rules. The client persists auth state locally and attaches credentials through its API service; private routing gates protected UI.
• task-backend/src/main/java/com/backend/taskflow/config/SecurityConfig.java
• task-backend/src/main/java/com/backend/taskflow/security/JwtAuthenticationFilter.java
• task-backend/src/main/java/com/backend/taskflow/security/JwtTokenProvider.java
• task-frontend/src/context/AuthProvider.jsx
• task-frontend/src/components/auth/PrivateRoute.jsx
• task-frontend/src/services/api.js
4. Backend API and Domain Services
Controllers form the REST boundary and delegate business behavior to services. AuthService handles user registration/login; TaskService applies role-aware task visibility and mutation authorization; AdminController exposes privileged role and manager assignment operations. DTOs separate API payloads from persistence entities, while centralized exception handling standardizes error responses.
• task-backend/src/main/java/com/backend/taskflow/controller/AuthController.java
• task-backend/src/main/java/com/backend/taskflow/controller/TaskController.java
• task-backend/src/main/java/com/backend/taskflow/controller/AdminController.java
• task-backend/src/main/java/com/backend/taskflow/service/AuthService.java
• task-backend/src/main/java/com/backend/taskflow/service/TaskService.java
• task-backend/src/main/java/com/backend/taskflow/exception/GlobalExceptionHandler.java
5. Persistence and Access-Control Data Model
JPA entities model User and Task. A user has a role and optional self-referential manager relationship; a task belongs to an owner and carries status, priority, and due-date state. Repository access is the persistence boundary to PostgreSQL. Role-scoped service logic derives accessible tasks from owner, direct-report, or global scope.
• task-backend/src/main/java/com/backend/taskflow/entity/User.java
• task-backend/src/main/java/com/backend/taskflow/entity/Task.java
• task-backend/src/main/java/com/backend/taskflow/entity/Role.java
• task-backend/src/main/java/com/backend/taskflow/repository/UserRepository.java
• task-backend/src/main/java/com/backend/taskflow/repository/TaskRepository.java
6. Frontend Task Workflow
Authenticated users enter role-oriented dashboard/panel layouts, which host the Kanban board. The board loads visible tasks from the API, groups them into status columns, and uses drag-and-drop to drive task status updates. Task creation, edit, and detail interactions converge in form/modal components and invoke backend CRUD APIs.
• task-frontend/src/components/layout/Dashboard.jsx
• task-frontend/src/components/layout/AdminPanel.jsx
• task-frontend/src/components/tasks/TaskBoard.jsx
• task-frontend/src/components/tasks/TaskColumn.jsx
• task-frontend/src/components/tasks/TaskForm.jsx
• task-frontend/src/components/tasks/TaskModal.jsx
7. Runtime Integrations
Backend runtime configuration supplies PostgreSQL connection settings, JWT secret, and allowed frontend origins. PostgreSQL may be local or Supabase-hosted. OpenAPI configuration provides Swagger documentation with bearer-token support. GitHub Actions separately validates backend tests and frontend builds.
• task-backend/src/main/resources/application.yaml
• task-backend/src/main/java/com/backend/taskflow/config/OpenApiConfig.java
• .github/workflows/backend-ci.yml
• .github/workflows/frontend-ci.yml
Main entry points: TaskController.java REST controllers · TaskRepository.java JPA repositories · docker-compose.yml Container stack · App.jsx App routes
Components 19
React frontend
- Browser SPA
task-frontend/src/main.jsx - App routes
task-frontend/src/App.jsx - Auth state & API client · Persists credentials and attaches JWTs to API requests.
task-frontend/src/context/AuthProvider.jsx - Private routes
task-frontend/src/components/auth/PrivateRoute.jsx - Role dashboards · Member/manager dashboard and admin panel entry layouts.
task-frontend/src/components/layout/Dashboard.jsx - Kanban task workflow · Loads scoped tasks and drives CRUD and status changes.
task-frontend/src/components/tasks/TaskBoard.jsx
Spring Boot backend
- REST controllers · Authentication, task, and privileged administration endpoints.
task-backend/src/main/java/com/backend/taskflow/controller/TaskController.java - JWT security filter · Validates bearer tokens and establishes the security context.
task-backend/src/main/java/com/backend/taskflow/security/JwtAuthenticationFilter.java - JWT token provider
task-backend/src/main/java/com/backend/taskflow/security/JwtTokenProvider.java - Authentication service · Registers users and authenticates login requests.
task-backend/src/main/java/com/backend/taskflow/service/AuthService.java - Role-scoped task service · Enforces owner, direct-report, and organization task scope.
task-backend/src/main/java/com/backend/taskflow/service/TaskService.java - Exception handler · Standardizes REST error responses.
task-backend/src/main/java/com/backend/taskflow/exception/GlobalExceptionHandler.java - OpenAPI / Swagger · Documents bearer-authenticated API operations.
task-backend/src/main/java/com/backend/taskflow/config/OpenApiConfig.java
Persistence
- JPA repositories · User and task repository boundary.
task-backend/src/main/java/com/backend/taskflow/repository/TaskRepository.java - Users, roles & tasks · Users can report to managers; tasks belong to owners and carry workflow state.
task-backend/src/main/java/com/backend/taskflow/entity/Task.java - PostgreSQL · Local or Supabase-hosted persistence.
Deployment
- Container stack · Deploys the frontend, backend, and database runtime.
docker-compose.yml - Nginx frontend server · Serves the built SPA in the frontend container.
task-frontend/nginx.conf - Spring Boot runtime
task-backend/src/main/java/com/backend/taskflow/TaskflowApplication.java
Connections 23
- Browser SPA → App routes: boots
- App routes → Auth state & API client: uses
- App routes → Private routes: guards
- Private routes → Role dashboards: admits authenticated users
- Role dashboards → Kanban task workflow: hosts
- Kanban task workflow → Auth state & API client: task API calls
- Auth state & API client → REST controllers: JWT-authenticated HTTP
- REST controllers → JWT security filter: protected requests
- JWT security filter → JWT token provider: validates token
- REST controllers → Authentication service: registration / login
- Authentication service → JWT token provider: issues token
- REST controllers → Role-scoped task service: task operations
- REST controllers → Exception handler: maps failures
- Authentication service → JPA repositories: users
- Role-scoped task service → JPA repositories: scoped queries & updates
- JPA repositories → Users, roles & tasks: maps
- JPA repositories → PostgreSQL: JPA persistence
- Spring Boot runtime → REST controllers: hosts
- OpenAPI / Swagger → REST controllers: documents
- Container stack → Nginx frontend server: runs
- Container stack → Spring Boot runtime: runs
- Container stack → PostgreSQL: runs or connects
- Nginx frontend server → Browser SPA: serves SPA assets