# boaz-itguy/betechified-capstone-project-group3b architecture

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

- Interactive diagram: https://gitdiagram.com/boaz-itguy/betechified-capstone-project-group3b
- Repository: https://github.com/boaz-itguy/betechified-capstone-project-group3b

## Overview

This is a REST API for user registration/login and authenticated personal-expense management. Clients send requests through the Express server and route modules; authentication handlers create users or issue tokens, while protected expense routes validate tokens before handlers read or change user-owned expenses. Mongoose models and the database connection provide persistence. The graph reflects the sampled runtime code; the README is empty, so undocumented capabilities and additional wiring are not inferred.

Main entry points: [`server.js`](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/server.js) (Express server), [`controllers/authController.js`](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/controllers/authController.js) (Auth handlers), [`routes/expenseRoutes.js`](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/routes/expenseRoutes.js) (Expense routes), [`routes/authRoutes.js`](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/routes/authRoutes.js) (Auth routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_http["HTTP API"]
  node_server["Express server<br/>[server.js]"]
  node_authroutes["Auth routes<br/>[authRoutes.js]"]
  node_expenseroutes["Expense routes<br/>[expenseRoutes.js]"]
end

subgraph group_identity["Identity"]
  node_authcontroller["Auth handlers<br/>[authController.js]"]
  node_authmiddleware["Token protection<br/>[authMiddleware.js]"]
  node_users["User model<br/>[User.js]"]
  node_bcrypt["Password hashing"]
  node_jwt["JWT library"]
end

subgraph group_expenses["Expense management"]
  node_expensecontroller["Expense handlers"]
  node_expensesmodel["Expense model<br/>[Expense.js]"]
  node_dbconnection["Database connection<br/>[db.js]"]
end

node_client(("API client"))
node_mongodb[("MongoDB")]

node_client -->|"sends requests"| node_server
node_server -->|"returns responses"| node_client
node_server -->|"mounts /auth"| node_authroutes
node_server -->|"mounts /expenses"| node_expenseroutes
node_server -->|"connects database"| node_dbconnection
node_authroutes -->|"dispatches auth"| node_authcontroller
node_expenseroutes -->|"protects routes"| node_authmiddleware
node_expenseroutes -->|"dispatches expenses"| node_expensecontroller
node_authcontroller -->|"reads and creates"| node_users
node_authcontroller -->|"hashes and compares"| node_bcrypt
node_authcontroller -->|"signs tokens"| node_jwt
node_authmiddleware -->|"verifies tokens"| node_jwt
node_expensecontroller -->|"reads and mutates"| node_expensesmodel
node_dbconnection -->|"opens connection"| node_mongodb
node_users -->|"persists users"| node_mongodb
node_expensesmodel -->|"persists expenses"| node_mongodb

click node_server "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/server.js"
click node_authroutes "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/routes/authRoutes.js"
click node_expenseroutes "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/routes/expenseRoutes.js"
click node_authcontroller "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/controllers/authController.js"
click node_authmiddleware "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/middleware/authMiddleware.js"
click node_users "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/models/User.js"
click node_expensecontroller "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/controllers/expenseController.js"
click node_expensesmodel "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/models/Expense.js"
click node_dbconnection "https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/config/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_server,node_authroutes,node_expenseroutes,node_client toneBlue
class node_authcontroller,node_authmiddleware,node_users,node_bcrypt,node_jwt,node_mongodb toneAmber
class node_expensecontroller,node_expensesmodel,node_dbconnection toneMint
```

## Components

### HTTP API

- [Express server](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/server.js): `server.js`
- [Auth routes](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/routes/authRoutes.js): `routes/authRoutes.js`
- [Expense routes](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/routes/expenseRoutes.js): `routes/expenseRoutes.js`

### Identity

- [Auth handlers](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/controllers/authController.js): `controllers/authController.js`
- [Token protection](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/middleware/authMiddleware.js): `middleware/authMiddleware.js`
- [User model](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/models/User.js): `models/User.js`
- **Password hashing**
- **JWT library**

### Expense management

- [Expense handlers](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/controllers/expenseController.js): `controllers/expenseController.js`
- [Expense model](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/models/Expense.js): `models/Expense.js`
- [Database connection](https://github.com/boaz-itguy/betechified-capstone-project-group3b/blob/main/config/db.js): `config/db.js`

### Other components

- **API client**
- **MongoDB**

## Connections

- API client → Express server: sends requests
- Express server → API client: returns responses
- Express server → Auth routes: mounts /auth
- Express server → Expense routes: mounts /expenses
- Express server → Database connection: connects database
- Auth routes → Auth handlers: dispatches auth
- Expense routes → Token protection: protects routes
- Expense routes → Expense handlers: dispatches expenses
- Auth handlers → User model: reads and creates
- Auth handlers → Password hashing: hashes and compares
- Auth handlers → JWT library: signs tokens
- Token protection → JWT library: verifies tokens
- Expense handlers → Expense model: reads and mutates
- Database connection → MongoDB: opens connection
- User model → MongoDB: persists users
- Expense model → MongoDB: persists expenses
