# brom016/simpoka architecture

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

- Interactive diagram: https://gitdiagram.com/brom016/simpoka
- Repository: https://github.com/brom016/simpoka

## Overview

SIMPOKA is a Java Swing desktop system for managing organizational activities. Users log in, reach a role-aware dashboard, and manage or search activities; the activity controller coordinates validation and persistence. Reports can be exported to PDF. The README also documents organization and user management, represented here by their DAO layer. Evidence is strongest for the sampled authentication, activity, DAO, and UI relationships; unsampled subsystem links are omitted rather than inferred.

Main entry points: [`src/com/activitymonitor/controller/ActivityController.java`](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/controller/ActivityController.java) (Activity operations), [`src/com/activitymonitor/controller/AuthController.java`](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/controller/AuthController.java) (Authentication), [`src/com/activitymonitor/view/UIConstants.java`](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/UIConstants.java) (Shared UI styling), [`src/com/activitymonitor/view/DashboardFrame.java`](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/DashboardFrame.java) (Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Desktop entry and auth"]
  node_app["Application startup<br/>[App.java]"]
  node_login["Login screen<br/>[LoginFrame.java]"]
  node_auth["Authentication"]
  node_session["User session"]
end

subgraph group_activity["Activity management"]
  node_dashboard["Dashboard"]
  node_activity_controller["Activity operations"]
  node_activity_table["Activity table"]
  node_activity_form["Activity form"]
  node_validator["Input validation"]
end

subgraph group_data["Persistence and domain"]
  node_activity_dao["Activity persistence<br/>[ActivityDAO.java]"]
  node_user_dao["User persistence<br/>[UserDAO.java]"]
  node_organization_dao["Organization persistence"]
  node_activity_model["Activity model<br/>[Activity.java]"]
  node_user_model["User model<br/>[User.java]"]
  node_organization_model["Organization model<br/>[Organization.java]"]
  node_db_connection["JDBC connection<br/>[DBConnection.java]"]
  node_database[("MySQL database<br/>[schema.sql]")]
end

subgraph group_reports["Reports and shared UI"]
  node_pdf_dialog["PDF export dialog"]
  node_pdf_exporter["PDF generation<br/>[PDFExporter.java]"]
  node_ui_constants["Shared UI styling<br/>[UIConstants.java]"]
end

node_user(("User"))

node_user -->|"launches"| node_app
node_app -->|"opens"| node_login
node_login -->|"submits credentials"| node_auth
node_auth -->|"authenticates"| node_user_dao
node_auth -->|"stores user"| node_session
node_auth -->|"opens after login"| node_dashboard
node_auth -->|"initializes"| node_activity_controller
node_dashboard -->|"displays"| node_activity_table
node_activity_table -->|"dispatches actions"| node_activity_controller
node_activity_controller -->|"opens and reads"| node_activity_form
node_activity_controller -->|"validates input"| node_validator
node_activity_controller -->|"runs activity operations"| node_activity_dao
node_activity_controller -->|"loads organization"| node_organization_dao
node_activity_dao -->|"maps records"| node_activity_model
node_user_dao -->|"maps users"| node_user_model
node_organization_dao -->|"maps organizations"| node_organization_model
node_activity_dao -->|"uses connection"| node_db_connection
node_user_dao -->|"uses connection"| node_db_connection
node_organization_dao -->|"uses connection"| node_db_connection
node_db_connection -->|"connects to"| node_database
node_user -->|"requests export"| node_pdf_dialog
node_dashboard -->|"offers export"| node_pdf_dialog
node_activity_controller -->|"exports activities"| node_pdf_exporter
node_pdf_exporter -->|"renders activity data"| node_activity_model
node_pdf_exporter -->|"includes organization"| node_organization_model
node_activity_table -->|"uses styling"| node_ui_constants
node_activity_form -->|"uses styling"| node_ui_constants
node_dashboard -->|"uses styling"| node_ui_constants
node_login -->|"uses styling"| node_ui_constants
node_pdf_dialog -->|"uses styling"| node_ui_constants

click node_app "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/App.java"
click node_login "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/LoginFrame.java"
click node_auth "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/controller/AuthController.java"
click node_session "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/util/SessionManager.java"
click node_dashboard "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/DashboardFrame.java"
click node_activity_controller "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/controller/ActivityController.java"
click node_activity_table "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/ActivityTablePanel.java"
click node_activity_form "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/ActivityFormPanel.java"
click node_validator "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/util/InputValidator.java"
click node_activity_dao "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/dao/ActivityDAO.java"
click node_user_dao "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/dao/UserDAO.java"
click node_organization_dao "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/dao/OrganizationDAO.java"
click node_activity_model "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/model/Activity.java"
click node_user_model "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/model/User.java"
click node_organization_model "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/model/Organization.java"
click node_db_connection "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/util/DBConnection.java"
click node_database "https://github.com/brom016/simpoka/blob/master/db/schema.sql"
click node_pdf_dialog "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/ExportPDFDialog.java"
click node_pdf_exporter "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/util/PDFExporter.java"
click node_ui_constants "https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/UIConstants.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_app,node_login,node_auth,node_session,node_user toneBlue
class node_dashboard,node_activity_controller,node_activity_table,node_activity_form,node_validator toneAmber
class node_activity_dao,node_user_dao,node_organization_dao,node_activity_model,node_user_model,node_organization_model,node_db_connection,node_database toneMint
class node_pdf_dialog,node_pdf_exporter,node_ui_constants toneRose
```

## Components

### Desktop entry and auth

- [Application startup](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/App.java): `src/com/activitymonitor/App.java`
- [Login screen](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/LoginFrame.java): `src/com/activitymonitor/view/LoginFrame.java`
- [Authentication](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/controller/AuthController.java): `src/com/activitymonitor/controller/AuthController.java`
- [User session](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/util/SessionManager.java): `src/com/activitymonitor/util/SessionManager.java`

### Activity management

- [Dashboard](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/DashboardFrame.java): `src/com/activitymonitor/view/DashboardFrame.java`
- [Activity operations](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/controller/ActivityController.java): `src/com/activitymonitor/controller/ActivityController.java`
- [Activity table](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/ActivityTablePanel.java): `src/com/activitymonitor/view/ActivityTablePanel.java`
- [Activity form](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/ActivityFormPanel.java): `src/com/activitymonitor/view/ActivityFormPanel.java`
- [Input validation](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/util/InputValidator.java): `src/com/activitymonitor/util/InputValidator.java`

### Persistence and domain

- [Activity persistence](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/dao/ActivityDAO.java): `src/com/activitymonitor/dao/ActivityDAO.java`
- [User persistence](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/dao/UserDAO.java): `src/com/activitymonitor/dao/UserDAO.java`
- [Organization persistence](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/dao/OrganizationDAO.java): `src/com/activitymonitor/dao/OrganizationDAO.java`
- [Activity model](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/model/Activity.java): `src/com/activitymonitor/model/Activity.java`
- [User model](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/model/User.java): `src/com/activitymonitor/model/User.java`
- [Organization model](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/model/Organization.java): `src/com/activitymonitor/model/Organization.java`
- [JDBC connection](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/util/DBConnection.java): `src/com/activitymonitor/util/DBConnection.java`
- [MySQL database](https://github.com/brom016/simpoka/blob/master/db/schema.sql): `db/schema.sql`

### Reports and shared UI

- [PDF export dialog](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/ExportPDFDialog.java): `src/com/activitymonitor/view/ExportPDFDialog.java`
- [PDF generation](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/util/PDFExporter.java): `src/com/activitymonitor/util/PDFExporter.java`
- [Shared UI styling](https://github.com/brom016/simpoka/blob/master/src/com/activitymonitor/view/UIConstants.java): `src/com/activitymonitor/view/UIConstants.java`

### Other components

- **User**

## Connections

- User → Application startup: launches (evidence: `README.md`)
- Application startup → Login screen: opens (evidence: `src/com/activitymonitor/App.java`)
- Login screen → Authentication: submits credentials (evidence: `src/com/activitymonitor/controller/AuthController.java`)
- Authentication → User persistence: authenticates (evidence: `src/com/activitymonitor/controller/AuthController.java`)
- Authentication → User session: stores user (evidence: `src/com/activitymonitor/controller/AuthController.java`)
- Authentication → Dashboard: opens after login (evidence: `src/com/activitymonitor/controller/AuthController.java`)
- Authentication → Activity operations: initializes (evidence: `src/com/activitymonitor/controller/AuthController.java`)
- Dashboard → Activity table: displays (evidence: `src/com/activitymonitor/view/DashboardFrame.java`)
- Activity table → Activity operations: dispatches actions (evidence: `src/com/activitymonitor/controller/ActivityController.java`)
- Activity operations → Activity form: opens and reads (evidence: `src/com/activitymonitor/controller/ActivityController.java`)
- Activity operations → Input validation: validates input (evidence: `src/com/activitymonitor/controller/ActivityController.java`)
- Activity operations → Activity persistence: runs activity operations (evidence: `src/com/activitymonitor/controller/ActivityController.java`)
- Activity operations → Organization persistence: loads organization (evidence: `src/com/activitymonitor/controller/ActivityController.java`)
- Activity persistence → Activity model: maps records (evidence: `src/com/activitymonitor/dao/ActivityDAO.java`)
- User persistence → User model: maps users (evidence: `src/com/activitymonitor/dao/UserDAO.java`)
- Organization persistence → Organization model: maps organizations (evidence: `src/com/activitymonitor/dao/OrganizationDAO.java`)
- Activity persistence → JDBC connection: uses connection (evidence: `src/com/activitymonitor/dao/ActivityDAO.java`)
- User persistence → JDBC connection: uses connection (evidence: `src/com/activitymonitor/dao/UserDAO.java`)
- Organization persistence → JDBC connection: uses connection (evidence: `src/com/activitymonitor/dao/OrganizationDAO.java`)
- JDBC connection → MySQL database: connects to (evidence: `src/com/activitymonitor/util/DBConnection.java`)
- User → PDF export dialog: requests export (evidence: `README.md`)
- Dashboard → PDF export dialog: offers export (evidence: `README.md`)
- Activity operations → PDF generation: exports activities (evidence: `src/com/activitymonitor/controller/ActivityController.java`)
- PDF generation → Activity model: renders activity data (evidence: `src/com/activitymonitor/util/PDFExporter.java`)
- PDF generation → Organization model: includes organization (evidence: `src/com/activitymonitor/util/PDFExporter.java`)
- Activity table → Shared UI styling: uses styling (evidence: `src/com/activitymonitor/view/ActivityTablePanel.java`)
- Activity form → Shared UI styling: uses styling (evidence: `src/com/activitymonitor/view/ActivityFormPanel.java`)
- Dashboard → Shared UI styling: uses styling (evidence: `src/com/activitymonitor/view/DashboardFrame.java`)
- Login screen → Shared UI styling: uses styling (evidence: `src/com/activitymonitor/view/LoginFrame.java`)
- PDF export dialog → Shared UI styling: uses styling (evidence: `src/com/activitymonitor/view/ExportPDFDialog.java`)
