# abdulhanan42/task_managment_app architecture

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

- Interactive diagram: https://gitdiagram.com/abdulhanan42/task_managment_app
- Repository: https://github.com/abdulhanan42/task_managment_app

## Overview

This is a FastAPI task-management API with user registration, login and token authentication, plus authenticated task creation, listing, retrieval, updating and deletion. Requests enter through the user or task routers, which validate DTOs and delegate to controllers; controllers query or mutate SQLAlchemy-backed state. Registration also invokes email sending. The graph preserves the central models, DTOs and configuration layer. Several relationships are supported by excerpts; the mail implementation and its external delivery mechanism were not shown.

Main entry points: [`src/utils/db.py`](https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/db.py) (DB sessions), [`src/tasks/router.py`](https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/router.py) (Task routes), [`src/user/controller.py`](https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/controller.py) (User controller), [`src/user/router.py`](https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/router.py) (User routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API entry"]
  node_app["FastAPI app<br/>[main.py]"]
  node_user_routes["User routes<br/>[router.py]"]
  node_task_routes["Task routes<br/>[router.py]"]
end

subgraph group_users["User access"]
  node_user_controller["User controller<br/>[controller.py]"]
  node_user_dtos["User DTOs<br/>[dtos.py]"]
  node_user_model["User model<br/>[models.py]"]
  node_auth_helper["Token dependency<br/>[helpers.py]"]
  node_email_sender["Email sender<br/>[mail.py]"]
end

subgraph group_tasks["Task management"]
  node_task_controller["Task controller<br/>[controller.py]"]
  node_task_dtos["Task DTOs<br/>[dtos.py]"]
  node_task_model["Task model<br/>[models.py]"]
end

subgraph group_shared["Shared infrastructure"]
  node_db_session["DB sessions<br/>[db.py]"]
  node_settings["Settings<br/>[settings.py]"]
  node_sql_store[("SQL database")]
end

node_client(("API client"))
node_mail_service["Email service"]

node_client -->|"calls user endpoints"| node_user_routes
node_client -->|"calls task endpoints"| node_task_routes
node_app -->|"registers routes"| node_user_routes
node_app -->|"registers routes"| node_task_routes
node_app -->|"creates schema"| node_db_session
node_user_routes -->|"delegates requests"| node_user_controller
node_user_routes -->|"validates payloads"| node_user_dtos
node_user_routes -->|"gets sessions"| node_db_session
node_user_controller -->|"queries users"| node_user_model
node_user_controller -->|"reads and writes"| node_sql_store
node_user_controller -->|"uses token settings"| node_settings
node_user_controller -->|"sends confirmation"| node_email_sender
node_email_sender -.->|"delivers email"| node_mail_service
node_task_routes -->|"delegates requests"| node_task_controller
node_task_routes -->|"validates payloads"| node_task_dtos
node_task_routes -->|"gets sessions"| node_db_session
node_task_routes -->|"requires authentication"| node_auth_helper
node_task_controller -->|"queries and mutates"| node_task_model
node_task_controller -->|"checks ownership"| node_user_model
node_task_controller -->|"reads and writes"| node_sql_store
node_auth_helper -->|"looks up user"| node_user_model
node_auth_helper -->|"queries user"| node_sql_store
node_auth_helper -->|"uses token settings"| node_settings
node_db_session -->|"reads connection config"| node_settings
node_db_session -->|"connects to"| node_sql_store
node_user_model -->|"uses declarative base"| node_db_session
node_task_model -->|"uses declarative base"| node_db_session

click node_app "https://github.com/abdulhanan42/task_managment_app/blob/main/main.py"
click node_user_routes "https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/router.py"
click node_task_routes "https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/router.py"
click node_user_controller "https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/controller.py"
click node_user_dtos "https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/dtos.py"
click node_user_model "https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/models.py"
click node_auth_helper "https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/helpers.py"
click node_email_sender "https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/mail.py"
click node_task_controller "https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/controller.py"
click node_task_dtos "https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/dtos.py"
click node_task_model "https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/models.py"
click node_db_session "https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/db.py"
click node_settings "https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/settings.py"

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_app,node_user_routes,node_task_routes,node_client toneBlue
class node_user_controller,node_user_dtos,node_user_model,node_auth_helper,node_email_sender toneAmber
class node_task_controller,node_task_dtos,node_task_model toneMint
class node_db_session,node_settings,node_sql_store toneRose
class node_mail_service toneIndigo
```

## Components

### API entry

- [FastAPI app](https://github.com/abdulhanan42/task_managment_app/blob/main/main.py): `main.py`
- [User routes](https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/router.py): `src/user/router.py`
- [Task routes](https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/router.py): `src/tasks/router.py`

### User access

- [User controller](https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/controller.py): `src/user/controller.py`
- [User DTOs](https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/dtos.py): `src/user/dtos.py`
- [User model](https://github.com/abdulhanan42/task_managment_app/blob/main/src/user/models.py): `src/user/models.py`
- [Token dependency](https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/helpers.py): `src/utils/helpers.py`
- [Email sender](https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/mail.py): `src/utils/mail.py`

### Task management

- [Task controller](https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/controller.py): `src/tasks/controller.py`
- [Task DTOs](https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/dtos.py): `src/tasks/dtos.py`
- [Task model](https://github.com/abdulhanan42/task_managment_app/blob/main/src/tasks/models.py): `src/tasks/models.py`

### Shared infrastructure

- [DB sessions](https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/db.py): `src/utils/db.py`
- [Settings](https://github.com/abdulhanan42/task_managment_app/blob/main/src/utils/settings.py): `src/utils/settings.py`
- **SQL database**

### Other components

- **API client**
- **Email service**

## Connections

- API client → User routes: calls user endpoints
- API client → Task routes: calls task endpoints
- FastAPI app → User routes: registers routes (evidence: `main.py`)
- FastAPI app → Task routes: registers routes (evidence: `main.py`)
- FastAPI app → DB sessions: creates schema (evidence: `main.py`)
- User routes → User controller: delegates requests (evidence: `src/user/router.py`)
- User routes → User DTOs: validates payloads (evidence: `src/user/router.py`)
- User routes → DB sessions: gets sessions (evidence: `src/user/router.py`)
- User controller → User model: queries users (evidence: `src/user/controller.py`)
- User controller → SQL database: reads and writes (evidence: `src/user/controller.py`)
- User controller → Settings: uses token settings (evidence: `src/user/controller.py`)
- User controller → Email sender: sends confirmation (evidence: `src/user/controller.py`)
- Email sender → Email service: delivers email
- Task routes → Task controller: delegates requests (evidence: `src/tasks/router.py`)
- Task routes → Task DTOs: validates payloads (evidence: `src/tasks/router.py`)
- Task routes → DB sessions: gets sessions (evidence: `src/tasks/router.py`)
- Task routes → Token dependency: requires authentication (evidence: `src/tasks/router.py`)
- Task controller → Task model: queries and mutates (evidence: `src/tasks/controller.py`)
- Task controller → User model: checks ownership (evidence: `src/tasks/controller.py`)
- Task controller → SQL database: reads and writes (evidence: `src/tasks/controller.py`)
- Token dependency → User model: looks up user (evidence: `src/utils/helpers.py`)
- Token dependency → SQL database: queries user (evidence: `src/utils/helpers.py`)
- Token dependency → Settings: uses token settings (evidence: `src/utils/helpers.py`)
- DB sessions → Settings: reads connection config (evidence: `src/utils/db.py`)
- DB sessions → SQL database: connects to (evidence: `src/utils/db.py`)
- User model → DB sessions: uses declarative base (evidence: `src/user/models.py`)
- Task model → DB sessions: uses declarative base (evidence: `src/tasks/models.py`)
