# andypedozz/da_repository architecture

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

- Interactive diagram: https://gitdiagram.com/andypedozz/da_repository
- Repository: https://github.com/andypedozz/da_repository

## Overview

This is an Express project/task management application with user administration and cookie-based authentication. The main workflow is an HTTP request entering the app, passing route-level authentication/authorization where configured, reaching a controller and service, and accessing domain models backed by the database. The app also serves login and authenticated home pages. Several model, route, and database implementations were not sampled, so uncertain internal calls are omitted.

Main entry points: [`app.js`](https://github.com/andypedozz/da_repository/blob/master/app.js) (Express app), [`src/lib/auth.js`](https://github.com/andypedozz/da_repository/blob/master/src/lib/auth.js) (Auth middleware and tokens), [`src/routes/UserRoutes.js`](https://github.com/andypedozz/da_repository/blob/master/src/routes/UserRoutes.js) (User routes), [`src/routes/ProjectRoutes.js`](https://github.com/andypedozz/da_repository/blob/master/src/routes/ProjectRoutes.js) (Project routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["HTTP and UI"]
  node_app["Express app<br/>[app.js]"]
  node_loginui["Login page<br/>[login.html]"]
  node_homeui["Home page<br/>[index.html]"]
end

subgraph group_security["Authentication and access"]
  node_authroutes["Auth routes<br/>[AuthRoutes.js]"]
  node_authcontroller["Auth controller<br/>[AuthController.js]"]
  node_authservice["Auth service<br/>[AuthService.js]"]
  node_authlib["Auth middleware and tokens<br/>[auth.js]"]
  node_authorization["Role and ownership checks<br/>[authorization.js]"]
end

subgraph group_domain["Domain operations"]
  node_userroutes["User routes<br/>[UserRoutes.js]"]
  node_usercontroller["User controller<br/>[UserController.js]"]
  node_userservice["User service<br/>[UserService.js]"]
  node_projectroutes["Project routes<br/>[ProjectRoutes.js]"]
  node_projectcontroller["Project controller"]
  node_projectservice["Project service<br/>[ProjectService.js]"]
  node_taskroutes["Task routes<br/>[TaskRoutes.js]"]
  node_taskcontroller["Task controller<br/>[TaskController.js]"]
  node_taskservice["Task service<br/>[TaskService.js]"]
end

subgraph group_data["Persistence"]
  node_usermodel["User model<br/>[User.js]"]
  node_projectmodel["Project model<br/>[Project.js]"]
  node_taskmodel["Task model<br/>[Task.js]"]
  node_database[("Database client<br/>[db.js]")]
end

node_user(("User"))

node_user -->|"sends requests"| node_app
node_app -->|"mounts /auth"| node_authroutes
node_app -->|"mounts /users"| node_userroutes
node_app -->|"mounts /projects"| node_projectroutes
node_app -->|"mounts /tasks"| node_taskroutes
node_app -->|"initializes"| node_database
node_app -->|"serves /login"| node_loginui
node_app -->|"guards home"| node_authlib
node_app -->|"serves home"| node_homeui
node_authroutes -->|"dispatches"| node_authcontroller
node_authcontroller -->|"calls"| node_authservice
node_authcontroller -->|"sets or clears cookie"| node_authlib
node_authservice -->|"looks up or creates"| node_usermodel
node_authservice -->|"hashes and signs"| node_authlib
node_userroutes -->|"authenticates"| node_authlib
node_userroutes -->|"checks admin role"| node_authorization
node_userroutes -->|"dispatches"| node_usercontroller
node_usercontroller -->|"calls CRUD"| node_usermodel
node_projectroutes -->|"authenticates"| node_authlib
node_projectroutes -->|"checks access"| node_authorization
node_projectroutes -->|"dispatches"| node_projectcontroller
node_projectcontroller -->|"calls"| node_projectservice
node_projectservice -->|"calls CRUD"| node_projectmodel
node_taskroutes -->|"authenticates"| node_authlib
node_taskroutes -->|"checks task access"| node_authorization
node_taskroutes -->|"dispatches"| node_taskcontroller
node_taskcontroller -->|"calls"| node_taskservice
node_taskservice -->|"calls CRUD"| node_taskmodel

click node_app "https://github.com/andypedozz/da_repository/blob/master/app.js"
click node_loginui "https://github.com/andypedozz/da_repository/blob/master/login.html"
click node_homeui "https://github.com/andypedozz/da_repository/blob/master/index.html"
click node_authroutes "https://github.com/andypedozz/da_repository/blob/master/src/routes/AuthRoutes.js"
click node_authcontroller "https://github.com/andypedozz/da_repository/blob/master/src/controllers/AuthController.js"
click node_authservice "https://github.com/andypedozz/da_repository/blob/master/src/services/AuthService.js"
click node_authlib "https://github.com/andypedozz/da_repository/blob/master/src/lib/auth.js"
click node_authorization "https://github.com/andypedozz/da_repository/blob/master/src/lib/authorization.js"
click node_userroutes "https://github.com/andypedozz/da_repository/blob/master/src/routes/UserRoutes.js"
click node_usercontroller "https://github.com/andypedozz/da_repository/blob/master/src/controllers/UserController.js"
click node_userservice "https://github.com/andypedozz/da_repository/blob/master/src/services/UserService.js"
click node_projectroutes "https://github.com/andypedozz/da_repository/blob/master/src/routes/ProjectRoutes.js"
click node_projectcontroller "https://github.com/andypedozz/da_repository/blob/master/src/controllers/ProjectController.js"
click node_projectservice "https://github.com/andypedozz/da_repository/blob/master/src/services/ProjectService.js"
click node_taskroutes "https://github.com/andypedozz/da_repository/blob/master/src/routes/TaskRoutes.js"
click node_taskcontroller "https://github.com/andypedozz/da_repository/blob/master/src/controllers/TaskController.js"
click node_taskservice "https://github.com/andypedozz/da_repository/blob/master/src/services/TaskService.js"
click node_usermodel "https://github.com/andypedozz/da_repository/blob/master/src/models/User.js"
click node_projectmodel "https://github.com/andypedozz/da_repository/blob/master/src/models/Project.js"
click node_taskmodel "https://github.com/andypedozz/da_repository/blob/master/src/models/Task.js"
click node_database "https://github.com/andypedozz/da_repository/blob/master/src/lib/db.js"

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_loginui,node_homeui,node_user toneBlue
class node_authroutes,node_authcontroller,node_authservice,node_authlib,node_authorization toneAmber
class node_userroutes,node_usercontroller,node_userservice,node_projectroutes,node_projectcontroller,node_projectservice,node_taskroutes,node_taskcontroller,node_taskservice toneMint
class node_usermodel,node_projectmodel,node_taskmodel,node_database toneRose
```

## Components

### HTTP and UI

- [Express app](https://github.com/andypedozz/da_repository/blob/master/app.js): `app.js`
- [Login page](https://github.com/andypedozz/da_repository/blob/master/login.html): `login.html`
- [Home page](https://github.com/andypedozz/da_repository/blob/master/index.html): `index.html`

### Authentication and access

- [Auth routes](https://github.com/andypedozz/da_repository/blob/master/src/routes/AuthRoutes.js): `src/routes/AuthRoutes.js`
- [Auth controller](https://github.com/andypedozz/da_repository/blob/master/src/controllers/AuthController.js): `src/controllers/AuthController.js`
- [Auth service](https://github.com/andypedozz/da_repository/blob/master/src/services/AuthService.js): `src/services/AuthService.js`
- [Auth middleware and tokens](https://github.com/andypedozz/da_repository/blob/master/src/lib/auth.js): `src/lib/auth.js`
- [Role and ownership checks](https://github.com/andypedozz/da_repository/blob/master/src/lib/authorization.js): `src/lib/authorization.js`

### Domain operations

- [User routes](https://github.com/andypedozz/da_repository/blob/master/src/routes/UserRoutes.js): `src/routes/UserRoutes.js`
- [User controller](https://github.com/andypedozz/da_repository/blob/master/src/controllers/UserController.js): `src/controllers/UserController.js`
- [User service](https://github.com/andypedozz/da_repository/blob/master/src/services/UserService.js): `src/services/UserService.js`
- [Project routes](https://github.com/andypedozz/da_repository/blob/master/src/routes/ProjectRoutes.js): `src/routes/ProjectRoutes.js`
- [Project controller](https://github.com/andypedozz/da_repository/blob/master/src/controllers/ProjectController.js): `src/controllers/ProjectController.js`
- [Project service](https://github.com/andypedozz/da_repository/blob/master/src/services/ProjectService.js): `src/services/ProjectService.js`
- [Task routes](https://github.com/andypedozz/da_repository/blob/master/src/routes/TaskRoutes.js): `src/routes/TaskRoutes.js`
- [Task controller](https://github.com/andypedozz/da_repository/blob/master/src/controllers/TaskController.js): `src/controllers/TaskController.js`
- [Task service](https://github.com/andypedozz/da_repository/blob/master/src/services/TaskService.js): `src/services/TaskService.js`

### Persistence

- [User model](https://github.com/andypedozz/da_repository/blob/master/src/models/User.js): `src/models/User.js`
- [Project model](https://github.com/andypedozz/da_repository/blob/master/src/models/Project.js): `src/models/Project.js`
- [Task model](https://github.com/andypedozz/da_repository/blob/master/src/models/Task.js): `src/models/Task.js`
- [Database client](https://github.com/andypedozz/da_repository/blob/master/src/lib/db.js): `src/lib/db.js`

### Other components

- **User**

## Connections

- User → Express app: sends requests
- Express app → Auth routes: mounts /auth
- Express app → User routes: mounts /users
- Express app → Project routes: mounts /projects
- Express app → Task routes: mounts /tasks
- Express app → Database client: initializes
- Express app → Login page: serves /login
- Express app → Auth middleware and tokens: guards home
- Express app → Home page: serves home
- Auth routes → Auth controller: dispatches
- Auth controller → Auth service: calls
- Auth controller → Auth middleware and tokens: sets or clears cookie
- Auth service → User model: looks up or creates
- Auth service → Auth middleware and tokens: hashes and signs
- User routes → Auth middleware and tokens: authenticates
- User routes → Role and ownership checks: checks admin role
- User routes → User controller: dispatches
- User controller → User model: calls CRUD
- Project routes → Auth middleware and tokens: authenticates
- Project routes → Role and ownership checks: checks access
- Project routes → Project controller: dispatches
- Project controller → Project service: calls
- Project service → Project model: calls CRUD
- Task routes → Auth middleware and tokens: authenticates
- Task routes → Role and ownership checks: checks task access
- Task routes → Task controller: dispatches
- Task controller → Task service: calls
- Task service → Task model: calls CRUD
