# ferdinaldopelembe/cobranca-mercados architecture

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

- Interactive diagram: https://gitdiagram.com/ferdinaldopelembe/cobranca-mercados
- Repository: https://github.com/ferdinaldopelembe/cobranca-mercados

## Overview

Cobrança de Mercados is a market, merchant, and payment-management product with a Spring Boot API, React web client, and Expo mobile client sharing accounts and persisted data. Users authenticate, then work by role: merchants issue and track payment slips; a fiscal records cash received; a different financial manager confirms or rejects it. Administrators manage markets, stalls, merchants, rates, staff, settings, and audit history; reporting is market-scoped. The graph follows documented workflows and sampled call sites; several feature implementations are unsampled, so their internal links are documented rather than inferred.

Main entry points: [`backend/src/main/java/mz/beira/cobranca/controllers/PaymentController.java`](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/controllers/PaymentController.java) (Payment API), [`backend/src/main/java/mz/beira/cobranca/services/PaymentService.java`](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/PaymentService.java) (Payment lifecycle), [`backend/src/main/java/mz/beira/cobranca/controllers/AdminController.java`](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/controllers/AdminController.java) (Administration API), [`backend/src/main/java/mz/beira/cobranca/services/AdminService.java`](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/AdminService.java) (Administration service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["User clients"]
  node_web["Web application<br/>[App.jsx]"]
  node_web_auth["Web authentication"]
  node_web_ops["Web operations"]
  node_mobile["Mobile application<br/>[App.js]"]
  node_mobile_screens["Mobile screens"]
  node_mobile_api["Mobile API client<br/>[api.js]"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Authentication API"]
  node_account_service["Account service"]
  node_session_service["Session access"]
end

subgraph group_operations["Market operations"]
  node_admin_api["Administration API"]
  node_admin_service["Administration service<br/>[AdminService.java]"]
  node_catalog_service["Catalog service"]
end

subgraph group_finance["Payments and oversight"]
  node_payment_api["Payment API"]
  node_payment_service["Payment lifecycle"]
  node_notifications["Notifications"]
  node_reports_audit["Reports and audit<br/>[AdminService.java]"]
end

subgraph group_data["Persistence"]
  node_account_store[("Account repository")]
  node_payment_store[("Payment repository")]
  node_domain_models[("Domain records")]
  node_h2[("H2 file database")]
end

node_users(("Market users"))

node_users -->|"use"| node_web
node_users -->|"use"| node_mobile
node_web -->|"routes to"| node_web_auth
node_web -->|"routes to"| node_web_ops
node_web_auth -.->|"calls API"| node_auth_controller
node_web_ops -.->|"calls API"| node_admin_api
node_mobile -->|"renders"| node_mobile_screens
node_mobile -->|"calls"| node_mobile_api
node_mobile_screens -->|"calls"| node_mobile_api
node_mobile_api -->|"calls API"| node_auth_controller
node_mobile_api -->|"calls API"| node_payment_api
node_auth_controller -->|"delegates to"| node_account_service
node_auth_controller -->|"uses"| node_session_service
node_session_service -->|"looks up account"| node_account_service
node_account_service -->|"reads and writes"| node_account_store
node_account_store -->|"persists"| node_domain_models
node_admin_api -->|"checks access"| node_session_service
node_admin_api -->|"delegates to"| node_admin_service
node_admin_service -->|"manages accounts"| node_account_store
node_admin_service -.->|"uses catalog"| node_catalog_service
node_admin_api -->|"requests reports"| node_reports_audit
node_payment_api -->|"checks account"| node_session_service
node_payment_api -->|"delegates to"| node_payment_service
node_payment_service -->|"reads and writes"| node_payment_store
node_payment_service -->|"triggers"| node_notifications
node_payment_store -.->|"persists"| node_domain_models
node_domain_models -->|"stored in"| node_h2
node_users -->|"merchant, fiscal, manager"| node_payment_api
node_payment_api -->|"cash and wallet flows"| node_payment_service
node_payment_service -->|"records payment state"| node_payment_store
node_admin_service -->|"builds summaries"| node_reports_audit

click node_web "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/frontend/src/App.jsx"
click node_web_auth "https://github.com/ferdinaldopelembe/cobranca-mercados/tree/main/frontend/src/features/auth"
click node_web_ops "https://github.com/ferdinaldopelembe/cobranca-mercados/tree/main/frontend/src/features"
click node_mobile "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/mobile/App.js"
click node_mobile_screens "https://github.com/ferdinaldopelembe/cobranca-mercados/tree/main/mobile/src/screens"
click node_mobile_api "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/mobile/src/api.js"
click node_auth_controller "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/controllers/AuthController.java"
click node_account_service "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/AccountService.java"
click node_session_service "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/SessionAccountService.java"
click node_account_store "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/repositories/AccountRepository.java"
click node_admin_api "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/controllers/AdminController.java"
click node_admin_service "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/AdminService.java"
click node_catalog_service "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/CatalogService.java"
click node_payment_api "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/controllers/PaymentController.java"
click node_payment_service "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/PaymentService.java"
click node_notifications "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/NotificationService.java"
click node_reports_audit "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/AdminService.java"
click node_payment_store "https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/repositories/PaymentRepository.java"
click node_domain_models "https://github.com/ferdinaldopelembe/cobranca-mercados/tree/main/backend/src/main/java/mz/beira/cobranca/models"

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_web,node_web_auth,node_web_ops,node_mobile,node_mobile_screens,node_mobile_api,node_users toneBlue
class node_auth_controller,node_account_service,node_session_service toneAmber
class node_admin_api,node_admin_service,node_catalog_service toneMint
class node_payment_api,node_payment_service,node_notifications,node_reports_audit toneRose
class node_account_store,node_payment_store,node_domain_models,node_h2 toneIndigo
```

## Components

### User clients

- [Web application](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Web authentication](https://github.com/ferdinaldopelembe/cobranca-mercados/tree/main/frontend/src/features/auth): `frontend/src/features/auth`
- [Web operations](https://github.com/ferdinaldopelembe/cobranca-mercados/tree/main/frontend/src/features): `frontend/src/features`
- [Mobile application](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/mobile/App.js): `mobile/App.js`
- [Mobile screens](https://github.com/ferdinaldopelembe/cobranca-mercados/tree/main/mobile/src/screens): `mobile/src/screens`
- [Mobile API client](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/mobile/src/api.js): `mobile/src/api.js`

### Identity and access

- [Authentication API](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/controllers/AuthController.java): `backend/src/main/java/mz/beira/cobranca/controllers/AuthController.java`
- [Account service](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/AccountService.java): `backend/src/main/java/mz/beira/cobranca/services/AccountService.java`
- [Session access](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/SessionAccountService.java): `backend/src/main/java/mz/beira/cobranca/services/SessionAccountService.java`

### Market operations

- [Administration API](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/controllers/AdminController.java): `backend/src/main/java/mz/beira/cobranca/controllers/AdminController.java`
- [Administration service](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/AdminService.java): `backend/src/main/java/mz/beira/cobranca/services/AdminService.java`
- [Catalog service](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/CatalogService.java): `backend/src/main/java/mz/beira/cobranca/services/CatalogService.java`

### Payments and oversight

- [Payment API](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/controllers/PaymentController.java): `backend/src/main/java/mz/beira/cobranca/controllers/PaymentController.java`
- [Payment lifecycle](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/PaymentService.java): `backend/src/main/java/mz/beira/cobranca/services/PaymentService.java`
- [Notifications](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/NotificationService.java): `backend/src/main/java/mz/beira/cobranca/services/NotificationService.java`
- [Reports and audit](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/services/AdminService.java): `backend/src/main/java/mz/beira/cobranca/services/AdminService.java`

### Persistence

- [Account repository](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/repositories/AccountRepository.java): `backend/src/main/java/mz/beira/cobranca/repositories/AccountRepository.java`
- [Payment repository](https://github.com/ferdinaldopelembe/cobranca-mercados/blob/main/backend/src/main/java/mz/beira/cobranca/repositories/PaymentRepository.java): `backend/src/main/java/mz/beira/cobranca/repositories/PaymentRepository.java`
- [Domain records](https://github.com/ferdinaldopelembe/cobranca-mercados/tree/main/backend/src/main/java/mz/beira/cobranca/models): `backend/src/main/java/mz/beira/cobranca/models`
- **H2 file database**

### Other components

- **Market users**

## Connections

- Market users → Web application: use
- Market users → Mobile application: use
- Web application → Web authentication: routes to (evidence: `frontend/src/App.jsx`)
- Web application → Web operations: routes to (evidence: `frontend/src/App.jsx`)
- Web authentication → Authentication API: calls API
- Web operations → Administration API: calls API
- Mobile application → Mobile screens: renders (evidence: `mobile/App.js`)
- Mobile application → Mobile API client: calls (evidence: `mobile/App.js`)
- Mobile screens → Mobile API client: calls (evidence: `mobile/src/screens/AuthScreen.js`)
- Mobile API client → Authentication API: calls API
- Mobile API client → Payment API: calls API
- Authentication API → Account service: delegates to (evidence: `backend/src/main/java/mz/beira/cobranca/controllers/AuthController.java`)
- Authentication API → Session access: uses (evidence: `backend/src/main/java/mz/beira/cobranca/controllers/AuthController.java`)
- Session access → Account service: looks up account (evidence: `backend/src/main/java/mz/beira/cobranca/services/SessionAccountService.java`)
- Account service → Account repository: reads and writes (evidence: `backend/src/main/java/mz/beira/cobranca/services/AccountService.java`)
- Account repository → Domain records: persists (evidence: `backend/src/main/java/mz/beira/cobranca/repositories/AccountRepository.java`)
- Administration API → Session access: checks access (evidence: `backend/src/main/java/mz/beira/cobranca/controllers/AdminController.java`)
- Administration API → Administration service: delegates to (evidence: `backend/src/main/java/mz/beira/cobranca/controllers/AdminController.java`)
- Administration service → Account repository: manages accounts (evidence: `backend/src/main/java/mz/beira/cobranca/services/AdminService.java`)
- Administration service → Catalog service: uses catalog (evidence: `backend/src/main/java/mz/beira/cobranca/services/AdminService.java`)
- Administration API → Reports and audit: requests reports (evidence: `backend/src/main/java/mz/beira/cobranca/controllers/AdminController.java`)
- Payment API → Session access: checks account (evidence: `backend/src/main/java/mz/beira/cobranca/controllers/PaymentController.java`)
- Payment API → Payment lifecycle: delegates to (evidence: `backend/src/main/java/mz/beira/cobranca/controllers/PaymentController.java`)
- Payment lifecycle → Payment repository: reads and writes (evidence: `backend/src/main/java/mz/beira/cobranca/services/PaymentService.java`)
- Payment lifecycle → Notifications: triggers (evidence: `backend/src/main/java/mz/beira/cobranca/services/PaymentService.java`)
- Payment repository → Domain records: persists (evidence: `backend/src/main/java/mz/beira/cobranca/repositories/PaymentRepository.java`)
- Domain records → H2 file database: stored in
- Market users → Payment API: merchant, fiscal, manager
- Payment API → Payment lifecycle: cash and wallet flows (evidence: `backend/src/main/java/mz/beira/cobranca/controllers/PaymentController.java`)
- Payment lifecycle → Payment repository: records payment state (evidence: `backend/src/main/java/mz/beira/cobranca/services/PaymentService.java`)
- Administration service → Reports and audit: builds summaries (evidence: `backend/src/main/java/mz/beira/cobranca/services/AdminService.java`)
