# yasubdemissie/express_setup architecture

> Architecture diagram of the GitHub repository yasubdemissie/express_setup, 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/yasubdemissie/express_setup
- Repository: https://github.com/yasubdemissie/express_setup

## Overview

This repository is a small Express API for user registration, login, token refresh, and user lookup/creation. Clients send HTTP requests through the app’s middleware and routes; controllers delegate to services, which use Prisma for user records and authentication helpers for credentials and tokens. The README is empty, and some supporting files (notably database configuration and route aggregation) were not sampled, so the graph omits uncertain wiring and does not assume schema or middleware behavior beyond the available evidence.

Main entry points: [`src/app.ts`](https://github.com/yasubdemissie/express_setup/blob/main/src/app.ts) (Express app), [`src/services/auth.services.ts`](https://github.com/yasubdemissie/express_setup/blob/main/src/services/auth.services.ts) (Auth service), [`src/routes/index.ts`](https://github.com/yasubdemissie/express_setup/blob/main/src/routes/index.ts) (Route index), [`src/routes/auth.routes.ts`](https://github.com/yasubdemissie/express_setup/blob/main/src/routes/auth.routes.ts) (Auth routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["HTTP entry"]
  node_server["HTTP server<br/>[server.ts]"]
  node_app["Express app<br/>[app.ts]"]
  node_routes["Route index<br/>[index.ts]"]
  node_limiter["Rate limiting"]
  node_errors["Error handling"]
  node_notfound["Not-found handling"]
end

subgraph group_auth["Authentication"]
  node_authroutes["Auth routes<br/>[auth.routes.ts]"]
  node_authcontroller["Auth controller"]
  node_authservice["Auth service<br/>[auth.services.ts]"]
  node_validator["Auth schemas<br/>[auth.validator.ts]"]
  node_authmiddleware["Token middleware<br/>[auth.middleware.ts]"]
end

subgraph group_users["User management"]
  node_userroutes["User routes<br/>[user.routes.ts]"]
  node_usercontroller["User controller"]
  node_userservice["User service<br/>[user.services.ts]"]
end

subgraph group_infra["Persistence and utilities"]
  node_database[("User database<br/>[schema.prisma]")]
  node_dbconfig["Prisma connection<br/>[db.ts]"]
  node_jwt["JWT utilities<br/>[jwt.ts]"]
  node_password["Password utilities<br/>[password.ts]"]
end

node_client(("API client"))

node_client -->|"sends HTTP"| node_server
node_server -->|"starts"| node_app
node_app -->|"mounts API"| node_routes
node_app -->|"applies limits"| node_limiter
node_app -->|"handles errors"| node_errors
node_app -->|"handles misses"| node_notfound
node_routes -->|"routes auth"| node_authroutes
node_routes -->|"routes users"| node_userroutes
node_authroutes -->|"limits registration/login"| node_limiter
node_authroutes -->|"dispatches"| node_authcontroller
node_userroutes -->|"dispatches"| node_usercontroller
node_authcontroller -->|"calls"| node_authservice
node_authservice -->|"reads/writes users"| node_database
node_authservice -->|"signs/verifies tokens"| node_jwt
node_authservice -->|"hashes/checks passwords"| node_password
node_authservice -->|"uses Prisma"| node_dbconfig
node_usercontroller -->|"calls"| node_userservice
node_userservice -->|"reads/writes users"| node_database
node_userservice -->|"uses Prisma"| node_dbconfig
node_authmiddleware -->|"verifies access token"| node_jwt

click node_server "https://github.com/yasubdemissie/express_setup/blob/main/src/server.ts"
click node_app "https://github.com/yasubdemissie/express_setup/blob/main/src/app.ts"
click node_routes "https://github.com/yasubdemissie/express_setup/blob/main/src/routes/index.ts"
click node_authroutes "https://github.com/yasubdemissie/express_setup/blob/main/src/routes/auth.routes.ts"
click node_userroutes "https://github.com/yasubdemissie/express_setup/blob/main/src/routes/user.routes.ts"
click node_limiter "https://github.com/yasubdemissie/express_setup/blob/main/src/middleware/ratelimit.middleware.ts"
click node_authcontroller "https://github.com/yasubdemissie/express_setup/blob/main/src/controllers/auth.controllers.ts"
click node_authservice "https://github.com/yasubdemissie/express_setup/blob/main/src/services/auth.services.ts"
click node_validator "https://github.com/yasubdemissie/express_setup/blob/main/src/validator/auth.validator.ts"
click node_authmiddleware "https://github.com/yasubdemissie/express_setup/blob/main/src/middleware/auth.middleware.ts"
click node_usercontroller "https://github.com/yasubdemissie/express_setup/blob/main/src/controllers/user.controllers.ts"
click node_userservice "https://github.com/yasubdemissie/express_setup/blob/main/src/services/user.services.ts"
click node_database "https://github.com/yasubdemissie/express_setup/blob/main/prisma/schema.prisma"
click node_dbconfig "https://github.com/yasubdemissie/express_setup/blob/main/src/config/db.ts"
click node_jwt "https://github.com/yasubdemissie/express_setup/blob/main/src/utils/jwt.ts"
click node_password "https://github.com/yasubdemissie/express_setup/blob/main/src/utils/password.ts"
click node_errors "https://github.com/yasubdemissie/express_setup/blob/main/src/middleware/error.middleware.ts"
click node_notfound "https://github.com/yasubdemissie/express_setup/blob/main/src/middleware/notFound.middleware.ts"

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_server,node_app,node_routes,node_limiter,node_errors,node_notfound,node_client toneBlue
class node_authroutes,node_authcontroller,node_authservice,node_validator,node_authmiddleware toneAmber
class node_userroutes,node_usercontroller,node_userservice toneMint
class node_database,node_dbconfig,node_jwt,node_password toneRose
```

## Components

### HTTP entry

- [HTTP server](https://github.com/yasubdemissie/express_setup/blob/main/src/server.ts): `src/server.ts`
- [Express app](https://github.com/yasubdemissie/express_setup/blob/main/src/app.ts): `src/app.ts`
- [Route index](https://github.com/yasubdemissie/express_setup/blob/main/src/routes/index.ts): `src/routes/index.ts`
- [Rate limiting](https://github.com/yasubdemissie/express_setup/blob/main/src/middleware/ratelimit.middleware.ts): `src/middleware/ratelimit.middleware.ts`
- [Error handling](https://github.com/yasubdemissie/express_setup/blob/main/src/middleware/error.middleware.ts): `src/middleware/error.middleware.ts`
- [Not-found handling](https://github.com/yasubdemissie/express_setup/blob/main/src/middleware/notFound.middleware.ts): `src/middleware/notFound.middleware.ts`

### Authentication

- [Auth routes](https://github.com/yasubdemissie/express_setup/blob/main/src/routes/auth.routes.ts): `src/routes/auth.routes.ts`
- [Auth controller](https://github.com/yasubdemissie/express_setup/blob/main/src/controllers/auth.controllers.ts): `src/controllers/auth.controllers.ts`
- [Auth service](https://github.com/yasubdemissie/express_setup/blob/main/src/services/auth.services.ts): `src/services/auth.services.ts`
- [Auth schemas](https://github.com/yasubdemissie/express_setup/blob/main/src/validator/auth.validator.ts): `src/validator/auth.validator.ts`
- [Token middleware](https://github.com/yasubdemissie/express_setup/blob/main/src/middleware/auth.middleware.ts): `src/middleware/auth.middleware.ts`

### User management

- [User routes](https://github.com/yasubdemissie/express_setup/blob/main/src/routes/user.routes.ts): `src/routes/user.routes.ts`
- [User controller](https://github.com/yasubdemissie/express_setup/blob/main/src/controllers/user.controllers.ts): `src/controllers/user.controllers.ts`
- [User service](https://github.com/yasubdemissie/express_setup/blob/main/src/services/user.services.ts): `src/services/user.services.ts`

### Persistence and utilities

- [User database](https://github.com/yasubdemissie/express_setup/blob/main/prisma/schema.prisma): `prisma/schema.prisma`
- [Prisma connection](https://github.com/yasubdemissie/express_setup/blob/main/src/config/db.ts): `src/config/db.ts`
- [JWT utilities](https://github.com/yasubdemissie/express_setup/blob/main/src/utils/jwt.ts): `src/utils/jwt.ts`
- [Password utilities](https://github.com/yasubdemissie/express_setup/blob/main/src/utils/password.ts): `src/utils/password.ts`

### Other components

- **API client**

## Connections

- API client → HTTP server: sends HTTP
- HTTP server → Express app: starts
- Express app → Route index: mounts API
- Express app → Rate limiting: applies limits
- Express app → Error handling: handles errors
- Express app → Not-found handling: handles misses
- Route index → Auth routes: routes auth
- Route index → User routes: routes users
- Auth routes → Rate limiting: limits registration/login
- Auth routes → Auth controller: dispatches
- User routes → User controller: dispatches
- Auth controller → Auth service: calls
- Auth service → User database: reads/writes users
- Auth service → JWT utilities: signs/verifies tokens
- Auth service → Password utilities: hashes/checks passwords
- Auth service → Prisma connection: uses Prisma
- User controller → User service: calls
- User service → User database: reads/writes users
- User service → Prisma connection: uses Prisma
- Token middleware → JWT utilities: verifies access token
