# nivekse02/programa_contable architecture

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

- Interactive diagram: https://gitdiagram.com/nivekse02/programa_contable
- Repository: https://github.com/nivekse02/programa_contable

## Overview

ContaNoPortable is a JavaFX desktop accounting system. Users configure the company and accounts, enter balanced journal entries (optionally from templates), then review ledger, inventory, trial-balance and financial-report outputs; they can also export reports and back up or restore data. The graph preserves the documented capability areas and the sampled accounting/data layers. Some view-to-service wiring is not shown in the excerpts, so those links are omitted rather than inferred.

Main entry points: [`src/main/java/com/mycompany/programa_contable/ui/views/MainLayoutView.java`](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/MainLayoutView.java) (Main navigation), [`src/main/java/com/mycompany/programa_contable/db/DatabaseManager.java`](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/db/DatabaseManager.java) (Database manager), [`src/main/java/com/mycompany/programa_contable/MainApp.java`](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/MainApp.java) (Application startup), [`src/main/java/com/mycompany/programa_contable/ui/views/LibroDiarioView.java`](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/LibroDiarioView.java) (Journal entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop application"]
  node_mainapp["Application startup<br/>[MainApp.java]"]
  node_layout["Main navigation"]
end

subgraph group_accounting["Accounting workflows"]
  node_dailyview["Journal entry"]
  node_accountsview["Account catalog"]
  node_configview["Company settings"]
  node_dashboard["Dashboard<br/>[DashboardView.java]"]
  node_majorview["General ledger"]
  node_kardexview["Inventory Kardex<br/>[KardexView.java]"]
  node_trialview["Trial balance"]
  node_balanceview["Balance sheet"]
  node_incomeview["Income statement"]
end

subgraph group_services["Accounting services"]
  node_mayor["Ledger calculation"]
  node_reports["Financial reports"]
  node_kardex["Inventory calculations<br/>[KardexService.java]"]
  node_export["Report export"]
  node_backup["Backup restore<br/>[BackupService.java]"]
end

subgraph group_persistence["Data and persistence"]
  node_presets["Journal templates"]
  node_journaldao["Journal persistence"]
  node_accountdao["Account persistence<br/>[CuentaDAO.java]"]
  node_configdao["Configuration data"]
  node_dbmanager["Database manager"]
  node_database[("Accounting database")]
end

node_user(("Company user"))

node_user -->|"launches"| node_mainapp
node_mainapp -->|"initializes"| node_dbmanager
node_mainapp -->|"opens"| node_layout
node_user -->|"uses"| node_layout
node_layout -->|"navigates"| node_dailyview
node_layout -->|"navigates"| node_accountsview
node_layout -->|"navigates"| node_configview
node_layout -->|"navigates"| node_dashboard
node_layout -->|"navigates"| node_majorview
node_layout -->|"navigates"| node_kardexview
node_layout -->|"navigates"| node_trialview
node_layout -->|"navigates"| node_balanceview
node_layout -->|"navigates"| node_incomeview
node_dailyview -->|"records entries"| node_journaldao
node_dailyview -->|"loads templates"| node_presets
node_accountsview -->|"manages accounts"| node_accountdao
node_journaldao -->|"updates inventory"| node_kardex
node_mayor -->|"reads entries"| node_dbmanager
node_reports -->|"gets ledger"| node_mayor
node_reports -->|"gets cost of sales"| node_kardex
node_journaldao -->|"reads and writes"| node_dbmanager
node_accountdao -->|"reads and writes"| node_dbmanager
node_presets -->|"reads and writes"| node_dbmanager
node_mayor -->|"queries"| node_database
node_kardex -->|"reads and writes"| node_dbmanager
node_backup -->|"exports and restores"| node_dbmanager
node_configdao -->|"reads and writes"| node_dbmanager
node_dbmanager -->|"connects"| node_database
node_user -->|"requests export"| node_export
node_user -->|"requests backup"| node_backup
node_user -->|"sets company options"| node_configview

click node_mainapp "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/MainApp.java"
click node_layout "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/MainLayoutView.java"
click node_dailyview "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/LibroDiarioView.java"
click node_accountsview "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/CatalogoCuentasView.java"
click node_configview "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/ConfiguracionView.java"
click node_dashboard "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/DashboardView.java"
click node_majorview "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/LibroMayorView.java"
click node_kardexview "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/KardexView.java"
click node_trialview "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/BalanzaComprobacionView.java"
click node_balanceview "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/BalanceGeneralView.java"
click node_incomeview "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/EstadoResultadosView.java"
click node_presets "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/dao/AsientoPredefinidoDAO.java"
click node_journaldao "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/dao/LibroDiarioDAO.java"
click node_accountdao "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/dao/CuentaDAO.java"
click node_mayor "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/MayorizacionService.java"
click node_reports "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/ReportesFinancierosService.java"
click node_kardex "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/KardexService.java"
click node_export "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/ExportacionService.java"
click node_backup "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/BackupService.java"
click node_configdao "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/model/ConfiguracionDAO.java"
click node_dbmanager "https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/db/DatabaseManager.java"

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_mainapp,node_layout,node_user toneBlue
class node_dailyview,node_accountsview,node_configview,node_dashboard,node_majorview,node_kardexview,node_trialview,node_balanceview,node_incomeview toneAmber
class node_mayor,node_reports,node_kardex,node_export,node_backup toneMint
class node_presets,node_journaldao,node_accountdao,node_configdao,node_dbmanager,node_database toneRose
```

## Components

### Desktop application

- [Application startup](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/MainApp.java): `src/main/java/com/mycompany/programa_contable/MainApp.java`
- [Main navigation](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/MainLayoutView.java): `src/main/java/com/mycompany/programa_contable/ui/views/MainLayoutView.java`

### Accounting workflows

- [Journal entry](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/LibroDiarioView.java): `src/main/java/com/mycompany/programa_contable/ui/views/LibroDiarioView.java`
- [Account catalog](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/CatalogoCuentasView.java): `src/main/java/com/mycompany/programa_contable/ui/views/CatalogoCuentasView.java`
- [Company settings](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/ConfiguracionView.java): `src/main/java/com/mycompany/programa_contable/ui/views/ConfiguracionView.java`
- [Dashboard](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/DashboardView.java): `src/main/java/com/mycompany/programa_contable/ui/views/DashboardView.java`
- [General ledger](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/LibroMayorView.java): `src/main/java/com/mycompany/programa_contable/ui/views/LibroMayorView.java`
- [Inventory Kardex](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/KardexView.java): `src/main/java/com/mycompany/programa_contable/ui/views/KardexView.java`
- [Trial balance](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/BalanzaComprobacionView.java): `src/main/java/com/mycompany/programa_contable/ui/views/BalanzaComprobacionView.java`
- [Balance sheet](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/BalanceGeneralView.java): `src/main/java/com/mycompany/programa_contable/ui/views/BalanceGeneralView.java`
- [Income statement](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/ui/views/EstadoResultadosView.java): `src/main/java/com/mycompany/programa_contable/ui/views/EstadoResultadosView.java`

### Accounting services

- [Ledger calculation](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/MayorizacionService.java): `src/main/java/com/mycompany/programa_contable/service/MayorizacionService.java`
- [Financial reports](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/ReportesFinancierosService.java): `src/main/java/com/mycompany/programa_contable/service/ReportesFinancierosService.java`
- [Inventory calculations](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/KardexService.java): `src/main/java/com/mycompany/programa_contable/service/KardexService.java`
- [Report export](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/ExportacionService.java): `src/main/java/com/mycompany/programa_contable/service/ExportacionService.java`
- [Backup restore](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/service/BackupService.java): `src/main/java/com/mycompany/programa_contable/service/BackupService.java`

### Data and persistence

- [Journal templates](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/dao/AsientoPredefinidoDAO.java): `src/main/java/com/mycompany/programa_contable/dao/AsientoPredefinidoDAO.java`
- [Journal persistence](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/dao/LibroDiarioDAO.java): `src/main/java/com/mycompany/programa_contable/dao/LibroDiarioDAO.java`
- [Account persistence](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/dao/CuentaDAO.java): `src/main/java/com/mycompany/programa_contable/dao/CuentaDAO.java`
- [Configuration data](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/model/ConfiguracionDAO.java): `src/main/java/com/mycompany/programa_contable/model/ConfiguracionDAO.java`
- [Database manager](https://github.com/nivekse02/programa_contable/blob/master/src/main/java/com/mycompany/programa_contable/db/DatabaseManager.java): `src/main/java/com/mycompany/programa_contable/db/DatabaseManager.java`
- **Accounting database**

### Other components

- **Company user**

## Connections

- Company user → Application startup: launches
- Application startup → Database manager: initializes
- Application startup → Main navigation: opens
- Company user → Main navigation: uses
- Main navigation → Journal entry: navigates
- Main navigation → Account catalog: navigates
- Main navigation → Company settings: navigates
- Main navigation → Dashboard: navigates
- Main navigation → General ledger: navigates
- Main navigation → Inventory Kardex: navigates
- Main navigation → Trial balance: navigates
- Main navigation → Balance sheet: navigates
- Main navigation → Income statement: navigates
- Journal entry → Journal persistence: records entries
- Journal entry → Journal templates: loads templates
- Account catalog → Account persistence: manages accounts
- Journal persistence → Inventory calculations: updates inventory
- Ledger calculation → Database manager: reads entries
- Financial reports → Ledger calculation: gets ledger
- Financial reports → Inventory calculations: gets cost of sales
- Journal persistence → Database manager: reads and writes
- Account persistence → Database manager: reads and writes
- Journal templates → Database manager: reads and writes
- Ledger calculation → Accounting database: queries
- Inventory calculations → Database manager: reads and writes
- Backup restore → Database manager: exports and restores
- Configuration data → Database manager: reads and writes
- Database manager → Accounting database: connects
- Company user → Report export: requests export
- Company user → Backup restore: requests backup
- Company user → Company settings: sets company options
