# kush-gupta-04/authapp architecture

> Architecture diagram of the GitHub repository kush-gupta-04/authapp, 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/kush-gupta-04/authapp
- Repository: https://github.com/kush-gupta-04/authapp

## Overview

AuthApp exposes signup, login, and protected test/student/admin endpoints. Signup checks and creates users with bcrypt-hashed passwords; login checks credentials and constructs a JWT, but the sampled controller has its successful response/cookie code commented out. Protected routes validate JWTs and enforce roles. README documents secure cookie authentication, while the sampled code shows cookie parsing and token reading but no active login cookie issuance. The route wiring and database setup are visible; no separate domain handlers are present for other capabilities.

Main entry points: [`routes/user.js`](https://github.com/kush-gupta-04/authapp/blob/main/routes/user.js) (User routes), [`controllers/Auth.js`](https://github.com/kush-gupta-04/authapp/blob/main/controllers/Auth.js) (Auth controller), [`index.js`](https://github.com/kush-gupta-04/authapp/blob/main/index.js) (Express app), [`middlewares/auth.js`](https://github.com/kush-gupta-04/authapp/blob/main/middlewares/auth.js) (JWT authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API runtime"]
  node_server["Express app<br/>[index.js]"]
  node_user_routes["User routes<br/>[user.js]"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Auth controller<br/>[Auth.js]"]
  node_auth_middleware["JWT authentication<br/>[auth.js]"]
  node_role_checks["Role checks<br/>[auth.js]"]
  node_bcrypt["Password hashing<br/>[Auth.js]"]
  node_jwt["JWT tokens<br/>[Auth.js]"]
end

subgraph group_persistence["Persistence"]
  node_user_model["User model<br/>[User.js]"]
  node_mongo[("MongoDB")]
  node_db_config["Database connection<br/>[database.js]"]
end

node_client(("API client"))

node_client -->|"sends requests"| node_server
node_server -->|"mounts routes"| node_user_routes
node_user_routes -->|"dispatches signup/login"| node_auth_controller
node_user_routes -->|"dispatches protected requests"| node_auth_middleware
node_user_routes -->|"dispatches role checks"| node_role_checks
node_auth_controller -->|"queries/creates users"| node_user_model
node_auth_controller -->|"hashes/verifies passwords"| node_bcrypt
node_auth_controller -->|"signs token"| node_jwt
node_auth_middleware -->|"verifies token"| node_jwt
node_role_checks -->|"continues authorized request"| node_user_routes
node_server -->|"connects database"| node_db_config
node_db_config -->|"opens connection"| node_mongo
node_user_model -->|"persists users"| node_mongo

click node_server "https://github.com/kush-gupta-04/authapp/blob/main/index.js"
click node_user_routes "https://github.com/kush-gupta-04/authapp/blob/main/routes/user.js"
click node_auth_controller "https://github.com/kush-gupta-04/authapp/blob/main/controllers/Auth.js"
click node_auth_middleware "https://github.com/kush-gupta-04/authapp/blob/main/middlewares/auth.js"
click node_role_checks "https://github.com/kush-gupta-04/authapp/blob/main/middlewares/auth.js"
click node_bcrypt "https://github.com/kush-gupta-04/authapp/blob/main/controllers/Auth.js"
click node_jwt "https://github.com/kush-gupta-04/authapp/blob/main/controllers/Auth.js"
click node_user_model "https://github.com/kush-gupta-04/authapp/blob/main/models/User.js"
click node_db_config "https://github.com/kush-gupta-04/authapp/blob/main/config/database.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_server,node_user_routes,node_client toneBlue
class node_auth_controller,node_auth_middleware,node_role_checks,node_bcrypt,node_jwt toneAmber
class node_user_model,node_mongo,node_db_config toneMint
```

## Components

### API runtime

- [Express app](https://github.com/kush-gupta-04/authapp/blob/main/index.js): `index.js`
- [User routes](https://github.com/kush-gupta-04/authapp/blob/main/routes/user.js): `routes/user.js`

### Identity and access

- [Auth controller](https://github.com/kush-gupta-04/authapp/blob/main/controllers/Auth.js): `controllers/Auth.js`
- [JWT authentication](https://github.com/kush-gupta-04/authapp/blob/main/middlewares/auth.js): `middlewares/auth.js`
- [Role checks](https://github.com/kush-gupta-04/authapp/blob/main/middlewares/auth.js): `middlewares/auth.js`
- [Password hashing](https://github.com/kush-gupta-04/authapp/blob/main/controllers/Auth.js): `controllers/Auth.js`
- [JWT tokens](https://github.com/kush-gupta-04/authapp/blob/main/controllers/Auth.js): `controllers/Auth.js`

### Persistence

- [User model](https://github.com/kush-gupta-04/authapp/blob/main/models/User.js): `models/User.js`
- **MongoDB**
- [Database connection](https://github.com/kush-gupta-04/authapp/blob/main/config/database.js): `config/database.js`

### Other components

- **API client**

## Connections

- API client → Express app: sends requests
- Express app → User routes: mounts routes
- User routes → Auth controller: dispatches signup/login
- User routes → JWT authentication: dispatches protected requests
- User routes → Role checks: dispatches role checks
- Auth controller → User model: queries/creates users
- Auth controller → Password hashing: hashes/verifies passwords
- Auth controller → JWT tokens: signs token
- JWT authentication → JWT tokens: verifies token
- Role checks → User routes: continues authorized request
- Express app → Database connection: connects database
- Database connection → MongoDB: opens connection
- User model → MongoDB: persists users
