# sathishsegu/multiuserprojectandtaskmgmtsystemapplication architecture

> Architecture diagram of the GitHub repository sathishsegu/multiuserprojectandtaskmgmtsystemapplication, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication
- Repository: https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication

## Overview

This Spring Boot backend manages users, role-governed projects, and project tasks. Clients identify the acting user with an X-USER-ID header; REST controllers delegate to services, which enforce permissions and domain rules and return DTOs. The main workflow spans user/project membership, task creation and assignment, task status changes, and paginated task queries; login is a separate authentication path. Task handling includes optimistic locking, while projects support soft deactivation. MySQL is the documented persistence system. Several service implementations and their wiring were not sampled, so their internal calls are not detailed here.

Main entry points: [`src/main/java/com/flm/mgmtsystem/service/impl/TaskServiceImpl.java`](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/TaskServiceImpl.java) (Task Service), [`src/main/java/com/flm/mgmtsystem/repository/UserRepository.java`](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/repository/UserRepository.java) (User Repository), [`src/main/java/com/flm/mgmtsystem/controller/AuthController.java`](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/AuthController.java) (Authentication API), [`src/main/java/com/flm/mgmtsystem/controller/UserController.java`](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/UserController.java) (User API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_auth_api["Authentication API"]
  node_user_api["User API"]
  node_project_api["Project API"]
  node_task_api["Task API"]
end

subgraph group_domain["Domain Services"]
  node_auth_service["Login Service"]
  node_user_service["User Service"]
  node_project_service["Project Service"]
  node_task_service["Task Service"]
end

subgraph group_data["Persistence Model"]
  node_user_repo["User Repository"]
  node_project_repo["Project Repository"]
  node_task_repo["Task Repository"]
  node_user_entity[("User Records<br/>[User.java]")]
  node_project_entity[("Project Records<br/>[Project.java]")]
  node_task_entity[("Task Records<br/>[Task.java]")]
end

subgraph group_errors["Error Handling"]
  node_errors["Exception Mapper"]
end

node_client(("API Client"))
node_mysql[("MySQL")]

node_client -->|"sends login"| node_auth_api
node_client -->|"sends requests"| node_user_api
node_client -->|"sends requests"| node_project_api
node_client -->|"sends requests"| node_task_api
node_auth_api -->|"calls login"| node_auth_service
node_user_api -->|"calls user actions"| node_user_service
node_project_api -->|"calls project actions"| node_project_service
node_task_api -->|"calls task actions"| node_task_service
node_auth_service -->|"looks up user"| node_user_repo
node_task_service -->|"loads users"| node_user_repo
node_task_service -->|"loads projects"| node_project_repo
node_task_service -->|"queries tasks"| node_task_repo
node_user_repo -->|"persists data"| node_mysql
node_project_repo -->|"persists data"| node_mysql
node_task_repo -->|"persists data"| node_mysql
node_client -->|"receives errors"| node_errors

click node_auth_api "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/AuthController.java"
click node_user_api "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/UserController.java"
click node_project_api "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/ProjectController.java"
click node_task_api "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/TaskController.java"
click node_auth_service "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/AuthServiceImpl.java"
click node_user_service "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/UserServiceImpl.java"
click node_project_service "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/ProjectServiceImpl.java"
click node_task_service "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/TaskServiceImpl.java"
click node_user_repo "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/repository/UserRepository.java"
click node_project_repo "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/repository/ProjectRepository.java"
click node_task_repo "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/repository/TaskRepository.java"
click node_user_entity "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/entity/User.java"
click node_project_entity "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/entity/Project.java"
click node_task_entity "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/entity/Task.java"
click node_errors "https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/exception/GlobalExceptionHandler.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_auth_api,node_user_api,node_project_api,node_task_api,node_client toneBlue
class node_auth_service,node_user_service,node_project_service,node_task_service,node_mysql toneAmber
class node_user_repo,node_project_repo,node_task_repo,node_user_entity,node_project_entity,node_task_entity toneMint
class node_errors toneRose
```

## Components

### REST API

- [Authentication API](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/AuthController.java): `src/main/java/com/flm/mgmtsystem/controller/AuthController.java`
- [User API](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/UserController.java): `src/main/java/com/flm/mgmtsystem/controller/UserController.java`
- [Project API](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/ProjectController.java): `src/main/java/com/flm/mgmtsystem/controller/ProjectController.java`
- [Task API](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/controller/TaskController.java): `src/main/java/com/flm/mgmtsystem/controller/TaskController.java`

### Domain Services

- [Login Service](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/AuthServiceImpl.java): `src/main/java/com/flm/mgmtsystem/service/impl/AuthServiceImpl.java`
- [User Service](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/UserServiceImpl.java): `src/main/java/com/flm/mgmtsystem/service/impl/UserServiceImpl.java`
- [Project Service](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/ProjectServiceImpl.java): `src/main/java/com/flm/mgmtsystem/service/impl/ProjectServiceImpl.java`
- [Task Service](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/service/impl/TaskServiceImpl.java): `src/main/java/com/flm/mgmtsystem/service/impl/TaskServiceImpl.java`

### Persistence Model

- [User Repository](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/repository/UserRepository.java): `src/main/java/com/flm/mgmtsystem/repository/UserRepository.java`
- [Project Repository](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/repository/ProjectRepository.java): `src/main/java/com/flm/mgmtsystem/repository/ProjectRepository.java`
- [Task Repository](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/repository/TaskRepository.java): `src/main/java/com/flm/mgmtsystem/repository/TaskRepository.java`
- [User Records](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/entity/User.java): `src/main/java/com/flm/mgmtsystem/entity/User.java`
- [Project Records](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/entity/Project.java): `src/main/java/com/flm/mgmtsystem/entity/Project.java`
- [Task Records](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/entity/Task.java): `src/main/java/com/flm/mgmtsystem/entity/Task.java`

### Error Handling

- [Exception Mapper](https://github.com/sathishsegu/multiuserprojectandtaskmgmtsystemapplication/blob/main/src/main/java/com/flm/mgmtsystem/exception/GlobalExceptionHandler.java): `src/main/java/com/flm/mgmtsystem/exception/GlobalExceptionHandler.java`

### Other components

- **API Client**
- **MySQL**

## Connections

- API Client → Authentication API: sends login
- API Client → User API: sends requests
- API Client → Project API: sends requests
- API Client → Task API: sends requests
- Authentication API → Login Service: calls login
- User API → User Service: calls user actions
- Project API → Project Service: calls project actions
- Task API → Task Service: calls task actions
- Login Service → User Repository: looks up user
- Task Service → User Repository: loads users
- Task Service → Project Repository: loads projects
- Task Service → Task Repository: queries tasks
- User Repository → MySQL: persists data
- Project Repository → MySQL: persists data
- Task Repository → MySQL: persists data
- API Client → Exception Mapper: receives errors
