# ictkece-eng/ronda-almadani architecture

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

- Interactive diagram: https://gitdiagram.com/ictkece-eng/ronda-almadani
- Repository: https://github.com/ictkece-eng/ronda-almadani

## Overview

Ronda Almadani is a PHP web application for publishing ronda schedules and coordinator information, with role-based portals for residents, coordinators, and administrators. The main workflow is residents viewing schedules and submitting schedule or replacement requests; administrators generate schedules and manage users/coordinators, while coordinators review replacement requests and assign backups. A parallel Next.js interface and API are present in the tree. The PHP entry-point excerpts document route dispatch, but many controller/model implementations and the Next.js API handlers were not sampled, so uncertain links are omitted.

Main entry points: [`app/core/Router.php`](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/core/Router.php) (Router), [`app/core/Database.php`](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/core/Database.php) (MySQL database), [`public/index.php`](https://github.com/ictkece-eng/ronda-almadani/blob/main/public/index.php) (PHP routes), [`app/controllers/AdminScheduleController.php`](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminScheduleController.php) (Schedule generation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Request handling"]
  node_php_entry["PHP routes<br/>[index.php]"]
  node_router["Router<br/>[Router.php]"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_next_jadwal_api["Schedule API<br/>[jadwal.js]"]
end

subgraph group_community["Resident experience"]
  node_home["Home display<br/>[HomeController.php]"]
  node_user_requests["Schedule requests"]
  node_replacement_request["Replacement requests"]
  node_views["PHP views"]
  node_next_home["Next schedule page<br/>[index.js]"]
end

subgraph group_operations["Admin operations"]
  node_admin_users["User administration"]
  node_admin_coordinators["Coordinator administration"]
  node_admin_schedules["Schedule generation"]
  node_admin_requests["Request review"]
  node_admin_replacements["Replacement oversight"]
end

subgraph group_coordination["Coordinator workflow"]
  node_coord_replacements["Replacement decisions"]
end

subgraph group_state["Persistence"]
  node_schedule_model["Schedule data<br/>[ScheduleModel.php]"]
  node_request_model["Schedule request data"]
  node_replacement_model["Replacement data"]
  node_users_model["User data<br/>[UserModel.php]"]
  node_coordinator_model["Coordinator data"]
  node_database[("MySQL database<br/>[Database.php]")]
  node_sessions["DB sessions"]
end

node_resident(("Resident"))
node_admin_actor(("Administrator"))
node_coordinator_actor(("Coordinator"))

node_resident -->|"requests pages"| node_php_entry
node_admin_actor -->|"administers"| node_php_entry
node_coordinator_actor -->|"reviews requests"| node_php_entry
node_php_entry -->|"dispatches routes"| node_router
node_router -->|"dispatches login"| node_auth
node_router -->|"dispatches home"| node_home
node_router -->|"dispatches requests"| node_user_requests
node_router -->|"dispatches requests"| node_replacement_request
node_router -->|"dispatches admin"| node_admin_users
node_router -->|"dispatches admin"| node_admin_coordinators
node_router -->|"dispatches admin"| node_admin_schedules
node_router -->|"dispatches review"| node_admin_requests
node_router -->|"dispatches admin"| node_admin_replacements
node_router -->|"dispatches review"| node_coord_replacements
node_user_requests -->|"reads/writes"| node_request_model
node_replacement_request -->|"reads/writes"| node_replacement_model
node_replacement_request -->|"reads schedule"| node_schedule_model
node_admin_users -->|"reads/writes"| node_users_model
node_admin_coordinators -->|"reads/writes"| node_coordinator_model
node_admin_schedules -->|"generates schedules"| node_schedule_model
node_admin_schedules -->|"loads residents"| node_users_model
node_admin_schedules -->|"loads approvals"| node_request_model
node_admin_requests -->|"reviews requests"| node_request_model
node_admin_replacements -->|"manages requests"| node_replacement_model
node_coord_replacements -->|"reviews requests"| node_replacement_model
node_coord_replacements -->|"loads backups"| node_users_model
node_schedule_model -->|"reads/writes"| node_database
node_request_model -->|"reads/writes"| node_database
node_replacement_model -->|"reads/writes"| node_database
node_users_model -->|"reads/writes"| node_database
node_coordinator_model -->|"reads/writes"| node_database
node_php_entry -->|"opens connection"| node_database
node_sessions -->|"reads/writes sessions"| node_database
node_home -->|"renders page"| node_views
node_auth -->|"renders login"| node_views
node_next_home -->|"fetches schedule"| node_next_jadwal_api

click node_php_entry "https://github.com/ictkece-eng/ronda-almadani/blob/main/public/index.php"
click node_router "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/core/Router.php"
click node_auth "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AuthController.php"
click node_home "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/HomeController.php"
click node_user_requests "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/RequestController.php"
click node_replacement_request "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/ReplacementController.php"
click node_schedule_model "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/ScheduleModel.php"
click node_request_model "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/ScheduleRequestModel.php"
click node_replacement_model "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/ReplacementRequestModel.php"
click node_admin_users "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminUserController.php"
click node_admin_coordinators "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminCoordinatorController.php"
click node_admin_schedules "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminScheduleController.php"
click node_admin_requests "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminRequestController.php"
click node_admin_replacements "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminReplacementController.php"
click node_coord_replacements "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/CoordinatorReplacementController.php"
click node_users_model "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/UserModel.php"
click node_coordinator_model "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/CoordinatorModel.php"
click node_database "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/core/Database.php"
click node_sessions "https://github.com/ictkece-eng/ronda-almadani/blob/main/app/core/DbSessionHandler.php"
click node_views "https://github.com/ictkece-eng/ronda-almadani/tree/main/app/views"
click node_next_home "https://github.com/ictkece-eng/ronda-almadani/blob/main/ronda-almadani-NextJS/pages/index.js"
click node_next_jadwal_api "https://github.com/ictkece-eng/ronda-almadani/blob/main/ronda-almadani-NextJS/pages/api/jadwal.js"

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_php_entry,node_router,node_auth,node_next_jadwal_api toneBlue
class node_home,node_user_requests,node_replacement_request,node_views,node_next_home toneAmber
class node_admin_users,node_admin_coordinators,node_admin_schedules,node_admin_requests,node_admin_replacements toneMint
class node_coord_replacements toneRose
class node_schedule_model,node_request_model,node_replacement_model,node_users_model,node_coordinator_model,node_database,node_sessions,node_resident,node_admin_actor,node_coordinator_actor toneIndigo
```

## Components

### Request handling

- [PHP routes](https://github.com/ictkece-eng/ronda-almadani/blob/main/public/index.php): `public/index.php`
- [Router](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/core/Router.php): `app/core/Router.php`
- [Authentication](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AuthController.php): `app/controllers/AuthController.php`
- [Schedule API](https://github.com/ictkece-eng/ronda-almadani/blob/main/ronda-almadani-NextJS/pages/api/jadwal.js): `ronda-almadani-NextJS/pages/api/jadwal.js`

### Resident experience

- [Home display](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/HomeController.php): `app/controllers/HomeController.php`
- [Schedule requests](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/RequestController.php): `app/controllers/RequestController.php`
- [Replacement requests](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/ReplacementController.php): `app/controllers/ReplacementController.php`
- [PHP views](https://github.com/ictkece-eng/ronda-almadani/tree/main/app/views): `app/views`
- [Next schedule page](https://github.com/ictkece-eng/ronda-almadani/blob/main/ronda-almadani-NextJS/pages/index.js): `ronda-almadani-NextJS/pages/index.js`

### Admin operations

- [User administration](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminUserController.php): `app/controllers/AdminUserController.php`
- [Coordinator administration](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminCoordinatorController.php): `app/controllers/AdminCoordinatorController.php`
- [Schedule generation](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminScheduleController.php): `app/controllers/AdminScheduleController.php`
- [Request review](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminRequestController.php): `app/controllers/AdminRequestController.php`
- [Replacement oversight](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/AdminReplacementController.php): `app/controllers/AdminReplacementController.php`

### Coordinator workflow

- [Replacement decisions](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/controllers/CoordinatorReplacementController.php): `app/controllers/CoordinatorReplacementController.php`

### Persistence

- [Schedule data](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/ScheduleModel.php): `app/models/ScheduleModel.php`
- [Schedule request data](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/ScheduleRequestModel.php): `app/models/ScheduleRequestModel.php`
- [Replacement data](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/ReplacementRequestModel.php): `app/models/ReplacementRequestModel.php`
- [User data](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/UserModel.php): `app/models/UserModel.php`
- [Coordinator data](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/models/CoordinatorModel.php): `app/models/CoordinatorModel.php`
- [MySQL database](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/core/Database.php): `app/core/Database.php`
- [DB sessions](https://github.com/ictkece-eng/ronda-almadani/blob/main/app/core/DbSessionHandler.php): `app/core/DbSessionHandler.php`

### Other components

- **Resident**
- **Administrator**
- **Coordinator**

## Connections

- Resident → PHP routes: requests pages
- Administrator → PHP routes: administers
- Coordinator → PHP routes: reviews requests
- PHP routes → Router: dispatches routes
- Router → Authentication: dispatches login
- Router → Home display: dispatches home
- Router → Schedule requests: dispatches requests
- Router → Replacement requests: dispatches requests
- Router → User administration: dispatches admin
- Router → Coordinator administration: dispatches admin
- Router → Schedule generation: dispatches admin
- Router → Request review: dispatches review
- Router → Replacement oversight: dispatches admin
- Router → Replacement decisions: dispatches review
- Schedule requests → Schedule request data: reads/writes
- Replacement requests → Replacement data: reads/writes
- Replacement requests → Schedule data: reads schedule
- User administration → User data: reads/writes
- Coordinator administration → Coordinator data: reads/writes
- Schedule generation → Schedule data: generates schedules
- Schedule generation → User data: loads residents
- Schedule generation → Schedule request data: loads approvals
- Request review → Schedule request data: reviews requests
- Replacement oversight → Replacement data: manages requests
- Replacement decisions → Replacement data: reviews requests
- Replacement decisions → User data: loads backups
- Schedule data → MySQL database: reads/writes
- Schedule request data → MySQL database: reads/writes
- Replacement data → MySQL database: reads/writes
- User data → MySQL database: reads/writes
- Coordinator data → MySQL database: reads/writes
- PHP routes → MySQL database: opens connection
- DB sessions → MySQL database: reads/writes sessions
- Home display → PHP views: renders page
- Authentication → PHP views: renders login
- Next schedule page → Schedule API: fetches schedule
