# almousleckdev/zellacharging architecture

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

- Interactive diagram: https://gitdiagram.com/almousleckdev/zellacharging
- Repository: https://github.com/almousleckdev/zellacharging

## Overview

Zella is an EV-charging customer platform: mobile customers discover stations, fund a wallet, and start or stop charging; administrators operate the platform through a Next.js console and backend. The Spring backend also supports partner session feeds, coupons, and notifications. README documents the principal integrations and storage; sampled service excerpts show charging orchestration, station lookup, withdrawal review, and session feeds. Some subsystems are represented by their exact enclosing directories because their implementations were not sampled; links to them rely on README-level architecture descriptions.

Main entry points: [`backend/src/main/java/com/evcharge/customer/Application.java`](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/Application.java) (Customer Backend), [`backend/src/main/java/com/evcharge/customer/charging/application/SessionService.java`](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/charging/application/SessionService.java) (Charging Sessions), [`backend/src/main/java/com/evcharge/customer/catalog/application/CatalogService.java`](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/catalog/application/CatalogService.java) (Station Catalog), [`backend/src/main/java/com/evcharge/customer/wallet`](https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/wallet) (Wallet and Ledger)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Customer and Admin Clients"]
  node_mobile["Flutter App"]
  node_dashboard["Admin Console"]
end

subgraph group_identity["Accounts and Notifications"]
  node_account["Accounts"]
  node_notifications["Notifications"]
end

subgraph group_charging["Station and Charging"]
  node_catalog["Station Catalog"]
  node_charging["Charging Sessions"]
  node_quotes["Session Quotes"]
end

subgraph group_money["Wallet and Payments"]
  node_wallet["Wallet and Ledger"]
  node_withdrawals["Withdrawal Review"]
  node_coupons["Coupons"]
end

subgraph group_operations["Operations and Integrations"]
  node_backend["Customer Backend<br/>[Application.java]"]
  node_partners["Partner Feeds"]
  node_adminops["Admin Operations"]
  node_postgres[("PostgreSQL")]
  node_pvit{{"PVit Payments"}}
  node_ocpp{{"OCPP Platform"}}
  node_fcm{{"Firebase Messaging"}}
  node_smtp{{"SMTP"}}
end

node_customer(("Customer"))
node_admin(("Admin"))

node_customer -->|"uses"| node_mobile
node_mobile -->|"calls API"| node_backend
node_admin -->|"uses"| node_dashboard
node_dashboard -->|"BFF requests"| node_backend
node_backend -.->|"serves"| node_account
node_backend -.->|"serves"| node_catalog
node_backend -.->|"serves"| node_charging
node_backend -.->|"serves"| node_wallet
node_backend -.->|"serves"| node_notifications
node_backend -.->|"serves"| node_adminops
node_backend -.->|"serves"| node_partners
node_backend -.->|"serves"| node_coupons
node_catalog -.->|"station data"| node_ocpp
node_charging -->|"charge commands"| node_ocpp
node_charging -->|"reserves funds"| node_wallet
node_quotes -->|"checks balance"| node_wallet
node_quotes -->|"validates connector"| node_catalog
node_withdrawals -.->|"payout status"| node_pvit
node_wallet -->|"top-up payments"| node_pvit
node_notifications -->|"sends push"| node_fcm
node_account -->|"sends codes"| node_smtp
node_backend -->|"persists data"| node_postgres
node_adminops -->|"queries sessions"| node_charging
node_partners -->|"reads charge feed"| node_charging
node_catalog -->|"reads occupancy"| node_charging
node_adminops -.->|"reviews withdrawals"| node_withdrawals

click node_mobile "https://github.com/almousleckdev/zellacharging/tree/main/mobile"
click node_dashboard "https://github.com/almousleckdev/zellacharging/tree/main/dashboard"
click node_backend "https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/Application.java"
click node_account "https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/account"
click node_notifications "https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/notification"
click node_catalog "https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/catalog/application/CatalogService.java"
click node_charging "https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/charging/application/SessionService.java"
click node_quotes "https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/charging/application/SessionQuoteService.java"
click node_wallet "https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/wallet"
click node_withdrawals "https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/wallet/application/WithdrawalReviewService.java"
click node_coupons "https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/coupon"
click node_partners "https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/partner/application/SessionFeedService.java"
click node_adminops "https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/admin"

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_mobile,node_dashboard toneBlue
class node_account,node_notifications toneAmber
class node_catalog,node_charging,node_quotes toneMint
class node_wallet,node_withdrawals,node_coupons toneRose
class node_backend,node_partners,node_adminops,node_postgres,node_pvit,node_ocpp,node_fcm,node_smtp,node_customer,node_admin toneIndigo
```

## Components

### Customer and Admin Clients

- [Flutter App](https://github.com/almousleckdev/zellacharging/tree/main/mobile): `mobile`
- [Admin Console](https://github.com/almousleckdev/zellacharging/tree/main/dashboard): `dashboard`

### Accounts and Notifications

- [Accounts](https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/account): `backend/src/main/java/com/evcharge/customer/account`
- [Notifications](https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/notification): `backend/src/main/java/com/evcharge/customer/notification`

### Station and Charging

- [Station Catalog](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/catalog/application/CatalogService.java): `backend/src/main/java/com/evcharge/customer/catalog/application/CatalogService.java`
- [Charging Sessions](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/charging/application/SessionService.java): `backend/src/main/java/com/evcharge/customer/charging/application/SessionService.java`
- [Session Quotes](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/charging/application/SessionQuoteService.java): `backend/src/main/java/com/evcharge/customer/charging/application/SessionQuoteService.java`

### Wallet and Payments

- [Wallet and Ledger](https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/wallet): `backend/src/main/java/com/evcharge/customer/wallet`
- [Withdrawal Review](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/wallet/application/WithdrawalReviewService.java): `backend/src/main/java/com/evcharge/customer/wallet/application/WithdrawalReviewService.java`
- [Coupons](https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/coupon): `backend/src/main/java/com/evcharge/customer/coupon`

### Operations and Integrations

- [Customer Backend](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/Application.java): `backend/src/main/java/com/evcharge/customer/Application.java`
- [Partner Feeds](https://github.com/almousleckdev/zellacharging/blob/main/backend/src/main/java/com/evcharge/customer/partner/application/SessionFeedService.java): `backend/src/main/java/com/evcharge/customer/partner/application/SessionFeedService.java`
- [Admin Operations](https://github.com/almousleckdev/zellacharging/tree/main/backend/src/main/java/com/evcharge/customer/admin): `backend/src/main/java/com/evcharge/customer/admin`
- **PostgreSQL**
- **PVit Payments**
- **OCPP Platform**
- **Firebase Messaging**
- **SMTP**

### Other components

- **Customer**
- **Admin**

## Connections

- Customer → Flutter App: uses (evidence: `README.md`)
- Flutter App → Customer Backend: calls API (evidence: `README.md`)
- Admin → Admin Console: uses (evidence: `README.md`)
- Admin Console → Customer Backend: BFF requests (evidence: `README.md`)
- Customer Backend → Accounts: serves
- Customer Backend → Station Catalog: serves
- Customer Backend → Charging Sessions: serves
- Customer Backend → Wallet and Ledger: serves
- Customer Backend → Notifications: serves
- Customer Backend → Admin Operations: serves
- Customer Backend → Partner Feeds: serves
- Customer Backend → Coupons: serves
- Station Catalog → OCPP Platform: station data
- Charging Sessions → OCPP Platform: charge commands (evidence: `README.md`)
- Charging Sessions → Wallet and Ledger: reserves funds (evidence: `backend/src/main/java/com/evcharge/customer/charging/application/SessionService.java`)
- Session Quotes → Wallet and Ledger: checks balance (evidence: `backend/src/main/java/com/evcharge/customer/charging/application/SessionQuoteService.java`)
- Session Quotes → Station Catalog: validates connector (evidence: `backend/src/main/java/com/evcharge/customer/charging/application/SessionQuoteService.java`)
- Withdrawal Review → PVit Payments: payout status
- Wallet and Ledger → PVit Payments: top-up payments (evidence: `README.md`)
- Notifications → Firebase Messaging: sends push (evidence: `README.md`)
- Accounts → SMTP: sends codes (evidence: `README.md`)
- Customer Backend → PostgreSQL: persists data (evidence: `README.md`)
- Admin Operations → Charging Sessions: queries sessions (evidence: `backend/src/main/java/com/evcharge/customer/admin/application/AdminSessionService.java`)
- Partner Feeds → Charging Sessions: reads charge feed (evidence: `backend/src/main/java/com/evcharge/customer/partner/application/SessionFeedService.java`)
- Station Catalog → Charging Sessions: reads occupancy (evidence: `backend/src/main/java/com/evcharge/customer/catalog/application/CatalogService.java`)
- Admin Operations → Withdrawal Review: reviews withdrawals
