# denyjulianto/projek-sim-p architecture

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

- Interactive diagram: https://gitdiagram.com/denyjulianto/projek-sim-p
- Repository: https://github.com/denyjulianto/projek-sim-p

## Overview

This is a multi-tenant school management system: school staff, administrators, students, and guardians use a React interface backed by Laravel APIs and school-specific data. The principal workflow is a user entering the application, reaching authenticated features, and making requests handled by API controllers against domain records. Major product areas visible in the repository include academic planning and reporting, student services, finance, libraries and laboratories, admissions, and central school/directory administration. The README is empty; unsampled areas are represented at their enclosing source directories, and edges are limited to relationships visible in excerpts or the source index.

Main entry points: [`Backend/app/Models`](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Models) (Academic records), [`Backend/app/Models/Central/GuruDirectory.php`](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Models/Central/GuruDirectory.php) (Central directory records), [`Frontend/src/App.jsx`](https://github.com/denyjulianto/projek-sim-p/blob/main/Frontend/src/App.jsx) (Web application), [`Backend/app/Http/Controllers/Api/Central/GuruDirectoryController.php`](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/Central/GuruDirectoryController.php) (Central directories)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application entry"]
  node_frontend_app["Web application<br/>[App.jsx]"]
  node_auth_context["Authentication state<br/>[AuthContext.jsx]"]
  node_protected_route["Route protection<br/>[ProtectedRoute.jsx]"]
  node_api_routes["Tenant API routes<br/>[tenant.php]"]
  node_tenant_controllers["Tenant API features"]
end

subgraph group_academics["Academic operations"]
  node_academic_reports["Academic reports"]
  node_grade_monitoring["Grade monitoring"]
  node_report_publishing["Report publishing"]
  node_schedule_changes["Schedule changes"]
  node_academic_records[("Academic records")]
end

subgraph group_student_services["Student services"]
  node_student_welfare["Student welfare"]
  node_admissions["Admissions"]
  node_library["Library services"]
  node_laboratory["Laboratory services"]
  node_student_records[("Student records<br/>[Siswa.php]")]
end

subgraph group_administration["School administration"]
  node_finance["Finance and payments"]
  node_school_operations["School operations"]
  node_tenant_identity[("School and staff records<br/>[Sekolah.php]")]
end

subgraph group_central["Central services"]
  node_central_directories["Central directories"]
  node_directory_sync["Directory synchronization"]
  node_integration_api["Directory integration API"]
  node_central_records[("Central directory records<br/>[GuruDirectory.php]")]
  node_privacy["PII masking<br/>[PiiMasker.php]"]
end

node_user(("School user"))

node_user -->|"opens"| node_frontend_app
node_frontend_app -->|"provides auth"| node_auth_context
node_frontend_app -->|"guards dashboard"| node_protected_route
node_api_routes -->|"routes requests"| node_tenant_controllers
node_academic_reports -->|"reads records"| node_academic_records
node_grade_monitoring -->|"reads grades"| node_academic_records
node_report_publishing -->|"reads and writes"| node_academic_records
node_schedule_changes -->|"checks schedules"| node_academic_records
node_student_records -->|"links class data"| node_academic_records
node_central_directories -->|"manages entries"| node_central_records
node_directory_sync -->|"synchronizes records"| node_central_records
node_integration_api -->|"serves directory data"| node_central_records
node_central_directories -->|"masks personal data"| node_privacy
node_integration_api -->|"masks personal data"| node_privacy
node_central_records -->|"references schools"| node_tenant_identity

click node_frontend_app "https://github.com/denyjulianto/projek-sim-p/blob/main/Frontend/src/App.jsx"
click node_auth_context "https://github.com/denyjulianto/projek-sim-p/blob/main/Frontend/src/lib/AuthContext.jsx"
click node_protected_route "https://github.com/denyjulianto/projek-sim-p/blob/main/Frontend/src/components/ProtectedRoute.jsx"
click node_api_routes "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/routes/tenant.php"
click node_tenant_controllers "https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api"
click node_academic_reports "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/LaporanAkademikController.php"
click node_grade_monitoring "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/MonitoringNilaiController.php"
click node_report_publishing "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/PenerbitanRaporController.php"
click node_schedule_changes "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/PerubahanJadwalController.php"
click node_academic_records "https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Models"
click node_student_welfare "https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api"
click node_admissions "https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api"
click node_library "https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api"
click node_laboratory "https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api"
click node_student_records "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Models/Siswa.php"
click node_finance "https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api"
click node_school_operations "https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api"
click node_tenant_identity "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Models/Sekolah.php"
click node_central_directories "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/Central/GuruDirectoryController.php"
click node_directory_sync "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Services/DirectorySyncService.php"
click node_integration_api "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/Integrasi/DirectoryApiController.php"
click node_central_records "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Models/Central/GuruDirectory.php"
click node_privacy "https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Support/PiiMasker.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_frontend_app,node_auth_context,node_protected_route,node_api_routes,node_tenant_controllers,node_user toneBlue
class node_academic_reports,node_grade_monitoring,node_report_publishing,node_schedule_changes,node_academic_records toneAmber
class node_student_welfare,node_admissions,node_library,node_laboratory,node_student_records toneMint
class node_finance,node_school_operations,node_tenant_identity toneRose
class node_central_directories,node_directory_sync,node_integration_api,node_central_records,node_privacy toneIndigo
```

## Components

### Application entry

- [Web application](https://github.com/denyjulianto/projek-sim-p/blob/main/Frontend/src/App.jsx): `Frontend/src/App.jsx`
- [Authentication state](https://github.com/denyjulianto/projek-sim-p/blob/main/Frontend/src/lib/AuthContext.jsx): `Frontend/src/lib/AuthContext.jsx`
- [Route protection](https://github.com/denyjulianto/projek-sim-p/blob/main/Frontend/src/components/ProtectedRoute.jsx): `Frontend/src/components/ProtectedRoute.jsx`
- [Tenant API routes](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/routes/tenant.php): `Backend/routes/tenant.php`
- [Tenant API features](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api): `Backend/app/Http/Controllers/Api`

### Academic operations

- [Academic reports](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/LaporanAkademikController.php): `Backend/app/Http/Controllers/Api/LaporanAkademikController.php`
- [Grade monitoring](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/MonitoringNilaiController.php): `Backend/app/Http/Controllers/Api/MonitoringNilaiController.php`
- [Report publishing](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/PenerbitanRaporController.php): `Backend/app/Http/Controllers/Api/PenerbitanRaporController.php`
- [Schedule changes](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/PerubahanJadwalController.php): `Backend/app/Http/Controllers/Api/PerubahanJadwalController.php`
- [Academic records](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Models): `Backend/app/Models`

### Student services

- [Student welfare](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api): `Backend/app/Http/Controllers/Api`
- [Admissions](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api): `Backend/app/Http/Controllers/Api`
- [Library services](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api): `Backend/app/Http/Controllers/Api`
- [Laboratory services](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api): `Backend/app/Http/Controllers/Api`
- [Student records](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Models/Siswa.php): `Backend/app/Models/Siswa.php`

### School administration

- [Finance and payments](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api): `Backend/app/Http/Controllers/Api`
- [School operations](https://github.com/denyjulianto/projek-sim-p/tree/main/Backend/app/Http/Controllers/Api): `Backend/app/Http/Controllers/Api`
- [School and staff records](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Models/Sekolah.php): `Backend/app/Models/Sekolah.php`

### Central services

- [Central directories](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/Central/GuruDirectoryController.php): `Backend/app/Http/Controllers/Api/Central/GuruDirectoryController.php`
- [Directory synchronization](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Services/DirectorySyncService.php): `Backend/app/Services/DirectorySyncService.php`
- [Directory integration API](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Http/Controllers/Api/Integrasi/DirectoryApiController.php): `Backend/app/Http/Controllers/Api/Integrasi/DirectoryApiController.php`
- [Central directory records](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Models/Central/GuruDirectory.php): `Backend/app/Models/Central/GuruDirectory.php`
- [PII masking](https://github.com/denyjulianto/projek-sim-p/blob/main/Backend/app/Support/PiiMasker.php): `Backend/app/Support/PiiMasker.php`

### Other components

- **School user**

## Connections

- School user → Web application: opens (evidence: `Frontend/src/App.jsx`)
- Web application → Authentication state: provides auth (evidence: `Frontend/src/App.jsx`)
- Web application → Route protection: guards dashboard (evidence: `Frontend/src/App.jsx`)
- Tenant API routes → Tenant API features: routes requests (evidence: `Backend/routes/tenant.php`)
- Academic reports → Academic records: reads records (evidence: `Backend/app/Http/Controllers/Api/LaporanAkademikController.php`)
- Grade monitoring → Academic records: reads grades (evidence: `Backend/app/Http/Controllers/Api/MonitoringNilaiController.php`)
- Report publishing → Academic records: reads and writes (evidence: `Backend/app/Http/Controllers/Api/PenerbitanRaporController.php`)
- Schedule changes → Academic records: checks schedules (evidence: `Backend/app/Http/Controllers/Api/PerubahanJadwalController.php`)
- Student records → Academic records: links class data (evidence: `Backend/app/Models/Siswa.php`)
- Central directories → Central directory records: manages entries (evidence: `Backend/app/Http/Controllers/Api/Central/GuruDirectoryController.php`)
- Directory synchronization → Central directory records: synchronizes records (evidence: `Backend/app/Services/DirectorySyncService.php`)
- Directory integration API → Central directory records: serves directory data (evidence: `Backend/app/Http/Controllers/Api/Integrasi/DirectoryApiController.php`)
- Central directories → PII masking: masks personal data (evidence: `Backend/app/Http/Controllers/Api/Central/GuruDirectoryController.php`)
- Directory integration API → PII masking: masks personal data (evidence: `Backend/app/Http/Controllers/Api/Integrasi/DirectoryApiController.php`)
- Central directory records → School and staff records: references schools (evidence: `Backend/app/Models/Central/GuruDirectory.php`)
