# ricferraz/benesaude architecture

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

- Interactive diagram: https://gitdiagram.com/ricferraz/benesaude
- Repository: https://github.com/ricferraz/benesaude

## Overview

BeneSaúde is a benefits and healthcare-services administration app. Staff use its interface to manage clients and plans, issue and settle billing, authorize medical-service guides, view digital cards, and review reports; administrators also manage users, company settings, and database configuration. The frontend combines local stored-data fallback with API calls, while the server initializes PostgreSQL and provides application services. Edges reflect explicit excerpts or source-index references; unsampled route wiring and feature internals are not inferred.

Main entry points: [`src/App.tsx`](https://github.com/ricferraz/benesaude/blob/main/src/App.tsx) (App Shell), [`src/services/api.ts`](https://github.com/ricferraz/benesaude/blob/main/src/services/api.ts) (API Client), [`server.ts`](https://github.com/ricferraz/benesaude/blob/main/server.ts) (Application Server), [`src/utils/formatters.ts`](https://github.com/ricferraz/benesaude/blob/main/src/utils/formatters.ts) (Domain Formatters)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_app["App Shell<br/>[App.tsx]"]
  node_login["Login<br/>[LoginView.tsx]"]
  node_dashboard["Dashboard<br/>[DashboardView.tsx]"]
end

subgraph group_operations["Client Operations"]
  node_clients["Client List"]
  node_client_detail["Client Records"]
  node_new_client["Client Enrollment<br/>[NewClientModal.tsx]"]
  node_cards["Digital Cards"]
  node_card_item["Card Rendering"]
end

subgraph group_services["Billing and Care"]
  node_billing["Billing<br/>[BillingView.tsx]"]
  node_boleto["Boleto Generation"]
  node_receipt["Payment Receipt"]
  node_medical["Medical Guides"]
  node_reports["Reports<br/>[ReportsView.tsx]"]
end

subgraph group_platform["Data and Administration"]
  node_catalogs["Catalog Management<br/>[CadastrosView.tsx]"]
  node_users["User Management"]
  node_db_settings["Database Settings"]
  node_api["API Client<br/>[api.ts]"]
  node_server["Application Server<br/>[server.ts]"]
  node_store[("Local Data Fallback<br/>[mockData.ts]")]
  node_database[("PostgreSQL<br/>[index.ts]")]
  node_schema["Database Schema<br/>[schema.ts]"]
  node_security["Authentication Security<br/>[security.ts]"]
  node_dump["Database Export<br/>[dbDump.ts]"]
  node_formatters["Domain Formatters<br/>[formatters.ts]"]
  node_pdf["PDF Export<br/>[printPdf.ts]"]
  node_qr["QR Rendering<br/>[QRCodeDisplay.tsx]"]
end

node_staff(("Staff"))

node_staff -->|"uses"| node_app
node_app -->|"renders"| node_login
node_app -->|"renders"| node_dashboard
node_app -->|"renders"| node_clients
node_app -->|"renders"| node_client_detail
node_app -->|"renders"| node_new_client
node_app -->|"renders"| node_cards
node_app -->|"renders"| node_billing
node_app -->|"renders"| node_medical
node_app -->|"renders"| node_reports
node_app -->|"renders"| node_catalogs
node_app -->|"loads and persists"| node_store
node_app -->|"saves records"| node_api
node_login -->|"authenticates via"| node_api
node_billing -->|"renders"| node_boleto
node_billing -->|"renders"| node_receipt
node_cards -->|"renders"| node_card_item
node_card_item -->|"renders"| node_qr
node_medical -->|"requests data"| node_api
node_db_settings -->|"configures database"| node_api
node_db_settings -->|"uses export"| node_dump
node_api -->|"falls back to"| node_store
node_api -.->|"calls HTTP routes"| node_server
node_server -->|"initializes and queries"| node_database
node_server -->|"verifies passwords"| node_security
node_server -->|"generates SQL dump"| node_dump
node_database -->|"uses"| node_schema
node_client_detail -->|"formats records"| node_formatters
node_boleto -->|"formats billing"| node_formatters
node_receipt -->|"formats receipt"| node_formatters
node_medical -->|"formats guides"| node_formatters
node_users -->|"manages users via"| node_api

click node_app "https://github.com/ricferraz/benesaude/blob/main/src/App.tsx"
click node_login "https://github.com/ricferraz/benesaude/blob/main/src/components/LoginView.tsx"
click node_dashboard "https://github.com/ricferraz/benesaude/blob/main/src/components/DashboardView.tsx"
click node_clients "https://github.com/ricferraz/benesaude/blob/main/src/components/ClientsListView.tsx"
click node_client_detail "https://github.com/ricferraz/benesaude/blob/main/src/components/ClientDetailModal.tsx"
click node_new_client "https://github.com/ricferraz/benesaude/blob/main/src/components/NewClientModal.tsx"
click node_cards "https://github.com/ricferraz/benesaude/blob/main/src/components/CardsGalleryView.tsx"
click node_card_item "https://github.com/ricferraz/benesaude/blob/main/src/components/DigitalCardItem.tsx"
click node_billing "https://github.com/ricferraz/benesaude/blob/main/src/components/BillingView.tsx"
click node_boleto "https://github.com/ricferraz/benesaude/blob/main/src/components/BoletoGeneratorView.tsx"
click node_receipt "https://github.com/ricferraz/benesaude/blob/main/src/components/PaymentReceiptModal.tsx"
click node_medical "https://github.com/ricferraz/benesaude/blob/main/src/components/MedicalGuideView.tsx"
click node_reports "https://github.com/ricferraz/benesaude/blob/main/src/components/ReportsView.tsx"
click node_catalogs "https://github.com/ricferraz/benesaude/blob/main/src/components/CadastrosView.tsx"
click node_users "https://github.com/ricferraz/benesaude/blob/main/src/components/UsersManagementView.tsx"
click node_db_settings "https://github.com/ricferraz/benesaude/blob/main/src/components/DatabaseSettingsView.tsx"
click node_api "https://github.com/ricferraz/benesaude/blob/main/src/services/api.ts"
click node_server "https://github.com/ricferraz/benesaude/blob/main/server.ts"
click node_store "https://github.com/ricferraz/benesaude/blob/main/src/data/mockData.ts"
click node_database "https://github.com/ricferraz/benesaude/blob/main/src/db/index.ts"
click node_schema "https://github.com/ricferraz/benesaude/blob/main/src/db/schema.ts"
click node_security "https://github.com/ricferraz/benesaude/blob/main/src/utils/security.ts"
click node_dump "https://github.com/ricferraz/benesaude/blob/main/src/utils/dbDump.ts"
click node_formatters "https://github.com/ricferraz/benesaude/blob/main/src/utils/formatters.ts"
click node_pdf "https://github.com/ricferraz/benesaude/blob/main/src/utils/printPdf.ts"
click node_qr "https://github.com/ricferraz/benesaude/blob/main/src/components/QRCodeDisplay.tsx"

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_app,node_login,node_dashboard toneBlue
class node_clients,node_client_detail,node_new_client,node_cards,node_card_item toneAmber
class node_billing,node_boleto,node_receipt,node_medical,node_reports toneMint
class node_catalogs,node_users,node_db_settings,node_api,node_server,node_store,node_database,node_schema,node_security,node_dump,node_formatters,node_pdf,node_qr toneRose
class node_staff toneIndigo
```

## Components

### Application

- [App Shell](https://github.com/ricferraz/benesaude/blob/main/src/App.tsx): `src/App.tsx`
- [Login](https://github.com/ricferraz/benesaude/blob/main/src/components/LoginView.tsx): `src/components/LoginView.tsx`
- [Dashboard](https://github.com/ricferraz/benesaude/blob/main/src/components/DashboardView.tsx): `src/components/DashboardView.tsx`

### Client Operations

- [Client List](https://github.com/ricferraz/benesaude/blob/main/src/components/ClientsListView.tsx): `src/components/ClientsListView.tsx`
- [Client Records](https://github.com/ricferraz/benesaude/blob/main/src/components/ClientDetailModal.tsx): `src/components/ClientDetailModal.tsx`
- [Client Enrollment](https://github.com/ricferraz/benesaude/blob/main/src/components/NewClientModal.tsx): `src/components/NewClientModal.tsx`
- [Digital Cards](https://github.com/ricferraz/benesaude/blob/main/src/components/CardsGalleryView.tsx): `src/components/CardsGalleryView.tsx`
- [Card Rendering](https://github.com/ricferraz/benesaude/blob/main/src/components/DigitalCardItem.tsx): `src/components/DigitalCardItem.tsx`

### Billing and Care

- [Billing](https://github.com/ricferraz/benesaude/blob/main/src/components/BillingView.tsx): `src/components/BillingView.tsx`
- [Boleto Generation](https://github.com/ricferraz/benesaude/blob/main/src/components/BoletoGeneratorView.tsx): `src/components/BoletoGeneratorView.tsx`
- [Payment Receipt](https://github.com/ricferraz/benesaude/blob/main/src/components/PaymentReceiptModal.tsx): `src/components/PaymentReceiptModal.tsx`
- [Medical Guides](https://github.com/ricferraz/benesaude/blob/main/src/components/MedicalGuideView.tsx): `src/components/MedicalGuideView.tsx`
- [Reports](https://github.com/ricferraz/benesaude/blob/main/src/components/ReportsView.tsx): `src/components/ReportsView.tsx`

### Data and Administration

- [Catalog Management](https://github.com/ricferraz/benesaude/blob/main/src/components/CadastrosView.tsx): `src/components/CadastrosView.tsx`
- [User Management](https://github.com/ricferraz/benesaude/blob/main/src/components/UsersManagementView.tsx): `src/components/UsersManagementView.tsx`
- [Database Settings](https://github.com/ricferraz/benesaude/blob/main/src/components/DatabaseSettingsView.tsx): `src/components/DatabaseSettingsView.tsx`
- [API Client](https://github.com/ricferraz/benesaude/blob/main/src/services/api.ts): `src/services/api.ts`
- [Application Server](https://github.com/ricferraz/benesaude/blob/main/server.ts): `server.ts`
- [Local Data Fallback](https://github.com/ricferraz/benesaude/blob/main/src/data/mockData.ts): `src/data/mockData.ts`
- [PostgreSQL](https://github.com/ricferraz/benesaude/blob/main/src/db/index.ts): `src/db/index.ts`
- [Database Schema](https://github.com/ricferraz/benesaude/blob/main/src/db/schema.ts): `src/db/schema.ts`
- [Authentication Security](https://github.com/ricferraz/benesaude/blob/main/src/utils/security.ts): `src/utils/security.ts`
- [Database Export](https://github.com/ricferraz/benesaude/blob/main/src/utils/dbDump.ts): `src/utils/dbDump.ts`
- [Domain Formatters](https://github.com/ricferraz/benesaude/blob/main/src/utils/formatters.ts): `src/utils/formatters.ts`
- [PDF Export](https://github.com/ricferraz/benesaude/blob/main/src/utils/printPdf.ts): `src/utils/printPdf.ts`
- [QR Rendering](https://github.com/ricferraz/benesaude/blob/main/src/components/QRCodeDisplay.tsx): `src/components/QRCodeDisplay.tsx`

### Other components

- **Staff**

## Connections

- Staff → App Shell: uses (evidence: `src/App.tsx`)
- App Shell → Login: renders (evidence: `src/App.tsx`)
- App Shell → Dashboard: renders (evidence: `src/App.tsx`)
- App Shell → Client List: renders (evidence: `src/App.tsx`)
- App Shell → Client Records: renders (evidence: `src/App.tsx`)
- App Shell → Client Enrollment: renders (evidence: `src/App.tsx`)
- App Shell → Digital Cards: renders (evidence: `src/App.tsx`)
- App Shell → Billing: renders (evidence: `src/App.tsx`)
- App Shell → Medical Guides: renders (evidence: `src/App.tsx`)
- App Shell → Reports: renders (evidence: `src/App.tsx`)
- App Shell → Catalog Management: renders (evidence: `src/App.tsx`)
- App Shell → Local Data Fallback: loads and persists (evidence: `src/App.tsx`)
- App Shell → API Client: saves records (evidence: `src/App.tsx`)
- Login → API Client: authenticates via (evidence: `src/components/LoginView.tsx`)
- Billing → Boleto Generation: renders (evidence: `src/components/BillingView.tsx`)
- Billing → Payment Receipt: renders (evidence: `src/components/BillingView.tsx`)
- Digital Cards → Card Rendering: renders (evidence: `src/components/CardsGalleryView.tsx`)
- Card Rendering → QR Rendering: renders (evidence: `src/components/DigitalCardItem.tsx`)
- Medical Guides → API Client: requests data (evidence: `src/components/MedicalGuideView.tsx`)
- Database Settings → API Client: configures database (evidence: `src/components/DatabaseSettingsView.tsx`)
- Database Settings → Database Export: uses export (evidence: `src/components/DatabaseSettingsView.tsx`)
- API Client → Local Data Fallback: falls back to (evidence: `src/services/api.ts`)
- API Client → Application Server: calls HTTP routes
- Application Server → PostgreSQL: initializes and queries (evidence: `server.ts`)
- Application Server → Authentication Security: verifies passwords (evidence: `server.ts`)
- Application Server → Database Export: generates SQL dump (evidence: `server.ts`)
- PostgreSQL → Database Schema: uses (evidence: `src/db/index.ts`)
- Client Records → Domain Formatters: formats records (evidence: `src/components/ClientDetailModal.tsx`)
- Boleto Generation → Domain Formatters: formats billing (evidence: `src/components/BoletoGeneratorView.tsx`)
- Payment Receipt → Domain Formatters: formats receipt (evidence: `src/components/PaymentReceiptModal.tsx`)
- Medical Guides → Domain Formatters: formats guides (evidence: `src/components/MedicalGuideView.tsx`)
- User Management → API Client: manages users via (evidence: `src/components/UsersManagementView.tsx`)
