# wacxv/tasklist-app architecture

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

- Interactive diagram: https://gitdiagram.com/wacxv/tasklist-app
- Repository: https://github.com/wacxv/tasklist-app

## Overview

TaskList is a React/.NET task-management application. Users register or sign in, then use a protected workspace to manage recurring tasks, images, and profile settings; the API enforces ownership and persists application data in PostgreSQL. The task and user controllers, database context, and key frontend flows are sampled. Other README capabilities are represented at the enclosing module level where their implementation was not sampled.

Main entry points: [`backend/Controllers/UsersController.cs`](https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/UsersController.cs) (User endpoints), [`backend/Controllers/TasksController.cs`](https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/TasksController.cs) (Task endpoints), [`frontend/src/api/axios.js`](https://github.com/wacxv/tasklist-app/blob/main/frontend/src/api/axios.js) (API client), [`frontend/src/App.jsx`](https://github.com/wacxv/tasklist-app/blob/main/frontend/src/App.jsx) (React entry and routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["React entry and routes<br/>[App.jsx]"]
  node_protected["Protected route<br/>[ProtectedRoute.jsx]"]
  node_login["Login<br/>[Login.jsx]"]
  node_register["Registration<br/>[Register.jsx]"]
  node_workspace["Task workspace<br/>[Tasks.jsx]"]
  node_http["API client<br/>[axios.js]"]
end

subgraph group_api["API and identity"]
  node_program["API host<br/>[Program.cs]"]
  node_users["User endpoints<br/>[UsersController.cs]"]
  node_tasks["Task endpoints<br/>[TasksController.cs]"]
  node_jwt["JWT service<br/>[JwtService.cs]"]
  node_password["Password validation"]
end

subgraph group_domain["Task and profile domain"]
  node_recurrence["Recurrence resets<br/>[TasksController.cs]"]
  node_taskimages["Task images<br/>[TasksController.cs]"]
  node_profile["Profile settings and images<br/>[UsersController.cs]"]
  node_models["User and task models"]
end

subgraph group_persistence["Persistence"]
  node_context["EF data context"]
  node_postgres[("PostgreSQL")]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"routes"| node_login
node_app -->|"routes"| node_register
node_app -->|"guards"| node_protected
node_protected -->|"renders"| node_workspace
node_login -->|"submits credentials"| node_http
node_register -->|"submits registration"| node_http
node_workspace -->|"requests data"| node_http
node_http -->|"sends requests"| node_users
node_http -->|"sends requests"| node_tasks
node_program -->|"maps controllers"| node_users
node_program -->|"maps controllers"| node_tasks
node_users -->|"reads and writes"| node_context
node_tasks -->|"reads and writes"| node_context
node_users -->|"generates tokens"| node_jwt
node_jwt -->|"returns token"| node_users
node_users -->|"validates password"| node_password
node_tasks -->|"resets elapsed tasks"| node_recurrence
node_tasks -->|"handles image actions"| node_taskimages
node_users -->|"handles profile actions"| node_profile
node_context -->|"maps entities"| node_models
node_context -->|"persists data"| node_postgres

click node_app "https://github.com/wacxv/tasklist-app/blob/main/frontend/src/App.jsx"
click node_protected "https://github.com/wacxv/tasklist-app/blob/main/frontend/src/components/ProtectedRoute.jsx"
click node_login "https://github.com/wacxv/tasklist-app/blob/main/frontend/src/pages/login/Login.jsx"
click node_register "https://github.com/wacxv/tasklist-app/blob/main/frontend/src/pages/register/Register.jsx"
click node_workspace "https://github.com/wacxv/tasklist-app/blob/main/frontend/src/pages/tasks/Tasks.jsx"
click node_http "https://github.com/wacxv/tasklist-app/blob/main/frontend/src/api/axios.js"
click node_program "https://github.com/wacxv/tasklist-app/blob/main/backend/Program.cs"
click node_users "https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/UsersController.cs"
click node_tasks "https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/TasksController.cs"
click node_jwt "https://github.com/wacxv/tasklist-app/blob/main/backend/Services/JwtService.cs"
click node_password "https://github.com/wacxv/tasklist-app/blob/main/backend/Services/PasswordValidator.cs"
click node_recurrence "https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/TasksController.cs"
click node_taskimages "https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/TasksController.cs"
click node_profile "https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/UsersController.cs"
click node_models "https://github.com/wacxv/tasklist-app/tree/main/backend/Models"
click node_context "https://github.com/wacxv/tasklist-app/blob/main/backend/Data/ApplicationDbContext.cs"

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_protected,node_login,node_register,node_workspace,node_http,node_user toneBlue
class node_program,node_users,node_tasks,node_jwt,node_password toneAmber
class node_recurrence,node_taskimages,node_profile,node_models toneMint
class node_context,node_postgres toneRose
```

## Components

### Web application

- [React entry and routes](https://github.com/wacxv/tasklist-app/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Protected route](https://github.com/wacxv/tasklist-app/blob/main/frontend/src/components/ProtectedRoute.jsx): `frontend/src/components/ProtectedRoute.jsx`
- [Login](https://github.com/wacxv/tasklist-app/blob/main/frontend/src/pages/login/Login.jsx): `frontend/src/pages/login/Login.jsx`
- [Registration](https://github.com/wacxv/tasklist-app/blob/main/frontend/src/pages/register/Register.jsx): `frontend/src/pages/register/Register.jsx`
- [Task workspace](https://github.com/wacxv/tasklist-app/blob/main/frontend/src/pages/tasks/Tasks.jsx): `frontend/src/pages/tasks/Tasks.jsx`
- [API client](https://github.com/wacxv/tasklist-app/blob/main/frontend/src/api/axios.js): `frontend/src/api/axios.js`

### API and identity

- [API host](https://github.com/wacxv/tasklist-app/blob/main/backend/Program.cs): `backend/Program.cs`
- [User endpoints](https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/UsersController.cs): `backend/Controllers/UsersController.cs`
- [Task endpoints](https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/TasksController.cs): `backend/Controllers/TasksController.cs`
- [JWT service](https://github.com/wacxv/tasklist-app/blob/main/backend/Services/JwtService.cs): `backend/Services/JwtService.cs`
- [Password validation](https://github.com/wacxv/tasklist-app/blob/main/backend/Services/PasswordValidator.cs): `backend/Services/PasswordValidator.cs`

### Task and profile domain

- [Recurrence resets](https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/TasksController.cs): `backend/Controllers/TasksController.cs`
- [Task images](https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/TasksController.cs): `backend/Controllers/TasksController.cs`
- [Profile settings and images](https://github.com/wacxv/tasklist-app/blob/main/backend/Controllers/UsersController.cs): `backend/Controllers/UsersController.cs`
- [User and task models](https://github.com/wacxv/tasklist-app/tree/main/backend/Models): `backend/Models`

### Persistence

- [EF data context](https://github.com/wacxv/tasklist-app/blob/main/backend/Data/ApplicationDbContext.cs): `backend/Data/ApplicationDbContext.cs`
- **PostgreSQL**

### Other components

- **User**

## Connections

- User → React entry and routes: uses
- React entry and routes → Login: routes
- React entry and routes → Registration: routes
- React entry and routes → Protected route: guards
- Protected route → Task workspace: renders
- Login → API client: submits credentials
- Registration → API client: submits registration
- Task workspace → API client: requests data
- API client → User endpoints: sends requests
- API client → Task endpoints: sends requests
- API host → User endpoints: maps controllers
- API host → Task endpoints: maps controllers
- User endpoints → EF data context: reads and writes
- Task endpoints → EF data context: reads and writes
- User endpoints → JWT service: generates tokens
- JWT service → User endpoints: returns token
- User endpoints → Password validation: validates password
- Task endpoints → Recurrence resets: resets elapsed tasks
- Task endpoints → Task images: handles image actions
- User endpoints → Profile settings and images: handles profile actions
- EF data context → User and task models: maps entities
- EF data context → PostgreSQL: persists data
