# sriniket-d/smart-ev-charging-reservation architecture

> Architecture diagram of the GitHub repository sriniket-d/smart-ev-charging-reservation, 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/sriniket-d/smart-ev-charging-reservation
- Repository: https://github.com/sriniket-d/smart-ev-charging-reservation

## Overview

Smart EV Charging Station Reservation is a Next.js application for customer vehicle and charging-reservation workflows, with administrator station management and activity auditing. The main path is account authentication, loading owned EVs and available charging options, creating or cancelling reservations, and recording selected events. MySQL owns relational booking and account data; MongoDB stores activity documents. The README documents additional payment, locking, validation, and admin capabilities. Some UI-to-route wiring and unsampled routes are not shown, so those links are omitted or marked unverified.

Main entry points: [`app/page.tsx`](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/page.tsx) (Main screen), [`lib/db.ts`](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/db.ts) (MySQL access), [`lib/server-auth.ts`](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/server-auth.ts) (Account authorization), [`app/api/reservations/route.ts`](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/reservations/route.ts) (Reservations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Web experience"]
  node_home["Main screen<br/>[page.tsx]"]
  node_login_ui["Login screen<br/>[page.tsx]"]
  node_reservations_ui["Reservations screen<br/>[page.tsx]"]
end

subgraph group_workflows["API workflows"]
  node_vehicle_api["EV management<br/>[route.ts]"]
  node_options_api["Booking options<br/>[route.ts]"]
  node_reservation_api["Reservations<br/>[route.ts]"]
  node_station_api["Station listings<br/>[route.ts]"]
  node_admin_stations["Station administration<br/>[route.ts]"]
  node_activity_api["Activity retrieval<br/>[route.ts]"]
end

subgraph group_identity["Identity"]
  node_auth_routes["Auth routes<br/>[route.ts]"]
  node_registration["Registration<br/>[route.ts]"]
  node_session_route["Session check<br/>[route.ts]"]
  node_logout["Sign out<br/>[route.ts]"]
  node_session_tokens["Session tokens<br/>[auth.ts]"]
  node_auth_guard["Account authorization<br/>[server-auth.ts]"]
end

subgraph group_persistence["Data stores"]
  node_mysql_pool["MySQL access<br/>[db.ts]"]
  node_mysql_store[("Relational database<br/>[schema.sql]")]
  node_mongo_access["MongoDB access<br/>[mongodb.ts]"]
  node_mongo_store[("Activity documents<br/>[mongodb.ts]")]
end

node_customer(("Customer"))
node_administrator(("Administrator"))

node_customer -->|"signs in"| node_login_ui
node_customer -->|"uses"| node_home
node_administrator -.->|"uses"| node_home
node_login_ui -.->|"submits credentials"| node_auth_routes
node_home -.->|"manages EVs"| node_vehicle_api
node_home -.->|"loads options"| node_options_api
node_home -.->|"books or cancels"| node_reservation_api
node_home -.->|"views stations"| node_station_api
node_home -.->|"manages stations"| node_admin_stations
node_home -.->|"views activity"| node_activity_api
node_reservations_ui -.->|"views history"| node_reservation_api
node_auth_routes -->|"reads account"| node_mysql_pool
node_auth_routes -->|"creates session"| node_session_tokens
node_auth_routes -->|"logs login"| node_mongo_access
node_registration -->|"creates account"| node_mysql_pool
node_session_route -->|"checks account"| node_auth_guard
node_logout -.->|"clears session"| node_customer
node_auth_guard -->|"verifies token"| node_session_tokens
node_auth_guard -->|"checks role"| node_mysql_pool
node_vehicle_api -->|"authenticates"| node_auth_guard
node_vehicle_api -->|"reads and writes"| node_mysql_pool
node_options_api -->|"authenticates"| node_auth_guard
node_options_api -->|"reads options"| node_mysql_pool
node_reservation_api -->|"authenticates"| node_auth_guard
node_reservation_api -->|"reads and writes"| node_mysql_pool
node_reservation_api -->|"logs events"| node_mongo_access
node_station_api -->|"reads summaries"| node_mysql_pool
node_admin_stations -->|"checks admin"| node_auth_guard
node_admin_stations -->|"manages stations"| node_mysql_pool
node_admin_stations -->|"logs changes"| node_mongo_access
node_activity_api -->|"authenticates"| node_auth_guard
node_activity_api -->|"queries events"| node_mongo_access
node_mysql_pool -.->|"queries"| node_mysql_store
node_mongo_access -->|"reads and writes"| node_mongo_store

click node_home "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/page.tsx"
click node_login_ui "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/login/page.tsx"
click node_reservations_ui "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/reservations/page.tsx"
click node_auth_routes "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/auth/login/route.ts"
click node_registration "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/auth/register/route.ts"
click node_session_route "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/auth/session/route.ts"
click node_logout "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/auth/logout/route.ts"
click node_session_tokens "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/auth.ts"
click node_auth_guard "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/server-auth.ts"
click node_vehicle_api "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/evs/route.ts"
click node_options_api "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/booking-options/route.ts"
click node_reservation_api "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/reservations/route.ts"
click node_station_api "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/stations/route.ts"
click node_admin_stations "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/admin/stations/route.ts"
click node_activity_api "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/activity-logs/route.ts"
click node_mysql_pool "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/db.ts"
click node_mysql_store "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/db/schema.sql"
click node_mongo_access "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/mongodb.ts"
click node_mongo_store "https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/mongodb.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_home,node_login_ui,node_reservations_ui toneBlue
class node_vehicle_api,node_options_api,node_reservation_api,node_station_api,node_admin_stations,node_activity_api toneAmber
class node_auth_routes,node_registration,node_session_route,node_logout,node_session_tokens,node_auth_guard toneMint
class node_mysql_pool,node_mysql_store,node_mongo_access,node_mongo_store toneRose
class node_customer,node_administrator toneIndigo
```

## Components

### Web experience

- [Main screen](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/page.tsx): `app/page.tsx`
- [Login screen](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/login/page.tsx): `app/login/page.tsx`
- [Reservations screen](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/reservations/page.tsx): `app/reservations/page.tsx`

### API workflows

- [EV management](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/evs/route.ts): `app/api/evs/route.ts`
- [Booking options](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/booking-options/route.ts): `app/api/booking-options/route.ts`
- [Reservations](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/reservations/route.ts): `app/api/reservations/route.ts`
- [Station listings](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/stations/route.ts): `app/api/stations/route.ts`
- [Station administration](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/admin/stations/route.ts): `app/api/admin/stations/route.ts`
- [Activity retrieval](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/activity-logs/route.ts): `app/api/activity-logs/route.ts`

### Identity

- [Auth routes](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/auth/login/route.ts): `app/api/auth/login/route.ts`
- [Registration](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/auth/register/route.ts): `app/api/auth/register/route.ts`
- [Session check](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/auth/session/route.ts): `app/api/auth/session/route.ts`
- [Sign out](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/app/api/auth/logout/route.ts): `app/api/auth/logout/route.ts`
- [Session tokens](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/auth.ts): `lib/auth.ts`
- [Account authorization](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/server-auth.ts): `lib/server-auth.ts`

### Data stores

- [MySQL access](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/db.ts): `lib/db.ts`
- [Relational database](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/db/schema.sql): `db/schema.sql`
- [MongoDB access](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/mongodb.ts): `lib/mongodb.ts`
- [Activity documents](https://github.com/sriniket-d/smart-ev-charging-reservation/blob/main/lib/mongodb.ts): `lib/mongodb.ts`

### Other components

- **Customer**
- **Administrator**

## Connections

- Customer → Login screen: signs in (evidence: `README.md`)
- Customer → Main screen: uses (evidence: `README.md`)
- Administrator → Main screen: uses
- Login screen → Auth routes: submits credentials
- Main screen → EV management: manages EVs (evidence: `README.md`)
- Main screen → Booking options: loads options (evidence: `README.md`)
- Main screen → Reservations: books or cancels (evidence: `README.md`)
- Main screen → Station listings: views stations (evidence: `README.md`)
- Main screen → Station administration: manages stations (evidence: `README.md`)
- Main screen → Activity retrieval: views activity (evidence: `README.md`)
- Reservations screen → Reservations: views history (evidence: `README.md`)
- Auth routes → MySQL access: reads account (evidence: `app/api/auth/login/route.ts`)
- Auth routes → Session tokens: creates session (evidence: `app/api/auth/login/route.ts`)
- Auth routes → MongoDB access: logs login (evidence: `app/api/auth/login/route.ts`)
- Registration → MySQL access: creates account (evidence: `app/api/auth/register/route.ts`)
- Session check → Account authorization: checks account (evidence: `lib/server-auth.ts`)
- Sign out → Customer: clears session
- Account authorization → Session tokens: verifies token (evidence: `lib/server-auth.ts`)
- Account authorization → MySQL access: checks role (evidence: `lib/server-auth.ts`)
- EV management → Account authorization: authenticates (evidence: `app/api/evs/route.ts`)
- EV management → MySQL access: reads and writes (evidence: `app/api/evs/route.ts`)
- Booking options → Account authorization: authenticates (evidence: `app/api/booking-options/route.ts`)
- Booking options → MySQL access: reads options (evidence: `app/api/booking-options/route.ts`)
- Reservations → Account authorization: authenticates (evidence: `app/api/reservations/route.ts`)
- Reservations → MySQL access: reads and writes (evidence: `app/api/reservations/route.ts`)
- Reservations → MongoDB access: logs events (evidence: `app/api/reservations/route.ts`)
- Station listings → MySQL access: reads summaries (evidence: `app/api/stations/route.ts`)
- Station administration → Account authorization: checks admin (evidence: `app/api/admin/stations/route.ts`)
- Station administration → MySQL access: manages stations (evidence: `app/api/admin/stations/route.ts`)
- Station administration → MongoDB access: logs changes (evidence: `app/api/admin/stations/route.ts`)
- Activity retrieval → Account authorization: authenticates (evidence: `app/api/activity-logs/route.ts`)
- Activity retrieval → MongoDB access: queries events (evidence: `app/api/activity-logs/route.ts`)
- MySQL access → Relational database: queries
- MongoDB access → Activity documents: reads and writes (evidence: `lib/mongodb.ts`)
