# azizdlissiesprit/bninfinal architecture

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

- Interactive diagram: https://gitdiagram.com/azizdlissiesprit/bninfinal
- Repository: https://github.com/azizdlissiesprit/bninfinal

## Overview

Bnin is a restaurant and delivery platform whose documented client app consumes the Node.js API in `backend/`. The main server workflow is an HTTP request routed to a domain endpoint, which performs account, restaurant, order, claim, reservation, history, or location work against PostgreSQL and returns serialized JSON. The README also describes role-based user-management and restaurant-browsing experiences, but the Flutter source tree is not included here, so those client screens are not represented as source nodes. Routes are mounted in `app.ts`; unsampled route internals limit detail on their specific calls.

Main entry points: [`backend/src/app.ts`](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/app.ts) (HTTP API), [`backend/src/routes/auth.ts`](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/auth.ts) (Authentication), [`backend/src/routes/reservations.ts`](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/reservations.ts) (Reservations), [`backend/src/services/accounts.ts`](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/accounts.ts) (Account Services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["API Runtime"]
  node_app["HTTP API<br/>[app.ts]"]
end

subgraph group_identity["Identity and Accounts"]
  node_auth["Authentication<br/>[auth.ts]"]
  node_me["My Account<br/>[me.ts]"]
  node_users["User Management<br/>[users.ts]"]
  node_admin["Admin Operations<br/>[admin.ts]"]
end

subgraph group_commerce["Restaurant and Orders"]
  node_restaurants["Restaurants and Dishes<br/>[restaurants.ts]"]
  node_orders["Orders<br/>[orders.ts]"]
  node_claims["Claims and Credits<br/>[claims.ts]"]
end

subgraph group_operations["Delivery and Reservations"]
  node_history["History and Agents<br/>[history.ts]"]
  node_reservations["Reservations<br/>[reservations.ts]"]
  node_geo["Location and Routing<br/>[geo.ts]"]
  node_uploads["File Uploads<br/>[uploads.ts]"]
end

subgraph group_shared["Shared Services"]
  node_accounts["Account Services<br/>[accounts.ts]"]
  node_floorplan["Floor Planning<br/>[floorPlan.ts]"]
  node_routing["Road Routing<br/>[routing.ts]"]
  node_weather["Weather Lookup<br/>[weather.ts]"]
  node_serializers["JSON Serializers<br/>[serializers.ts]"]
end

node_mobile(("Client App"))
node_console["Admin Console<br/>[console.js]"]
node_database[("PostgreSQL")]
node_osrm["OSRM"]
node_openmeteo["Open-Meteo"]

node_mobile -->|"calls API"| node_app
node_console -->|"uses console route"| node_app
node_app -->|"mounts"| node_auth
node_app -->|"mounts"| node_me
node_app -->|"mounts"| node_users
node_app -->|"mounts"| node_admin
node_app -->|"mounts"| node_restaurants
node_app -->|"mounts"| node_orders
node_app -->|"mounts"| node_claims
node_app -->|"mounts"| node_history
node_app -->|"mounts"| node_reservations
node_app -->|"mounts"| node_geo
node_app -->|"mounts"| node_uploads
node_auth -->|"uses"| node_accounts
node_me -->|"uses"| node_accounts
node_users -->|"uses"| node_accounts
node_reservations -->|"uses"| node_floorplan
node_geo -->|"uses"| node_routing
node_routing -->|"requests routes"| node_osrm
node_weather -->|"fetches weather"| node_openmeteo
node_auth -->|"reads and writes"| node_database
node_restaurants -->|"reads and writes"| node_database
node_orders -->|"reads and writes"| node_database
node_reservations -->|"reads and writes"| node_database
node_history -->|"reads"| node_database
node_claims -->|"serializes results"| node_serializers

click node_console "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/public/console/console.js"
click node_app "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/app.ts"
click node_auth "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/auth.ts"
click node_me "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/me.ts"
click node_users "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/users.ts"
click node_admin "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/admin.ts"
click node_restaurants "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/restaurants.ts"
click node_orders "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/orders.ts"
click node_claims "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/claims.ts"
click node_history "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/history.ts"
click node_reservations "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/reservations.ts"
click node_geo "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/geo.ts"
click node_uploads "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/uploads.ts"
click node_accounts "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/accounts.ts"
click node_floorplan "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/floorPlan.ts"
click node_routing "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/routing.ts"
click node_weather "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/weather.ts"
click node_serializers "https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/serializers.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_app,node_mobile toneBlue
class node_auth,node_me,node_users,node_admin,node_database toneAmber
class node_restaurants,node_orders,node_claims toneMint
class node_history,node_reservations,node_geo,node_uploads toneRose
class node_accounts,node_floorplan,node_routing,node_weather,node_serializers,node_osrm,node_openmeteo toneIndigo
class node_console toneTeal
```

## Components

### API Runtime

- [HTTP API](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/app.ts): `backend/src/app.ts`

### Identity and Accounts

- [Authentication](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/auth.ts): `backend/src/routes/auth.ts`
- [My Account](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/me.ts): `backend/src/routes/me.ts`
- [User Management](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/users.ts): `backend/src/routes/users.ts`
- [Admin Operations](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/admin.ts): `backend/src/routes/admin.ts`

### Restaurant and Orders

- [Restaurants and Dishes](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/restaurants.ts): `backend/src/routes/restaurants.ts`
- [Orders](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/orders.ts): `backend/src/routes/orders.ts`
- [Claims and Credits](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/claims.ts): `backend/src/routes/claims.ts`

### Delivery and Reservations

- [History and Agents](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/history.ts): `backend/src/routes/history.ts`
- [Reservations](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/reservations.ts): `backend/src/routes/reservations.ts`
- [Location and Routing](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/geo.ts): `backend/src/routes/geo.ts`
- [File Uploads](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/routes/uploads.ts): `backend/src/routes/uploads.ts`

### Shared Services

- [Account Services](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/accounts.ts): `backend/src/services/accounts.ts`
- [Floor Planning](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/floorPlan.ts): `backend/src/services/floorPlan.ts`
- [Road Routing](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/routing.ts): `backend/src/services/routing.ts`
- [Weather Lookup](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/services/weather.ts): `backend/src/services/weather.ts`
- [JSON Serializers](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/src/serializers.ts): `backend/src/serializers.ts`

### Other components

- **Client App**
- [Admin Console](https://github.com/azizdlissiesprit/bninfinal/blob/main/backend/public/console/console.js): `backend/public/console/console.js`
- **PostgreSQL**
- **OSRM**
- **Open-Meteo**

## Connections

- Client App → HTTP API: calls API
- Admin Console → HTTP API: uses console route (evidence: `backend/src/app.ts`)
- HTTP API → Authentication: mounts (evidence: `backend/src/app.ts`)
- HTTP API → My Account: mounts (evidence: `backend/src/app.ts`)
- HTTP API → User Management: mounts (evidence: `backend/src/app.ts`)
- HTTP API → Admin Operations: mounts (evidence: `backend/src/app.ts`)
- HTTP API → Restaurants and Dishes: mounts (evidence: `backend/src/app.ts`)
- HTTP API → Orders: mounts (evidence: `backend/src/app.ts`)
- HTTP API → Claims and Credits: mounts (evidence: `backend/src/app.ts`)
- HTTP API → History and Agents: mounts (evidence: `backend/src/app.ts`)
- HTTP API → Reservations: mounts (evidence: `backend/src/app.ts`)
- HTTP API → Location and Routing: mounts (evidence: `backend/src/app.ts`)
- HTTP API → File Uploads: mounts (evidence: `backend/src/app.ts`)
- Authentication → Account Services: uses (evidence: `backend/src/routes/auth.ts`)
- My Account → Account Services: uses (evidence: `backend/src/routes/me.ts`)
- User Management → Account Services: uses (evidence: `backend/src/routes/users.ts`)
- Reservations → Floor Planning: uses (evidence: `backend/src/routes/reservations.ts`)
- Location and Routing → Road Routing: uses (evidence: `backend/src/routes/geo.ts`)
- Road Routing → OSRM: requests routes (evidence: `backend/src/services/routing.ts`)
- Weather Lookup → Open-Meteo: fetches weather (evidence: `backend/src/services/weather.ts`)
- Authentication → PostgreSQL: reads and writes (evidence: `backend/src/routes/auth.ts`)
- Restaurants and Dishes → PostgreSQL: reads and writes (evidence: `backend/src/routes/restaurants.ts`)
- Orders → PostgreSQL: reads and writes (evidence: `backend/src/routes/orders.ts`)
- Reservations → PostgreSQL: reads and writes (evidence: `backend/src/routes/reservations.ts`)
- History and Agents → PostgreSQL: reads (evidence: `backend/src/routes/history.ts`)
- Claims and Credits → JSON Serializers: serializes results (evidence: `backend/src/routes/claims.ts`)
