# nimbalkar3735/dental-lab-pro architecture

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

- Interactive diagram: https://gitdiagram.com/nimbalkar3735/dental-lab-pro
- Repository: https://github.com/nimbalkar3735/dental-lab-pro

## Overview

Dental Lab Pro is a desktop dental-laboratory management application. Staff sign in, select or manage an account, create doctor-linked patient jobs with treatment items and pricing, track and edit orders, then issue bills of supply and record payments; reports summarize activity for viewing, export, and printing. Settings cover account preferences and database backup/restore. SQLite is split between a master user database and per-account databases. The tree and sampled code support these responsibilities, but not every screen-to-screen transition or DAO call is visible, so uncertain wiring is omitted.

Main entry points: [`src/main/java/com/dentallab/controller/MainController.java`](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/MainController.java) (Main navigation), [`src/main/java/com/dentallab/dao`](https://github.com/nimbalkar3735/dental-lab-pro/tree/main/src/main/java/com/dentallab/dao) (Data access), [`src/main/java/com/dentallab/db/DatabaseManager.java`](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/db/DatabaseManager.java) (Database connections), [`src/main/java/com/dentallab/controller/ReportsController.java`](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/ReportsController.java) (Reports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application and navigation"]
  node_launcher["Application startup<br/>[Launcher.java]"]
  node_mainapp["JavaFX application<br/>[MainApp.java]"]
  node_maincontroller["Main navigation"]
  node_dashboard["Dashboard"]
end

subgraph group_operations["Lab operations"]
  node_doctors["Doctor records"]
  node_neworder["Create job"]
  node_orders["Order tracking"]
  node_prices["Price settings"]
  node_models["Domain records"]
end

subgraph group_finance["Billing and reporting"]
  node_accounts["Account management"]
  node_supplybill["Bill of supply"]
  node_reports["Reports"]
  node_reportexport["Report export"]
  node_print["Print utilities<br/>[PrintUtil.java]"]
end

subgraph group_persistence["Persistence and accounts"]
  node_login["Sign-in"]
  node_dbmanager["Database connections"]
  node_dbinit["Database schema"]
  node_daos["Data access"]
  node_sqlite[("SQLite databases")]
end

subgraph group_support["Settings and backup"]
  node_settings["Preferences"]
  node_backup["Backup and restore"]
  node_autobackup["Scheduled backup"]
  node_files[("Backup files")]
end

node_staff(("Lab staff"))

node_staff -->|"starts"| node_launcher
node_launcher -->|"launches"| node_mainapp
node_mainapp -->|"opens interface"| node_maincontroller
node_staff -->|"signs in"| node_login
node_login -->|"loads account"| node_dbmanager
node_dbmanager -->|"connects"| node_sqlite
node_maincontroller -->|"shows"| node_dashboard
node_maincontroller -->|"opens"| node_login
node_maincontroller -->|"opens"| node_doctors
node_maincontroller -->|"opens"| node_neworder
node_maincontroller -->|"opens"| node_orders
node_maincontroller -->|"opens"| node_supplybill
node_maincontroller -->|"opens"| node_accounts
node_maincontroller -->|"opens"| node_reports
node_maincontroller -->|"opens"| node_settings
node_neworder -->|"reads prices; saves jobs"| node_daos
node_orders -->|"loads and updates jobs"| node_daos
node_doctors -->|"manages doctors"| node_daos
node_prices -->|"manages pricing"| node_daos
node_supplybill -->|"loads delivered jobs"| node_daos
node_accounts -->|"records payments"| node_daos
node_reports -->|"loads report data"| node_daos
node_daos -->|"queries account database"| node_dbmanager
node_dbinit -->|"initializes connections"| node_dbmanager
node_dbinit -->|"creates schema"| node_sqlite
node_daos -->|"maps records"| node_models
node_reports -->|"requests export"| node_reportexport
node_reportexport -->|"queries report data"| node_sqlite
node_reportexport -->|"writes exports"| node_files
node_supplybill -->|"prints bill"| node_print
node_reports -->|"prints report"| node_print
node_settings -->|"restores backup"| node_backup
node_backup -->|"checkpoints or reopens"| node_dbmanager
node_backup -->|"copies database"| node_files
node_autobackup -->|"runs backup"| node_backup
node_autobackup -->|"reads backup settings"| node_dbmanager

click node_launcher "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/Launcher.java"
click node_mainapp "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/MainApp.java"
click node_maincontroller "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/MainController.java"
click node_login "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/LoginController.java"
click node_accounts "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/AccountsController.java"
click node_dashboard "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/DashboardController.java"
click node_doctors "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/DoctorsController.java"
click node_neworder "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/NewOrderController.java"
click node_orders "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/OrdersController.java"
click node_supplybill "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/BillOfSupplyController.java"
click node_prices "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/PriceSettingsController.java"
click node_reports "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/ReportsController.java"
click node_reportexport "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/util/ReportExportService.java"
click node_print "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/util/PrintUtil.java"
click node_settings "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/SettingsController.java"
click node_backup "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/util/DatabaseBackupService.java"
click node_autobackup "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/util/AutoBackupService.java"
click node_dbmanager "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/db/DatabaseManager.java"
click node_dbinit "https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/db/DatabaseInitializer.java"
click node_daos "https://github.com/nimbalkar3735/dental-lab-pro/tree/main/src/main/java/com/dentallab/dao"
click node_models "https://github.com/nimbalkar3735/dental-lab-pro/tree/main/src/main/java/com/dentallab/model"

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_launcher,node_mainapp,node_maincontroller,node_dashboard toneBlue
class node_doctors,node_neworder,node_orders,node_prices,node_models toneAmber
class node_accounts,node_supplybill,node_reports,node_reportexport,node_print toneMint
class node_login,node_dbmanager,node_dbinit,node_daos,node_sqlite toneRose
class node_settings,node_backup,node_autobackup,node_files,node_staff toneIndigo
```

## Components

### Application and navigation

- [Application startup](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/Launcher.java): `src/main/java/com/dentallab/Launcher.java`
- [JavaFX application](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/MainApp.java): `src/main/java/com/dentallab/MainApp.java`
- [Main navigation](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/MainController.java): `src/main/java/com/dentallab/controller/MainController.java`
- [Dashboard](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/DashboardController.java): `src/main/java/com/dentallab/controller/DashboardController.java`

### Lab operations

- [Doctor records](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/DoctorsController.java): `src/main/java/com/dentallab/controller/DoctorsController.java`
- [Create job](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/NewOrderController.java): `src/main/java/com/dentallab/controller/NewOrderController.java`
- [Order tracking](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/OrdersController.java): `src/main/java/com/dentallab/controller/OrdersController.java`
- [Price settings](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/PriceSettingsController.java): `src/main/java/com/dentallab/controller/PriceSettingsController.java`
- [Domain records](https://github.com/nimbalkar3735/dental-lab-pro/tree/main/src/main/java/com/dentallab/model): `src/main/java/com/dentallab/model`

### Billing and reporting

- [Account management](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/AccountsController.java): `src/main/java/com/dentallab/controller/AccountsController.java`
- [Bill of supply](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/BillOfSupplyController.java): `src/main/java/com/dentallab/controller/BillOfSupplyController.java`
- [Reports](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/ReportsController.java): `src/main/java/com/dentallab/controller/ReportsController.java`
- [Report export](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/util/ReportExportService.java): `src/main/java/com/dentallab/util/ReportExportService.java`
- [Print utilities](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/util/PrintUtil.java): `src/main/java/com/dentallab/util/PrintUtil.java`

### Persistence and accounts

- [Sign-in](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/LoginController.java): `src/main/java/com/dentallab/controller/LoginController.java`
- [Database connections](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/db/DatabaseManager.java): `src/main/java/com/dentallab/db/DatabaseManager.java`
- [Database schema](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/db/DatabaseInitializer.java): `src/main/java/com/dentallab/db/DatabaseInitializer.java`
- [Data access](https://github.com/nimbalkar3735/dental-lab-pro/tree/main/src/main/java/com/dentallab/dao): `src/main/java/com/dentallab/dao`
- **SQLite databases**

### Settings and backup

- [Preferences](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/controller/SettingsController.java): `src/main/java/com/dentallab/controller/SettingsController.java`
- [Backup and restore](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/util/DatabaseBackupService.java): `src/main/java/com/dentallab/util/DatabaseBackupService.java`
- [Scheduled backup](https://github.com/nimbalkar3735/dental-lab-pro/blob/main/src/main/java/com/dentallab/util/AutoBackupService.java): `src/main/java/com/dentallab/util/AutoBackupService.java`
- **Backup files**

### Other components

- **Lab staff**

## Connections

- Lab staff → Application startup: starts
- Application startup → JavaFX application: launches
- JavaFX application → Main navigation: opens interface
- Lab staff → Sign-in: signs in
- Sign-in → Database connections: loads account
- Database connections → SQLite databases: connects
- Main navigation → Dashboard: shows
- Main navigation → Sign-in: opens
- Main navigation → Doctor records: opens
- Main navigation → Create job: opens
- Main navigation → Order tracking: opens
- Main navigation → Bill of supply: opens
- Main navigation → Account management: opens
- Main navigation → Reports: opens
- Main navigation → Preferences: opens
- Create job → Data access: reads prices; saves jobs
- Order tracking → Data access: loads and updates jobs
- Doctor records → Data access: manages doctors
- Price settings → Data access: manages pricing
- Bill of supply → Data access: loads delivered jobs
- Account management → Data access: records payments
- Reports → Data access: loads report data
- Data access → Database connections: queries account database
- Database schema → Database connections: initializes connections
- Database schema → SQLite databases: creates schema
- Data access → Domain records: maps records
- Reports → Report export: requests export
- Report export → SQLite databases: queries report data
- Report export → Backup files: writes exports
- Bill of supply → Print utilities: prints bill
- Reports → Print utilities: prints report
- Preferences → Backup and restore: restores backup
- Backup and restore → Database connections: checkpoints or reopens
- Backup and restore → Backup files: copies database
- Scheduled backup → Backup and restore: runs backup
- Scheduled backup → Database connections: reads backup settings
