# aladinfamili20/sundayschool architecture

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

- Interactive diagram: https://gitdiagram.com/aladinfamili20/sundayschool
- Repository: https://github.com/aladinfamili20/sundayschool

## Overview

This is a Java Swing Sunday-school administration application backed by a MySQL database. The observed workflow starts at login, then proceeds through address and adult records; church and class entry leads into child notes. Separate forms manage children, child-address history, churches, contributor roles, and account registration. The graph includes the schema and documented form lookups. Source excerpts are partial, and the imported DatabaseConnection implementation is not present in the supplied tree, so database connectivity is shown only as an external dependency.

Main entry points: [`src/Adults.java`](https://github.com/aladinfamili20/sundayschool/blob/master/src/Adults.java) (Adult records), [`src/SundaySchoolClasses.java`](https://github.com/aladinfamili20/sundayschool/blob/master/src/SundaySchoolClasses.java) (Class records), [`src/LoginForm.java`](https://github.com/aladinfamili20/sundayschool/blob/master/src/LoginForm.java) (Login form), [`src/Address.java`](https://github.com/aladinfamili20/sundayschool/blob/master/src/Address.java) (Address entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Account access"]
  node_main["Application entry<br/>[Main.java]"]
  node_menu["Navigation menu<br/>[Menu.java]"]
  node_login["Login form<br/>[LoginForm.java]"]
  node_registration["Registration form<br/>[Registration.java]"]
end

subgraph group_community["People and places"]
  node_address["Address entry<br/>[Address.java]"]
  node_adults["Adult records<br/>[Adults.java]"]
  node_children["Child records<br/>[Children.java]"]
  node_churches["Church records<br/>[Churches.java]"]
  node_childaddress["Child address history"]
  node_roles["Contributor roles"]
end

subgraph group_program["School records"]
  node_classes["Class records"]
  node_notes["Child notes"]
end

subgraph group_storage["Persistence"]
  node_schema["Database schema<br/>[sundayschool.sql]"]
  node_mysql[("MySQL database")]
end

node_user(("User"))

node_user -->|"starts"| node_main
node_main -->|"opens"| node_login
node_user -->|"uses"| node_menu
node_menu -->|"opens"| node_login
node_menu -->|"opens"| node_registration
node_registration -->|"writes account"| node_mysql
node_registration -->|"opens"| node_login
node_login -->|"checks credentials"| node_mysql
node_login -->|"opens"| node_address
node_address -->|"writes address"| node_mysql
node_address -->|"opens"| node_adults
node_adults -->|"reads and writes"| node_mysql
node_adults -->|"loads address choices"| node_address
node_adults -->|"loads role choices"| node_roles
node_roles -->|"writes role"| node_mysql
node_children -->|"reads and writes"| node_mysql
node_children -->|"loads adult choices"| node_adults
node_childaddress -->|"reads and writes"| node_mysql
node_childaddress -->|"loads child choices"| node_children
node_childaddress -->|"loads address choices"| node_address
node_churches -->|"writes church"| node_mysql
node_churches -->|"opens"| node_classes
node_classes -->|"reads and writes"| node_mysql
node_classes -->|"loads church choices"| node_churches
node_classes -->|"loads teacher choices"| node_adults
node_classes -->|"opens"| node_notes
node_notes -->|"reads and writes"| node_mysql
node_notes -->|"loads child choices"| node_children
node_notes -->|"loads adult choices"| node_adults
node_schema -->|"defines schema"| node_mysql

click node_main "https://github.com/aladinfamili20/sundayschool/blob/master/src/Main.java"
click node_menu "https://github.com/aladinfamili20/sundayschool/blob/master/src/Menu.java"
click node_login "https://github.com/aladinfamili20/sundayschool/blob/master/src/LoginForm.java"
click node_registration "https://github.com/aladinfamili20/sundayschool/blob/master/src/Registration.java"
click node_address "https://github.com/aladinfamili20/sundayschool/blob/master/src/Address.java"
click node_adults "https://github.com/aladinfamili20/sundayschool/blob/master/src/Adults.java"
click node_children "https://github.com/aladinfamili20/sundayschool/blob/master/src/Children.java"
click node_churches "https://github.com/aladinfamili20/sundayschool/blob/master/src/Churches.java"
click node_childaddress "https://github.com/aladinfamili20/sundayschool/blob/master/src/ChildrenAddress.java"
click node_roles "https://github.com/aladinfamili20/sundayschool/blob/master/src/ContributorRoles.java"
click node_classes "https://github.com/aladinfamili20/sundayschool/blob/master/src/SundaySchoolClasses.java"
click node_notes "https://github.com/aladinfamili20/sundayschool/blob/master/src/NotesOnChildren.java"
click node_schema "https://github.com/aladinfamili20/sundayschool/blob/master/sundayschool.sql"

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_menu,node_login,node_registration,node_user toneBlue
class node_address,node_adults,node_children,node_churches,node_childaddress,node_roles toneAmber
class node_classes,node_notes toneMint
class node_schema,node_mysql toneRose
```

## Components

### Account access

- [Application entry](https://github.com/aladinfamili20/sundayschool/blob/master/src/Main.java): `src/Main.java`
- [Navigation menu](https://github.com/aladinfamili20/sundayschool/blob/master/src/Menu.java): `src/Menu.java`
- [Login form](https://github.com/aladinfamili20/sundayschool/blob/master/src/LoginForm.java): `src/LoginForm.java`
- [Registration form](https://github.com/aladinfamili20/sundayschool/blob/master/src/Registration.java): `src/Registration.java`

### People and places

- [Address entry](https://github.com/aladinfamili20/sundayschool/blob/master/src/Address.java): `src/Address.java`
- [Adult records](https://github.com/aladinfamili20/sundayschool/blob/master/src/Adults.java): `src/Adults.java`
- [Child records](https://github.com/aladinfamili20/sundayschool/blob/master/src/Children.java): `src/Children.java`
- [Church records](https://github.com/aladinfamili20/sundayschool/blob/master/src/Churches.java): `src/Churches.java`
- [Child address history](https://github.com/aladinfamili20/sundayschool/blob/master/src/ChildrenAddress.java): `src/ChildrenAddress.java`
- [Contributor roles](https://github.com/aladinfamili20/sundayschool/blob/master/src/ContributorRoles.java): `src/ContributorRoles.java`

### School records

- [Class records](https://github.com/aladinfamili20/sundayschool/blob/master/src/SundaySchoolClasses.java): `src/SundaySchoolClasses.java`
- [Child notes](https://github.com/aladinfamili20/sundayschool/blob/master/src/NotesOnChildren.java): `src/NotesOnChildren.java`

### Persistence

- [Database schema](https://github.com/aladinfamili20/sundayschool/blob/master/sundayschool.sql): `sundayschool.sql`
- **MySQL database**

### Other components

- **User**

## Connections

- User → Application entry: starts
- Application entry → Login form: opens
- User → Navigation menu: uses
- Navigation menu → Login form: opens
- Navigation menu → Registration form: opens
- Registration form → MySQL database: writes account
- Registration form → Login form: opens
- Login form → MySQL database: checks credentials
- Login form → Address entry: opens
- Address entry → MySQL database: writes address
- Address entry → Adult records: opens
- Adult records → MySQL database: reads and writes
- Adult records → Address entry: loads address choices
- Adult records → Contributor roles: loads role choices
- Contributor roles → MySQL database: writes role
- Child records → MySQL database: reads and writes
- Child records → Adult records: loads adult choices
- Child address history → MySQL database: reads and writes
- Child address history → Child records: loads child choices
- Child address history → Address entry: loads address choices
- Church records → MySQL database: writes church
- Church records → Class records: opens
- Class records → MySQL database: reads and writes
- Class records → Church records: loads church choices
- Class records → Adult records: loads teacher choices
- Class records → Child notes: opens
- Child notes → MySQL database: reads and writes
- Child notes → Child records: loads child choices
- Child notes → Adult records: loads adult choices
- Database schema → MySQL database: defines schema
