# itsaugustine04/smart-course-registration architecture

> Architecture diagram of the GitHub repository itsaugustine04/smart-course-registration, 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/itsaugustine04/smart-course-registration
- Repository: https://github.com/itsaugustine04/smart-course-registration

## Overview

Smart Course Registration is a JavaFX university-management app. Users enter through login or signup, then role-specific dashboards support course enrollment and payment, faculty academic work, and administrator course and schedule management. Business services apply enrollment checks and coordinate persistence. The README documents grades, attendance, materials, and schedule-conflict detection; some of those implementations were not sampled, so their internal wiring is shown only where supported by the tree or excerpts.

Main entry points: [`src/main/java/com/smartcourse/dao`](https://github.com/itsaugustine04/smart-course-registration/tree/main/src/main/java/com/smartcourse/dao) (Domain data access), [`src/main/java/com/smartcourse/controller/StudentDashboardController.java`](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/StudentDashboardController.java) (Student dashboard), [`src/main/java/com/smartcourse/service/RegistrationService.java`](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/RegistrationService.java) (Enrollment and payment), [`src/main/java/com/smartcourse/service/CourseService.java`](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/CourseService.java) (Course services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["JavaFX interface"]
  node_app["Application startup<br/>[App.java]"]
  node_scene["Scene navigation<br/>[SceneManager.java]"]
  node_login["Login screen"]
  node_signup["Signup screen"]
  node_student["Student dashboard"]
  node_faculty["Faculty dashboard"]
  node_admin["Admin dashboard"]
end

subgraph group_services["Business services"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_courses["Course services<br/>[CourseService.java]"]
  node_registration["Enrollment and payment"]
  node_academic["Grades and attendance"]
  node_schedule["Scheduling"]
  node_materials["Course materials"]
end

subgraph group_data["Persistence"]
  node_userdao["User data access<br/>[UserDAO.java]"]
  node_daos["Domain data access"]
  node_database[("SQLite database")]
end

node_user(("User"))

node_user -->|"launches"| node_app
node_app -->|"initializes"| node_database
node_app -->|"loads login"| node_login
node_login -->|"authenticates"| node_auth
node_signup -->|"registers account"| node_auth
node_login -->|"navigates"| node_scene
node_signup -->|"returns to login"| node_scene
node_auth -->|"reads and writes"| node_userdao
node_student -->|"browses courses"| node_courses
node_student -->|"requests enrollment"| node_registration
node_student -->|"views records"| node_academic
node_student -->|"views schedule"| node_schedule
node_student -->|"views materials"| node_materials
node_registration -->|"checks eligibility"| node_courses
node_registration -->|"records enrollment and payment"| node_daos
node_registration -->|"updates seat and academic records"| node_daos
node_faculty -->|"records grades and attendance"| node_academic
node_faculty -->|"views schedule"| node_schedule
node_faculty -->|"manages materials"| node_materials
node_admin -->|"manages courses"| node_courses
node_admin -->|"manages schedules"| node_schedule
node_admin -->|"reviews enrollments"| node_registration
node_courses -->|"reads and writes"| node_daos
node_academic -->|"reads and writes"| node_daos
node_schedule -->|"reads and writes"| node_daos
node_materials -->|"persists materials"| node_daos
node_userdao -->|"queries"| node_database
node_daos -->|"queries"| node_database

click node_app "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/App.java"
click node_scene "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/util/SceneManager.java"
click node_login "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/LoginController.java"
click node_signup "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/SignupController.java"
click node_student "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/StudentDashboardController.java"
click node_faculty "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/FacultyDashboardController.java"
click node_admin "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/AdminDashboardController.java"
click node_auth "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/AuthService.java"
click node_courses "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/CourseService.java"
click node_registration "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/RegistrationService.java"
click node_academic "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/AcademicService.java"
click node_schedule "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/ScheduleService.java"
click node_materials "https://github.com/itsaugustine04/smart-course-registration/tree/main/src/main/java/com/smartcourse/service"
click node_userdao "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/dao/UserDAO.java"
click node_daos "https://github.com/itsaugustine04/smart-course-registration/tree/main/src/main/java/com/smartcourse/dao"
click node_database "https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/dao/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_app,node_scene,node_login,node_signup,node_student,node_faculty,node_admin,node_user toneBlue
class node_auth,node_courses,node_registration,node_academic,node_schedule,node_materials toneAmber
class node_userdao,node_daos,node_database toneMint
```

## Components

### JavaFX interface

- [Application startup](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/App.java): `src/main/java/com/smartcourse/App.java`
- [Scene navigation](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/util/SceneManager.java): `src/main/java/com/smartcourse/util/SceneManager.java`
- [Login screen](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/LoginController.java): `src/main/java/com/smartcourse/controller/LoginController.java`
- [Signup screen](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/SignupController.java): `src/main/java/com/smartcourse/controller/SignupController.java`
- [Student dashboard](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/StudentDashboardController.java): `src/main/java/com/smartcourse/controller/StudentDashboardController.java`
- [Faculty dashboard](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/FacultyDashboardController.java): `src/main/java/com/smartcourse/controller/FacultyDashboardController.java`
- [Admin dashboard](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/controller/AdminDashboardController.java): `src/main/java/com/smartcourse/controller/AdminDashboardController.java`

### Business services

- [Authentication](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/AuthService.java): `src/main/java/com/smartcourse/service/AuthService.java`
- [Course services](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/CourseService.java): `src/main/java/com/smartcourse/service/CourseService.java`
- [Enrollment and payment](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/RegistrationService.java): `src/main/java/com/smartcourse/service/RegistrationService.java`
- [Grades and attendance](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/AcademicService.java): `src/main/java/com/smartcourse/service/AcademicService.java`
- [Scheduling](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/service/ScheduleService.java): `src/main/java/com/smartcourse/service/ScheduleService.java`
- [Course materials](https://github.com/itsaugustine04/smart-course-registration/tree/main/src/main/java/com/smartcourse/service): `src/main/java/com/smartcourse/service`

### Persistence

- [User data access](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/dao/UserDAO.java): `src/main/java/com/smartcourse/dao/UserDAO.java`
- [Domain data access](https://github.com/itsaugustine04/smart-course-registration/tree/main/src/main/java/com/smartcourse/dao): `src/main/java/com/smartcourse/dao`
- [SQLite database](https://github.com/itsaugustine04/smart-course-registration/blob/main/src/main/java/com/smartcourse/dao/DatabaseManager.java): `src/main/java/com/smartcourse/dao/DatabaseManager.java`

### Other components

- **User**

## Connections

- User → Application startup: launches
- Application startup → SQLite database: initializes
- Application startup → Login screen: loads login
- Login screen → Authentication: authenticates
- Signup screen → Authentication: registers account
- Login screen → Scene navigation: navigates
- Signup screen → Scene navigation: returns to login
- Authentication → User data access: reads and writes
- Student dashboard → Course services: browses courses
- Student dashboard → Enrollment and payment: requests enrollment
- Student dashboard → Grades and attendance: views records
- Student dashboard → Scheduling: views schedule
- Student dashboard → Course materials: views materials
- Enrollment and payment → Course services: checks eligibility
- Enrollment and payment → Domain data access: records enrollment and payment
- Enrollment and payment → Domain data access: updates seat and academic records
- Faculty dashboard → Grades and attendance: records grades and attendance
- Faculty dashboard → Scheduling: views schedule
- Faculty dashboard → Course materials: manages materials
- Admin dashboard → Course services: manages courses
- Admin dashboard → Scheduling: manages schedules
- Admin dashboard → Enrollment and payment: reviews enrollments
- Course services → Domain data access: reads and writes
- Grades and attendance → Domain data access: reads and writes
- Scheduling → Domain data access: reads and writes
- Course materials → Domain data access: persists materials
- User data access → SQLite database: queries
- Domain data access → SQLite database: queries
