# litoy-tech/gabasa_it2b_sarisariutangtrack architecture

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

- Interactive diagram: https://gitdiagram.com/litoy-tech/gabasa_it2b_sarisariutangtrack
- Repository: https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack

## Overview

SariSariUtangTrack is a Java console application for a small store: users register or log in, then access role-specific menus for administration, cashier sales, customer functions, or auditing. Its DAOs persist users, customers, products, sales, and audit records in SQLite. The excerpts show startup, authentication dispatch, and several DAO/database interactions; menu-to-DAO links below are dashed where the available evidence identifies dependencies but does not show the individual calls.

Main entry points: [`src/main/java/com/scc/ui/admin/AdminMenu.java`](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/AdminMenu.java) (Admin workflows), [`src/main/java/com/scc/dao/AuditLogDao.java`](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/AuditLogDao.java) (Audit logging), [`src/main/java/com/scc/ui/Authentication.java`](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/Authentication.java) (Authentication), [`src/main/java/com/scc/dao/SalesDao.java`](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/SalesDao.java) (Sales data access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Startup and access"]
  node_main["Application startup<br/>[Main.java]"]
  node_auth["Authentication"]
end

subgraph group_roles["Role workflows"]
  node_admin["Admin workflows<br/>[AdminMenu.java]"]
  node_customer_mgmt["Customer management"]
  node_product_mgmt["Product management"]
  node_user_mgmt["User management"]
  node_cashier["Cashier sales<br/>[CashierMenu.java]"]
  node_customer_menu["Customer functions<br/>[CustomerMenu.java]"]
  node_auditor["Audit workflows"]
end

subgraph group_data["Store data"]
  node_users["User records<br/>[User.java]"]
  node_customers["Customer records<br/>[Customer.java]"]
  node_products["Product records<br/>[Product.java]"]
  node_sales["Sales records<br/>[Sales.java]"]
  node_sale_items["Sale line items<br/>[SalesItem.java]"]
  node_audit_record["Audit records<br/>[Audit.java]"]
end

subgraph group_persistence["Persistence"]
  node_user_dao["User access<br/>[UserDao.java]"]
  node_customer_dao["Customer data access<br/>[CustomerDao.java]"]
  node_product_dao["Product data access<br/>[ProductDao.java]"]
  node_sales_dao["Sales data access<br/>[SalesDao.java]"]
  node_audit_dao["Audit logging<br/>[AuditLogDao.java]"]
  node_initializer["Database setup"]
  node_connection["SQLite connection"]
  node_sqlite[("SQLite database")]
end

node_operator(("Store user"))

node_operator -->|"starts"| node_main
node_main -->|"initializes"| node_initializer
node_main -->|"starts"| node_auth
node_auth -->|"authenticates and registers"| node_user_dao
node_auth -->|"dispatches role"| node_admin
node_auth -->|"dispatches role"| node_cashier
node_auth -->|"dispatches role"| node_customer_menu
node_auth -->|"dispatches role"| node_auditor
node_auth -->|"records login events"| node_audit_dao
node_admin -.->|"delegates to"| node_customer_mgmt
node_admin -.->|"delegates to"| node_product_mgmt
node_admin -.->|"delegates to"| node_user_mgmt
node_admin -.->|"uses"| node_customer_dao
node_admin -.->|"uses"| node_product_dao
node_admin -.->|"uses"| node_sales_dao
node_admin -.->|"uses"| node_user_dao
node_admin -.->|"uses"| node_audit_dao
node_customer_mgmt -.->|"uses"| node_customer_dao
node_customer_mgmt -.->|"uses"| node_audit_dao
node_product_mgmt -.->|"uses"| node_product_dao
node_product_mgmt -.->|"uses"| node_audit_dao
node_user_mgmt -.->|"uses"| node_user_dao
node_user_mgmt -.->|"uses"| node_audit_dao
node_cashier -.->|"uses"| node_product_dao
node_cashier -.->|"uses"| node_customer_dao
node_cashier -.->|"uses"| node_sales_dao
node_cashier -.->|"uses"| node_audit_dao
node_customer_menu -.->|"uses"| node_customer_dao
node_customer_menu -.->|"uses"| node_product_dao
node_customer_menu -.->|"uses"| node_sales_dao
node_customer_menu -.->|"uses"| node_audit_dao
node_auditor -.->|"uses"| node_audit_dao
node_auditor -.->|"uses"| node_customer_dao
node_auditor -.->|"uses"| node_product_dao
node_auditor -.->|"uses"| node_sales_dao
node_auditor -.->|"uses"| node_user_dao
node_user_dao -->|"maps records"| node_users
node_customer_dao -->|"maps records"| node_customers
node_product_dao -->|"maps records"| node_products
node_sales_dao -->|"maps records"| node_sales
node_sales_dao -->|"maps items"| node_sale_items
node_audit_dao -->|"maps records"| node_audit_record
node_user_dao -->|"opens connection"| node_connection
node_customer_dao -->|"opens connection"| node_connection
node_product_dao -->|"opens connection"| node_connection
node_sales_dao -->|"opens connection"| node_connection
node_audit_dao -->|"opens connection"| node_connection
node_initializer -.->|"opens connection"| node_connection

click node_main "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/Main.java"
click node_auth "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/Authentication.java"
click node_admin "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/AdminMenu.java"
click node_customer_mgmt "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/CustomerManagement.java"
click node_product_mgmt "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/ProductManagement.java"
click node_user_mgmt "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/UserManagement.java"
click node_cashier "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/cashier/CashierMenu.java"
click node_customer_menu "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/customer/CustomerMenu.java"
click node_auditor "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/systemAuditor/SystemAuditorMenu.java"
click node_users "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/User.java"
click node_customers "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/Customer.java"
click node_products "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/Product.java"
click node_sales "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/Sales.java"
click node_sale_items "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/SalesItem.java"
click node_audit_record "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/Audit.java"
click node_user_dao "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/UserDao.java"
click node_customer_dao "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/CustomerDao.java"
click node_product_dao "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/ProductDao.java"
click node_sales_dao "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/SalesDao.java"
click node_audit_dao "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/AuditLogDao.java"
click node_initializer "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/DatabaseInitializer.java"
click node_connection "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/DatabaseConnection.java"
click node_sqlite "https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/SariSariUtangTrack.db"

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_main,node_auth,node_operator toneBlue
class node_admin,node_customer_mgmt,node_product_mgmt,node_user_mgmt,node_cashier,node_customer_menu,node_auditor toneAmber
class node_users,node_customers,node_products,node_sales,node_sale_items,node_audit_record toneMint
class node_user_dao,node_customer_dao,node_product_dao,node_sales_dao,node_audit_dao,node_initializer,node_connection,node_sqlite toneRose
```

## Components

### Startup and access

- [Application startup](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/Main.java): `src/main/java/com/scc/Main.java`
- [Authentication](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/Authentication.java): `src/main/java/com/scc/ui/Authentication.java`

### Role workflows

- [Admin workflows](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/AdminMenu.java): `src/main/java/com/scc/ui/admin/AdminMenu.java`
- [Customer management](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/CustomerManagement.java): `src/main/java/com/scc/ui/admin/CustomerManagement.java`
- [Product management](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/ProductManagement.java): `src/main/java/com/scc/ui/admin/ProductManagement.java`
- [User management](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/admin/UserManagement.java): `src/main/java/com/scc/ui/admin/UserManagement.java`
- [Cashier sales](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/cashier/CashierMenu.java): `src/main/java/com/scc/ui/cashier/CashierMenu.java`
- [Customer functions](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/customer/CustomerMenu.java): `src/main/java/com/scc/ui/customer/CustomerMenu.java`
- [Audit workflows](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/ui/systemAuditor/SystemAuditorMenu.java): `src/main/java/com/scc/ui/systemAuditor/SystemAuditorMenu.java`

### Store data

- [User records](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/User.java): `src/main/java/com/scc/model/User.java`
- [Customer records](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/Customer.java): `src/main/java/com/scc/model/Customer.java`
- [Product records](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/Product.java): `src/main/java/com/scc/model/Product.java`
- [Sales records](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/Sales.java): `src/main/java/com/scc/model/Sales.java`
- [Sale line items](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/SalesItem.java): `src/main/java/com/scc/model/SalesItem.java`
- [Audit records](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/model/Audit.java): `src/main/java/com/scc/model/Audit.java`

### Persistence

- [User access](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/UserDao.java): `src/main/java/com/scc/dao/UserDao.java`
- [Customer data access](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/CustomerDao.java): `src/main/java/com/scc/dao/CustomerDao.java`
- [Product data access](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/ProductDao.java): `src/main/java/com/scc/dao/ProductDao.java`
- [Sales data access](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/SalesDao.java): `src/main/java/com/scc/dao/SalesDao.java`
- [Audit logging](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/AuditLogDao.java): `src/main/java/com/scc/dao/AuditLogDao.java`
- [Database setup](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/DatabaseInitializer.java): `src/main/java/com/scc/dao/DatabaseInitializer.java`
- [SQLite connection](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/src/main/java/com/scc/dao/DatabaseConnection.java): `src/main/java/com/scc/dao/DatabaseConnection.java`
- [SQLite database](https://github.com/litoy-tech/gabasa_it2b_sarisariutangtrack/blob/master/SariSariUtangTrack.db): `SariSariUtangTrack.db`

### Other components

- **Store user**

## Connections

- Store user → Application startup: starts (evidence: `src/main/java/com/scc/Main.java`)
- Application startup → Database setup: initializes (evidence: `src/main/java/com/scc/Main.java`)
- Application startup → Authentication: starts (evidence: `src/main/java/com/scc/Main.java`)
- Authentication → User access: authenticates and registers (evidence: `src/main/java/com/scc/ui/Authentication.java`)
- Authentication → Admin workflows: dispatches role (evidence: `src/main/java/com/scc/ui/Authentication.java`)
- Authentication → Cashier sales: dispatches role (evidence: `src/main/java/com/scc/ui/Authentication.java`)
- Authentication → Customer functions: dispatches role (evidence: `src/main/java/com/scc/ui/Authentication.java`)
- Authentication → Audit workflows: dispatches role (evidence: `src/main/java/com/scc/ui/Authentication.java`)
- Authentication → Audit logging: records login events (evidence: `src/main/java/com/scc/ui/Authentication.java`)
- Admin workflows → Customer management: delegates to (evidence: `src/main/java/com/scc/ui/admin/AdminMenu.java`)
- Admin workflows → Product management: delegates to (evidence: `src/main/java/com/scc/ui/admin/AdminMenu.java`)
- Admin workflows → User management: delegates to (evidence: `src/main/java/com/scc/ui/admin/AdminMenu.java`)
- Admin workflows → Customer data access: uses (evidence: `src/main/java/com/scc/ui/admin/AdminMenu.java`)
- Admin workflows → Product data access: uses (evidence: `src/main/java/com/scc/ui/admin/AdminMenu.java`)
- Admin workflows → Sales data access: uses (evidence: `src/main/java/com/scc/ui/admin/AdminMenu.java`)
- Admin workflows → User access: uses (evidence: `src/main/java/com/scc/ui/admin/AdminMenu.java`)
- Admin workflows → Audit logging: uses (evidence: `src/main/java/com/scc/ui/admin/AdminMenu.java`)
- Customer management → Customer data access: uses (evidence: `src/main/java/com/scc/ui/admin/CustomerManagement.java`)
- Customer management → Audit logging: uses (evidence: `src/main/java/com/scc/ui/admin/CustomerManagement.java`)
- Product management → Product data access: uses (evidence: `src/main/java/com/scc/ui/admin/ProductManagement.java`)
- Product management → Audit logging: uses (evidence: `src/main/java/com/scc/ui/admin/ProductManagement.java`)
- User management → User access: uses (evidence: `src/main/java/com/scc/ui/admin/UserManagement.java`)
- User management → Audit logging: uses (evidence: `src/main/java/com/scc/ui/admin/UserManagement.java`)
- Cashier sales → Product data access: uses (evidence: `src/main/java/com/scc/ui/cashier/CashierMenu.java`)
- Cashier sales → Customer data access: uses (evidence: `src/main/java/com/scc/ui/cashier/CashierMenu.java`)
- Cashier sales → Sales data access: uses (evidence: `src/main/java/com/scc/ui/cashier/CashierMenu.java`)
- Cashier sales → Audit logging: uses (evidence: `src/main/java/com/scc/ui/cashier/CashierMenu.java`)
- Customer functions → Customer data access: uses (evidence: `src/main/java/com/scc/ui/customer/CustomerMenu.java`)
- Customer functions → Product data access: uses (evidence: `src/main/java/com/scc/ui/customer/CustomerMenu.java`)
- Customer functions → Sales data access: uses (evidence: `src/main/java/com/scc/ui/customer/CustomerMenu.java`)
- Customer functions → Audit logging: uses (evidence: `src/main/java/com/scc/ui/customer/CustomerMenu.java`)
- Audit workflows → Audit logging: uses (evidence: `src/main/java/com/scc/ui/systemAuditor/SystemAuditorMenu.java`)
- Audit workflows → Customer data access: uses (evidence: `src/main/java/com/scc/ui/systemAuditor/SystemAuditorMenu.java`)
- Audit workflows → Product data access: uses (evidence: `src/main/java/com/scc/ui/systemAuditor/SystemAuditorMenu.java`)
- Audit workflows → Sales data access: uses (evidence: `src/main/java/com/scc/ui/systemAuditor/SystemAuditorMenu.java`)
- Audit workflows → User access: uses (evidence: `src/main/java/com/scc/ui/systemAuditor/SystemAuditorMenu.java`)
- User access → User records: maps records (evidence: `src/main/java/com/scc/dao/UserDao.java`)
- Customer data access → Customer records: maps records (evidence: `src/main/java/com/scc/dao/CustomerDao.java`)
- Product data access → Product records: maps records (evidence: `src/main/java/com/scc/dao/ProductDao.java`)
- Sales data access → Sales records: maps records (evidence: `src/main/java/com/scc/dao/SalesDao.java`)
- Sales data access → Sale line items: maps items (evidence: `src/main/java/com/scc/dao/SalesDao.java`)
- Audit logging → Audit records: maps records (evidence: `src/main/java/com/scc/dao/AuditLogDao.java`)
- User access → SQLite connection: opens connection (evidence: `src/main/java/com/scc/dao/UserDao.java`)
- Customer data access → SQLite connection: opens connection (evidence: `src/main/java/com/scc/dao/CustomerDao.java`)
- Product data access → SQLite connection: opens connection (evidence: `src/main/java/com/scc/dao/ProductDao.java`)
- Sales data access → SQLite connection: opens connection (evidence: `src/main/java/com/scc/dao/SalesDao.java`)
- Audit logging → SQLite connection: opens connection (evidence: `src/main/java/com/scc/dao/AuditLogDao.java`)
- Database setup → SQLite connection: opens connection (evidence: `src/main/java/com/scc/dao/DatabaseInitializer.java`)
