# miguelangeltoscuento/sistemacpar architecture

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

## Overview

SistemaCPAR is a web application for managing service accounts in Santa María Texcalac. The principal workflow is staff registering an account, then looking it up to calculate and record a payment, create a receipt, and consult account status or arrears. The source excerpts show these payment and account-service interactions; README gives only a brief product description, and several listed capabilities are represented by paths without inspected implementation. Those branches are included, but their unverified connections are not asserted.

Main entry points: [`proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java`](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java) (Payment workflow), [`proyecto/src/main/java/com/SCPAR/proyecto/service/EstadoCuentaService.java`](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/EstadoCuentaService.java) (Statement calculations), [`proyecto/src/main/java/com/SCPAR/proyecto/repository`](https://github.com/miguelangeltoscuento/sistemacpar/tree/main/proyecto/src/main/java/com/SCPAR/proyecto/repository) (Account and catalog repositories), [`proyecto/src/main/java/com/SCPAR/proyecto/service/RegistroUsuarioService.java`](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/RegistroUsuarioService.java) (Account registration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web workflows"]
  node_account_ui["Account screens<br/>[usuario-form.html]"]
  node_account_controller["User controller"]
  node_payment_ui["Payment screens<br/>[pago-busqueda.html]"]
  node_receipt["Payment receipt<br/>[recibo-pago.html]"]
  node_arrears["Arrears list<br/>[lista_adeudos.html]"]
end

subgraph group_accounts["Accounts and catalogs"]
  node_registration["Account registration"]
  node_account_data["Account and catalog data"]
  node_account_repos["Account and catalog repositories"]
  node_catalog_controller["Catalog configuration"]
  node_database_schema["Database schema<br/>[database.sql]"]
end

subgraph group_billing["Payments and balances"]
  node_payment_controller["Payment workflow"]
  node_payment_data["Payment records<br/>[Pago.java]"]
  node_payment_repos["Payment repositories"]
  node_statement_controller["Account statement"]
  node_statement_service["Statement calculations"]
  node_statement_dto["Statement view data"]
end

subgraph group_access["Administration and access"]
  node_admin_controller["Administrator tools"]
  node_admin_service["Administrator service"]
  node_admin_repo["Administrator repository"]
  node_security["Authentication configuration"]
  node_user_details["User details lookup"]
  node_password_reset["Password reset"]
  node_email["Email service<br/>[EmailService.java]"]
  node_backup["Database backup<br/>[BackupService.java]"]
end

node_staff(("Staff user"))

node_staff -->|"uses"| node_account_ui
node_account_controller -->|"delegates to"| node_registration
node_registration -->|"reads and saves"| node_account_repos
node_registration -->|"builds accounts"| node_account_data
node_catalog_controller -->|"uses catalogs"| node_account_repos
node_staff -->|"uses"| node_payment_ui
node_payment_controller -->|"looks up accounts"| node_account_repos
node_payment_controller -->|"records and queries"| node_payment_repos
node_payment_controller -->|"creates payment"| node_payment_data
node_payment_controller -->|"finds cashier"| node_admin_repo
node_payment_controller -->|"renders receipt"| node_receipt
node_payment_controller -->|"renders arrears"| node_arrears
node_statement_controller -->|"delegates to"| node_statement_service
node_statement_service -->|"reads accounts and rates"| node_account_repos
node_statement_service -->|"reads payment dates"| node_payment_repos
node_statement_service -->|"populates"| node_statement_dto
node_admin_controller -->|"uses"| node_admin_service
node_admin_service -->|"reads administrators"| node_admin_repo
node_security -.->|"configures lookup"| node_user_details
node_user_details -->|"loads administrator"| node_admin_repo
node_password_reset -.->|"may send email"| node_email
node_admin_controller -->|"invokes backup"| node_backup

click node_account_ui "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/resources/templates/usuario-form.html"
click node_account_controller "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/UsuarioController.java"
click node_registration "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/RegistroUsuarioService.java"
click node_account_data "https://github.com/miguelangeltoscuento/sistemacpar/tree/main/proyecto/src/main/java/com/SCPAR/proyecto/model"
click node_account_repos "https://github.com/miguelangeltoscuento/sistemacpar/tree/main/proyecto/src/main/java/com/SCPAR/proyecto/repository"
click node_catalog_controller "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/ConfiguracionController.java"
click node_payment_ui "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/resources/templates/pago-busqueda.html"
click node_payment_controller "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java"
click node_payment_data "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/model/Pago.java"
click node_payment_repos "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/repository/PagoRepository.java"
click node_receipt "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/resources/templates/recibo-pago.html"
click node_arrears "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/resources/templates/lista_adeudos.html"
click node_statement_controller "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/EstadoCuentaController.java"
click node_statement_service "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/EstadoCuentaService.java"
click node_statement_dto "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/dto/EstadoCuentaDTO.java"
click node_admin_controller "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/AdministradorController.java"
click node_admin_service "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/AdministradorService.java"
click node_admin_repo "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/repository/AdministradorRepository.java"
click node_security "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/config/SecurityConfig.java"
click node_user_details "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/CustomUserDetailsService.java"
click node_password_reset "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/PasswordResetController.java"
click node_email "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/EmailService.java"
click node_backup "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/BackupService.java"
click node_database_schema "https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/database/database.sql"

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_account_ui,node_account_controller,node_payment_ui,node_receipt,node_arrears,node_staff toneBlue
class node_registration,node_account_data,node_account_repos,node_catalog_controller,node_database_schema toneAmber
class node_payment_controller,node_payment_data,node_payment_repos,node_statement_controller,node_statement_service,node_statement_dto toneMint
class node_admin_controller,node_admin_service,node_admin_repo,node_security,node_user_details,node_password_reset,node_email,node_backup toneRose
```

## Components

### Web workflows

- [Account screens](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/resources/templates/usuario-form.html): `proyecto/src/main/resources/templates/usuario-form.html`
- [User controller](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/UsuarioController.java): `proyecto/src/main/java/com/SCPAR/proyecto/controller/UsuarioController.java`
- [Payment screens](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/resources/templates/pago-busqueda.html): `proyecto/src/main/resources/templates/pago-busqueda.html`
- [Payment receipt](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/resources/templates/recibo-pago.html): `proyecto/src/main/resources/templates/recibo-pago.html`
- [Arrears list](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/resources/templates/lista_adeudos.html): `proyecto/src/main/resources/templates/lista_adeudos.html`

### Accounts and catalogs

- [Account registration](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/RegistroUsuarioService.java): `proyecto/src/main/java/com/SCPAR/proyecto/service/RegistroUsuarioService.java`
- [Account and catalog data](https://github.com/miguelangeltoscuento/sistemacpar/tree/main/proyecto/src/main/java/com/SCPAR/proyecto/model): `proyecto/src/main/java/com/SCPAR/proyecto/model`
- [Account and catalog repositories](https://github.com/miguelangeltoscuento/sistemacpar/tree/main/proyecto/src/main/java/com/SCPAR/proyecto/repository): `proyecto/src/main/java/com/SCPAR/proyecto/repository`
- [Catalog configuration](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/ConfiguracionController.java): `proyecto/src/main/java/com/SCPAR/proyecto/controller/ConfiguracionController.java`
- [Database schema](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/database/database.sql): `proyecto/src/main/java/com/SCPAR/proyecto/database/database.sql`

### Payments and balances

- [Payment workflow](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java): `proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java`
- [Payment records](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/model/Pago.java): `proyecto/src/main/java/com/SCPAR/proyecto/model/Pago.java`
- [Payment repositories](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/repository/PagoRepository.java): `proyecto/src/main/java/com/SCPAR/proyecto/repository/PagoRepository.java`
- [Account statement](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/EstadoCuentaController.java): `proyecto/src/main/java/com/SCPAR/proyecto/controller/EstadoCuentaController.java`
- [Statement calculations](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/EstadoCuentaService.java): `proyecto/src/main/java/com/SCPAR/proyecto/service/EstadoCuentaService.java`
- [Statement view data](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/dto/EstadoCuentaDTO.java): `proyecto/src/main/java/com/SCPAR/proyecto/dto/EstadoCuentaDTO.java`

### Administration and access

- [Administrator tools](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/AdministradorController.java): `proyecto/src/main/java/com/SCPAR/proyecto/controller/AdministradorController.java`
- [Administrator service](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/AdministradorService.java): `proyecto/src/main/java/com/SCPAR/proyecto/service/AdministradorService.java`
- [Administrator repository](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/repository/AdministradorRepository.java): `proyecto/src/main/java/com/SCPAR/proyecto/repository/AdministradorRepository.java`
- [Authentication configuration](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/config/SecurityConfig.java): `proyecto/src/main/java/com/SCPAR/proyecto/config/SecurityConfig.java`
- [User details lookup](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/CustomUserDetailsService.java): `proyecto/src/main/java/com/SCPAR/proyecto/service/CustomUserDetailsService.java`
- [Password reset](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/controller/PasswordResetController.java): `proyecto/src/main/java/com/SCPAR/proyecto/controller/PasswordResetController.java`
- [Email service](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/EmailService.java): `proyecto/src/main/java/com/SCPAR/proyecto/service/EmailService.java`
- [Database backup](https://github.com/miguelangeltoscuento/sistemacpar/blob/main/proyecto/src/main/java/com/SCPAR/proyecto/service/BackupService.java): `proyecto/src/main/java/com/SCPAR/proyecto/service/BackupService.java`

### Other components

- **Staff user**

## Connections

- Staff user → Account screens: uses
- User controller → Account registration: delegates to (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/UsuarioController.java`)
- Account registration → Account and catalog repositories: reads and saves (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/service/RegistroUsuarioService.java`)
- Account registration → Account and catalog data: builds accounts (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/service/RegistroUsuarioService.java`)
- Catalog configuration → Account and catalog repositories: uses catalogs (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/ConfiguracionController.java`)
- Staff user → Payment screens: uses
- Payment workflow → Account and catalog repositories: looks up accounts (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java`)
- Payment workflow → Payment repositories: records and queries (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java`)
- Payment workflow → Payment records: creates payment (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java`)
- Payment workflow → Administrator repository: finds cashier (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java`)
- Payment workflow → Payment receipt: renders receipt (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java`)
- Payment workflow → Arrears list: renders arrears (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/PagoController.java`)
- Account statement → Statement calculations: delegates to (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/EstadoCuentaController.java`)
- Statement calculations → Account and catalog repositories: reads accounts and rates (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/service/EstadoCuentaService.java`)
- Statement calculations → Payment repositories: reads payment dates (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/service/EstadoCuentaService.java`)
- Statement calculations → Statement view data: populates (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/service/EstadoCuentaService.java`)
- Administrator tools → Administrator service: uses (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/AdministradorController.java`)
- Administrator service → Administrator repository: reads administrators (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/service/AdministradorService.java`)
- Authentication configuration → User details lookup: configures lookup
- User details lookup → Administrator repository: loads administrator (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/service/CustomUserDetailsService.java`)
- Password reset → Email service: may send email
- Administrator tools → Database backup: invokes backup (evidence: `proyecto/src/main/java/com/SCPAR/proyecto/controller/AdministradorController.java`)
