# unamadika/application architecture

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

## Overview

Sahara Travel is represented here by an Express API for account access, trek discovery/management, and bookings. The server entry point mounts the routes and initializes database connectivity; route handlers dispatch to controllers, which perform the domain operations. The Flutter tree contains native platform launchers but no Dart application sources, and the README is empty, so client-to-API wiring and database internals cannot be verified.

Main entry points: [`sahara-server-main/index.js`](https://github.com/unamadika/application/blob/main/sahara-server-main/index.js) (Express server), [`sahara-server-main/src/middleware/authMiddleware.js`](https://github.com/unamadika/application/blob/main/sahara-server-main/src/middleware/authMiddleware.js) (Token protection), [`sahara-server-main/src/routes/authRoutes.js`](https://github.com/unamadika/application/blob/main/sahara-server-main/src/routes/authRoutes.js) (Auth routes), [`sahara-server-main/src/routes/trekRoutes.js`](https://github.com/unamadika/application/blob/main/sahara-server-main/src/routes/trekRoutes.js) (Trek routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API runtime"]
  node_entry["Express server<br/>[index.js]"]
  node_dbconfig["DB connection<br/>[db.js]"]
end

subgraph group_identity["Identity"]
  node_authroutes["Auth routes<br/>[authRoutes.js]"]
  node_authcontroller["Auth operations<br/>[authController.js]"]
  node_authmiddleware["Token protection<br/>[authMiddleware.js]"]
end

subgraph group_travel["Travel operations"]
  node_trekroutes["Trek routes<br/>[trekRoutes.js]"]
  node_trekcontroller["Trek operations<br/>[trekController.js]"]
  node_bookingroutes["Booking routes<br/>[bookingRoutes.js]"]
  node_bookingcontroller["Booking operations"]
end

subgraph group_persistence["Data models"]
  node_users[("User records<br/>[userModel.js]")]
  node_treks[("Trek records<br/>[trekModel.js]")]
  node_bookings[("Booking records<br/>[bookingModel.js]")]
end

node_traveler(("API user"))

node_traveler -->|"sends requests"| node_entry
node_entry -->|"mounts auth"| node_authroutes
node_entry -->|"mounts treks"| node_trekroutes
node_entry -->|"mounts bookings"| node_bookingroutes
node_entry -->|"connects database"| node_dbconfig
node_authroutes -->|"dispatches"| node_authcontroller
node_authroutes -->|"protects profile"| node_authmiddleware
node_authcontroller -->|"reads/writes"| node_users
node_authmiddleware -->|"loads user"| node_users
node_trekroutes -->|"dispatches"| node_trekcontroller
node_trekroutes -->|"protects writes"| node_authmiddleware
node_trekcontroller -->|"reads/writes"| node_treks
node_bookingroutes -->|"dispatches"| node_bookingcontroller
node_bookingroutes -->|"protects requests"| node_authmiddleware
node_bookingcontroller -->|"reads trek"| node_treks
node_bookingcontroller -->|"reads/writes"| node_bookings

click node_entry "https://github.com/unamadika/application/blob/main/sahara-server-main/index.js"
click node_dbconfig "https://github.com/unamadika/application/blob/main/sahara-server-main/src/configs/db.js"
click node_authroutes "https://github.com/unamadika/application/blob/main/sahara-server-main/src/routes/authRoutes.js"
click node_authcontroller "https://github.com/unamadika/application/blob/main/sahara-server-main/src/controllers/authController.js"
click node_authmiddleware "https://github.com/unamadika/application/blob/main/sahara-server-main/src/middleware/authMiddleware.js"
click node_users "https://github.com/unamadika/application/blob/main/sahara-server-main/src/models/userModel.js"
click node_trekroutes "https://github.com/unamadika/application/blob/main/sahara-server-main/src/routes/trekRoutes.js"
click node_trekcontroller "https://github.com/unamadika/application/blob/main/sahara-server-main/src/controllers/trekController.js"
click node_treks "https://github.com/unamadika/application/blob/main/sahara-server-main/src/models/trekModel.js"
click node_bookingroutes "https://github.com/unamadika/application/blob/main/sahara-server-main/src/routes/bookingRoutes.js"
click node_bookingcontroller "https://github.com/unamadika/application/blob/main/sahara-server-main/src/controllers/bookingController.js"
click node_bookings "https://github.com/unamadika/application/blob/main/sahara-server-main/src/models/bookingModel.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_entry,node_dbconfig,node_traveler toneBlue
class node_authroutes,node_authcontroller,node_authmiddleware toneAmber
class node_trekroutes,node_trekcontroller,node_bookingroutes,node_bookingcontroller toneMint
class node_users,node_treks,node_bookings toneRose
```

## Components

### API runtime

- [Express server](https://github.com/unamadika/application/blob/main/sahara-server-main/index.js): `sahara-server-main/index.js`
- [DB connection](https://github.com/unamadika/application/blob/main/sahara-server-main/src/configs/db.js): `sahara-server-main/src/configs/db.js`

### Identity

- [Auth routes](https://github.com/unamadika/application/blob/main/sahara-server-main/src/routes/authRoutes.js): `sahara-server-main/src/routes/authRoutes.js`
- [Auth operations](https://github.com/unamadika/application/blob/main/sahara-server-main/src/controllers/authController.js): `sahara-server-main/src/controllers/authController.js`
- [Token protection](https://github.com/unamadika/application/blob/main/sahara-server-main/src/middleware/authMiddleware.js): `sahara-server-main/src/middleware/authMiddleware.js`

### Travel operations

- [Trek routes](https://github.com/unamadika/application/blob/main/sahara-server-main/src/routes/trekRoutes.js): `sahara-server-main/src/routes/trekRoutes.js`
- [Trek operations](https://github.com/unamadika/application/blob/main/sahara-server-main/src/controllers/trekController.js): `sahara-server-main/src/controllers/trekController.js`
- [Booking routes](https://github.com/unamadika/application/blob/main/sahara-server-main/src/routes/bookingRoutes.js): `sahara-server-main/src/routes/bookingRoutes.js`
- [Booking operations](https://github.com/unamadika/application/blob/main/sahara-server-main/src/controllers/bookingController.js): `sahara-server-main/src/controllers/bookingController.js`

### Data models

- [User records](https://github.com/unamadika/application/blob/main/sahara-server-main/src/models/userModel.js): `sahara-server-main/src/models/userModel.js`
- [Trek records](https://github.com/unamadika/application/blob/main/sahara-server-main/src/models/trekModel.js): `sahara-server-main/src/models/trekModel.js`
- [Booking records](https://github.com/unamadika/application/blob/main/sahara-server-main/src/models/bookingModel.js): `sahara-server-main/src/models/bookingModel.js`

### Other components

- **API user**

## Connections

- API user → Express server: sends requests
- Express server → Auth routes: mounts auth
- Express server → Trek routes: mounts treks
- Express server → Booking routes: mounts bookings
- Express server → DB connection: connects database
- Auth routes → Auth operations: dispatches
- Auth routes → Token protection: protects profile
- Auth operations → User records: reads/writes
- Token protection → User records: loads user
- Trek routes → Trek operations: dispatches
- Trek routes → Token protection: protects writes
- Trek operations → Trek records: reads/writes
- Booking routes → Booking operations: dispatches
- Booking routes → Token protection: protects requests
- Booking operations → Trek records: reads trek
- Booking operations → Booking records: reads/writes
