# shimi1327/bmadojt architecture

> Architecture diagram of the GitHub repository shimi1327/bmadojt, 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/shimi1327/bmadojt
- Repository: https://github.com/shimi1327/bmadojt

## Overview

OJT Route is a role-based OJT management application for students, instructors, and administrators. Students submit required documents and manage attendance; instructors review submissions and attendance-related requests; administrators manage users and operational settings. The map emphasizes those workflows and shared authentication, persistence, and notification layers. The README is empty, so capabilities are inferred from the file tree and source index; several feature implementations were not sampled, and their connections are omitted where not evidenced.

Main entry points: [`public/student`](https://github.com/shimi1327/bmadojt/tree/main/public/student) (Student Portal), [`public/admin`](https://github.com/shimi1327/bmadojt/tree/main/public/admin) (Admin Portal), [`src/Services/EmailService.php`](https://github.com/shimi1327/bmadojt/blob/main/src/Services/EmailService.php) (Email Notifications), [`public/instructor`](https://github.com/shimi1327/bmadojt/tree/main/public/instructor) (Instructor Portal)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Role Interfaces"]
  node_student["Student Portal"]
  node_instructor["Instructor Portal"]
  node_admin["Admin Portal"]
  node_instructor_nav["Instructor Navigation"]
  node_teacher_sidebar["Instructor Sidebar"]
  node_student_sidebar["Student Sidebar"]
  node_admin_sidebar["Admin Sidebar<br/>[sidebar.php]"]
end

subgraph group_identity["Identity and Admin"]
  node_auth["Authentication"]
  node_auth_middleware["Access Control<br/>[AuthMiddleware.php]"]
  node_user_admin["User Management<br/>[UserController.php]"]
  node_user_service["User Operations<br/>[UserService.php]"]
  node_user_model["User Records<br/>[User.php]"]
end

subgraph group_documents["Document Workflow"]
  node_student_docs["Student Documents<br/>[documents.php]"]
  node_document_controller["Document Submission"]
  node_document_service["Document Operations"]
  node_instructor_review["Instructor Review"]
  node_instructor_doc_service["Review Operations"]
  node_document_model["Document Records<br/>[Document.php]"]
end

subgraph group_attendance["Attendance and Requests"]
  node_attendance["Attendance Features"]
  node_attendance_admin["Attendance Reporting"]
  node_forgot_timeout["Timeout Requests"]
  node_forgot_review["Request Review"]
end

subgraph group_shared["Shared Services"]
  node_overdue["Overdue Monitoring<br/>[OverdueService.php]"]
  node_email["Email Notifications<br/>[EmailService.php]"]
  node_templates["Email Templates<br/>[EmailTemplates.php]"]
  node_database[("Application Database<br/>[Database.php]")]
  node_activity["Activity Logging<br/>[ActivityLogger.php]"]
  node_admin_access["Admin Authorization<br/>[AdminAccess.php]"]
end

node_student_actor(("Student"))
node_instructor_actor(("Instructor"))
node_admin_actor(("Administrator"))
node_mail_system(("Mail System"))

node_student_actor -->|"uses portal"| node_student
node_instructor_actor -->|"uses portal"| node_instructor
node_admin_actor -->|"uses portal"| node_admin
node_student -->|"opens documents"| node_student_docs
node_student_docs -->|"uses"| node_document_service
node_instructor -->|"reviews submissions"| node_instructor_review
node_instructor_review -->|"delegates to"| node_instructor_doc_service
node_instructor_review -->|"sends notices"| node_email
node_document_controller -->|"creates records"| node_document_service
node_document_controller -->|"notifies users"| node_email
node_document_controller -->|"checks access"| node_auth_middleware
node_document_service -->|"uses records"| node_document_model
node_instructor_doc_service -->|"uses records"| node_document_model
node_auth_middleware -->|"checks identity"| node_auth
node_auth -->|"loads users"| node_user_model
node_admin -.->|"manages users"| node_user_admin
node_user_admin -->|"delegates to"| node_user_service
node_user_service -->|"uses records"| node_user_model
node_admin -.->|"views reports"| node_attendance_admin
node_attendance_admin -->|"requests reports"| node_attendance
node_student -.->|"records attendance"| node_attendance
node_student -.->|"submits requests"| node_forgot_timeout
node_forgot_timeout -->|"uses review service"| node_forgot_review
node_overdue -->|"sends summaries"| node_email
node_email -->|"renders content"| node_templates
node_email -.->|"sends mail"| node_mail_system
node_student -.->|"renders navigation"| node_student_sidebar
node_instructor -->|"renders header"| node_instructor_nav
node_instructor -->|"renders navigation"| node_teacher_sidebar
node_admin -.->|"renders navigation"| node_admin_sidebar
node_database -->|"stores records"| node_user_model
node_database -->|"stores state"| node_overdue
node_database -->|"stores logs"| node_activity
node_admin -.->|"checks privileges"| node_admin_access

click node_student "https://github.com/shimi1327/bmadojt/tree/main/public/student"
click node_instructor "https://github.com/shimi1327/bmadojt/tree/main/public/instructor"
click node_admin "https://github.com/shimi1327/bmadojt/tree/main/public/admin"
click node_auth "https://github.com/shimi1327/bmadojt/blob/main/src/Services/AuthenticationService.php"
click node_auth_middleware "https://github.com/shimi1327/bmadojt/blob/main/src/Middleware/AuthMiddleware.php"
click node_user_admin "https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/UserController.php"
click node_user_service "https://github.com/shimi1327/bmadojt/blob/main/src/Services/UserService.php"
click node_user_model "https://github.com/shimi1327/bmadojt/blob/main/src/Models/User.php"
click node_student_docs "https://github.com/shimi1327/bmadojt/blob/main/public/student/documents.php"
click node_document_controller "https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/DocumentController.php"
click node_document_service "https://github.com/shimi1327/bmadojt/blob/main/src/Services/DocumentService.php"
click node_instructor_review "https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/InstructorDocumentController.php"
click node_instructor_doc_service "https://github.com/shimi1327/bmadojt/blob/main/src/Services/InstructorDocumentService.php"
click node_document_model "https://github.com/shimi1327/bmadojt/blob/main/src/Models/Document.php"
click node_attendance "https://github.com/shimi1327/bmadojt/blob/main/src/Services/AttendanceService.php"
click node_attendance_admin "https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/AdminAttendanceController.php"
click node_forgot_timeout "https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/ForgotTimeoutController.php"
click node_forgot_review "https://github.com/shimi1327/bmadojt/blob/main/src/Services/ForgotTimeoutReviewService.php"
click node_overdue "https://github.com/shimi1327/bmadojt/blob/main/src/Services/OverdueService.php"
click node_email "https://github.com/shimi1327/bmadojt/blob/main/src/Services/EmailService.php"
click node_templates "https://github.com/shimi1327/bmadojt/blob/main/src/Templates/EmailTemplates.php"
click node_database "https://github.com/shimi1327/bmadojt/blob/main/src/Utils/Database.php"
click node_activity "https://github.com/shimi1327/bmadojt/blob/main/src/Utils/ActivityLogger.php"
click node_admin_access "https://github.com/shimi1327/bmadojt/blob/main/src/Utils/AdminAccess.php"
click node_instructor_nav "https://github.com/shimi1327/bmadojt/blob/main/public/instructor/navigation-header.php"
click node_teacher_sidebar "https://github.com/shimi1327/bmadojt/blob/main/public/instructor/teacher-sidebar.php"
click node_student_sidebar "https://github.com/shimi1327/bmadojt/blob/main/public/student/student-sidebar.php"
click node_admin_sidebar "https://github.com/shimi1327/bmadojt/blob/main/public/admin/sidebar.php"

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_student,node_instructor,node_admin,node_instructor_nav,node_teacher_sidebar,node_student_sidebar,node_admin_sidebar toneBlue
class node_auth,node_auth_middleware,node_user_admin,node_user_service,node_user_model toneAmber
class node_student_docs,node_document_controller,node_document_service,node_instructor_review,node_instructor_doc_service,node_document_model toneMint
class node_attendance,node_attendance_admin,node_forgot_timeout,node_forgot_review toneRose
class node_overdue,node_email,node_templates,node_database,node_activity,node_admin_access,node_student_actor,node_instructor_actor,node_admin_actor,node_mail_system toneIndigo
```

## Components

### Role Interfaces

- [Student Portal](https://github.com/shimi1327/bmadojt/tree/main/public/student): `public/student`
- [Instructor Portal](https://github.com/shimi1327/bmadojt/tree/main/public/instructor): `public/instructor`
- [Admin Portal](https://github.com/shimi1327/bmadojt/tree/main/public/admin): `public/admin`
- [Instructor Navigation](https://github.com/shimi1327/bmadojt/blob/main/public/instructor/navigation-header.php): `public/instructor/navigation-header.php`
- [Instructor Sidebar](https://github.com/shimi1327/bmadojt/blob/main/public/instructor/teacher-sidebar.php): `public/instructor/teacher-sidebar.php`
- [Student Sidebar](https://github.com/shimi1327/bmadojt/blob/main/public/student/student-sidebar.php): `public/student/student-sidebar.php`
- [Admin Sidebar](https://github.com/shimi1327/bmadojt/blob/main/public/admin/sidebar.php): `public/admin/sidebar.php`

### Identity and Admin

- [Authentication](https://github.com/shimi1327/bmadojt/blob/main/src/Services/AuthenticationService.php): `src/Services/AuthenticationService.php`
- [Access Control](https://github.com/shimi1327/bmadojt/blob/main/src/Middleware/AuthMiddleware.php): `src/Middleware/AuthMiddleware.php`
- [User Management](https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/UserController.php): `src/Controllers/UserController.php`
- [User Operations](https://github.com/shimi1327/bmadojt/blob/main/src/Services/UserService.php): `src/Services/UserService.php`
- [User Records](https://github.com/shimi1327/bmadojt/blob/main/src/Models/User.php): `src/Models/User.php`

### Document Workflow

- [Student Documents](https://github.com/shimi1327/bmadojt/blob/main/public/student/documents.php): `public/student/documents.php`
- [Document Submission](https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/DocumentController.php): `src/Controllers/DocumentController.php`
- [Document Operations](https://github.com/shimi1327/bmadojt/blob/main/src/Services/DocumentService.php): `src/Services/DocumentService.php`
- [Instructor Review](https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/InstructorDocumentController.php): `src/Controllers/InstructorDocumentController.php`
- [Review Operations](https://github.com/shimi1327/bmadojt/blob/main/src/Services/InstructorDocumentService.php): `src/Services/InstructorDocumentService.php`
- [Document Records](https://github.com/shimi1327/bmadojt/blob/main/src/Models/Document.php): `src/Models/Document.php`

### Attendance and Requests

- [Attendance Features](https://github.com/shimi1327/bmadojt/blob/main/src/Services/AttendanceService.php): `src/Services/AttendanceService.php`
- [Attendance Reporting](https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/AdminAttendanceController.php): `src/Controllers/AdminAttendanceController.php`
- [Timeout Requests](https://github.com/shimi1327/bmadojt/blob/main/src/Controllers/ForgotTimeoutController.php): `src/Controllers/ForgotTimeoutController.php`
- [Request Review](https://github.com/shimi1327/bmadojt/blob/main/src/Services/ForgotTimeoutReviewService.php): `src/Services/ForgotTimeoutReviewService.php`

### Shared Services

- [Overdue Monitoring](https://github.com/shimi1327/bmadojt/blob/main/src/Services/OverdueService.php): `src/Services/OverdueService.php`
- [Email Notifications](https://github.com/shimi1327/bmadojt/blob/main/src/Services/EmailService.php): `src/Services/EmailService.php`
- [Email Templates](https://github.com/shimi1327/bmadojt/blob/main/src/Templates/EmailTemplates.php): `src/Templates/EmailTemplates.php`
- [Application Database](https://github.com/shimi1327/bmadojt/blob/main/src/Utils/Database.php): `src/Utils/Database.php`
- [Activity Logging](https://github.com/shimi1327/bmadojt/blob/main/src/Utils/ActivityLogger.php): `src/Utils/ActivityLogger.php`
- [Admin Authorization](https://github.com/shimi1327/bmadojt/blob/main/src/Utils/AdminAccess.php): `src/Utils/AdminAccess.php`

### Other components

- **Student**
- **Instructor**
- **Administrator**
- **Mail System**

## Connections

- Student → Student Portal: uses portal
- Instructor → Instructor Portal: uses portal
- Administrator → Admin Portal: uses portal
- Student Portal → Student Documents: opens documents (evidence: `public/student/documents.php`)
- Student Documents → Document Operations: uses (evidence: `public/student/documents.php`)
- Instructor Portal → Instructor Review: reviews submissions (evidence: `public/instructor/review_documents.php`)
- Instructor Review → Review Operations: delegates to (evidence: `src/Controllers/InstructorDocumentController.php`)
- Instructor Review → Email Notifications: sends notices (evidence: `src/Controllers/InstructorDocumentController.php`)
- Document Submission → Document Operations: creates records (evidence: `src/Controllers/DocumentController.php`)
- Document Submission → Email Notifications: notifies users (evidence: `src/Controllers/DocumentController.php`)
- Document Submission → Access Control: checks access (evidence: `src/Controllers/DocumentController.php`)
- Document Operations → Document Records: uses records (evidence: `src/Services/DocumentService.php`)
- Review Operations → Document Records: uses records (evidence: `src/Services/InstructorDocumentService.php`)
- Access Control → Authentication: checks identity (evidence: `src/Middleware/AuthMiddleware.php`)
- Authentication → User Records: loads users (evidence: `src/Services/AuthenticationService.php`)
- Admin Portal → User Management: manages users (evidence: `src/Controllers/UserController.php`)
- User Management → User Operations: delegates to (evidence: `src/Controllers/UserController.php`)
- User Operations → User Records: uses records (evidence: `src/Services/UserService.php`)
- Admin Portal → Attendance Reporting: views reports
- Attendance Reporting → Attendance Features: requests reports (evidence: `src/Controllers/AdminAttendanceController.php`)
- Student Portal → Attendance Features: records attendance
- Student Portal → Timeout Requests: submits requests
- Timeout Requests → Request Review: uses review service (evidence: `src/Controllers/ForgotTimeoutController.php`)
- Overdue Monitoring → Email Notifications: sends summaries (evidence: `cron/check_overdue_documents.php`)
- Email Notifications → Email Templates: renders content (evidence: `src/Services/EmailService.php`)
- Email Notifications → Mail System: sends mail
- Student Portal → Student Sidebar: renders navigation (evidence: `public/student/documents.php`)
- Instructor Portal → Instructor Navigation: renders header (evidence: `public/instructor/review_documents.php`)
- Instructor Portal → Instructor Sidebar: renders navigation (evidence: `public/instructor/review_documents.php`)
- Admin Portal → Admin Sidebar: renders navigation (evidence: `public/admin/users_view.php`)
- Application Database → User Records: stores records (evidence: `src/Models/User.php`)
- Application Database → Overdue Monitoring: stores state (evidence: `src/Services/OverdueService.php`)
- Application Database → Activity Logging: stores logs (evidence: `src/Utils/ActivityLogger.php`)
- Admin Portal → Admin Authorization: checks privileges (evidence: `public/admin/api/get_template_preview.php`)
