# ryandaaa/siakad architecture

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

- Interactive diagram: https://gitdiagram.com/ryandaaa/siakad
- Repository: https://github.com/ryandaaa/siakad

## Overview

SIAKAD is a Laravel academic information system for students, lecturers, and administrators. Its main student workflow spans course registration, advising approval, classes and learning materials, attendance and assignments, then grades, KHS/transcript, and exports. Separate capabilities cover lecturer teaching and supervision, admin master data and user management, and Gemini-based academic advising. The graph combines README-documented features with sampled controller behavior; most feature-level wiring is not shown in the excerpts, so uncertain calls are omitted.

Main entry points: [`app/Models`](https://github.com/ryandaaa/siakad/tree/main/app/Models) (Academic records), [`routes/web.php`](https://github.com/ryandaaa/siakad/blob/main/routes/web.php) (Web routes), [`app/Http/Controllers/Mahasiswa`](https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Mahasiswa) (Student portal), [`app/Http/Controllers/Admin`](https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Admin) (Admin operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and administration"]
  node_web_routes["Web routes<br/>[web.php]"]
  node_auth["Authentication"]
  node_admin["Admin operations"]
  node_dosen_administration["Lecturer administration"]
  node_mahasiswa_administration["Student administration"]
  node_access_rules["Role and faculty scope"]
end

subgraph group_academic["Academic records"]
  node_student_portal["Student portal"]
  node_krs["Course registration<br/>[KrsController.php]"]
  node_krs_service["Registration logic<br/>[KrsService.php]"]
  node_advisor_approval["Advisor KRS review"]
  node_grades["Grades and assessment"]
  node_academic_results["KHS and transcript"]
  node_academic_data[("Academic records")]
end

subgraph group_teaching["Teaching and learning"]
  node_lecturer_portal["Lecturer portal"]
  node_attendance["Class attendance"]
  node_attendance_service["Attendance logic"]
  node_lms["LMS and coursework<br/>[LmsController.php]"]
  node_learning_data[("Learning records")]
end

subgraph group_support["Student support"]
  node_advisor_ai["AI academic advisor"]
  node_student_projects["Thesis and internship"]
  node_notifications["Notifications"]
  node_notification_service["Notification logic"]
end

node_user(("Campus user"))
node_gemini{{"Gemini API"}}

node_user -->|"sends requests"| node_web_routes
node_web_routes -->|"dispatches auth"| node_auth
node_web_routes -->|"dispatches admin"| node_admin
node_web_routes -->|"dispatches student"| node_student_portal
node_web_routes -->|"dispatches lecturer"| node_lecturer_portal
node_web_routes -->|"dispatches notifications"| node_notifications
node_auth -->|"authenticates"| node_user
node_admin -->|"checks access"| node_access_rules
node_admin -->|"manages records"| node_academic_data
node_dosen_administration -->|"reads and writes"| node_academic_data
node_mahasiswa_administration -->|"reads and writes"| node_academic_data
node_student_portal -->|"offers registration"| node_krs
node_krs -->|"uses registration logic"| node_krs_service
node_krs -->|"reads and writes"| node_academic_data
node_advisor_approval -->|"reads and updates KRS"| node_academic_data
node_grades -->|"records grades"| node_academic_data
node_academic_results -->|"reads results"| node_academic_data
node_lecturer_portal -->|"offers attendance"| node_attendance
node_attendance -->|"records attendance"| node_attendance_service
node_attendance_service -->|"updates records"| node_learning_data
node_student_portal -->|"offers coursework"| node_lms
node_lms -->|"reads classes and tasks"| node_learning_data
node_student_portal -->|"offers advising"| node_advisor_ai
node_advisor_ai -.->|"consults AI"| node_gemini
node_student_portal -->|"offers project tracking"| node_student_projects
node_notifications -->|"uses notification logic"| node_notification_service
node_notification_service -->|"reads and updates notices"| node_academic_data

click node_web_routes "https://github.com/ryandaaa/siakad/blob/main/routes/web.php"
click node_auth "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_admin "https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Admin"
click node_dosen_administration "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Admin/DosenController.php"
click node_mahasiswa_administration "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Admin/MahasiswaController.php"
click node_access_rules "https://github.com/ryandaaa/siakad/tree/main/app/Http/Middleware"
click node_student_portal "https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Mahasiswa"
click node_krs "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Mahasiswa/KrsController.php"
click node_krs_service "https://github.com/ryandaaa/siakad/blob/main/app/Services/KrsService.php"
click node_advisor_approval "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Dosen/BimbinganController.php"
click node_grades "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Dosen/PenilaianController.php"
click node_academic_results "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Mahasiswa/TranskripController.php"
click node_academic_data "https://github.com/ryandaaa/siakad/tree/main/app/Models"
click node_lecturer_portal "https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Dosen"
click node_attendance "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Dosen/PresensiController.php"
click node_attendance_service "https://github.com/ryandaaa/siakad/blob/main/app/Services/PresensiService.php"
click node_lms "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Mahasiswa/LmsController.php"
click node_learning_data "https://github.com/ryandaaa/siakad/tree/main/app/Models"
click node_advisor_ai "https://github.com/ryandaaa/siakad/blob/main/app/Services/AiAdvisorService.php"
click node_student_projects "https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Mahasiswa"
click node_notifications "https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/NotificationController.php"
click node_notification_service "https://github.com/ryandaaa/siakad/blob/main/app/Services/NotificationService.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_web_routes,node_auth,node_admin,node_dosen_administration,node_mahasiswa_administration,node_access_rules,node_user toneBlue
class node_student_portal,node_krs,node_krs_service,node_advisor_approval,node_grades,node_academic_results,node_academic_data toneAmber
class node_lecturer_portal,node_attendance,node_attendance_service,node_lms,node_learning_data,node_gemini toneMint
class node_advisor_ai,node_student_projects,node_notifications,node_notification_service toneRose
```

## Components

### Access and administration

- [Web routes](https://github.com/ryandaaa/siakad/blob/main/routes/web.php): `routes/web.php`
- [Authentication](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [Admin operations](https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Admin): `app/Http/Controllers/Admin`
- [Lecturer administration](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Admin/DosenController.php): `app/Http/Controllers/Admin/DosenController.php`
- [Student administration](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Admin/MahasiswaController.php): `app/Http/Controllers/Admin/MahasiswaController.php`
- [Role and faculty scope](https://github.com/ryandaaa/siakad/tree/main/app/Http/Middleware): `app/Http/Middleware`

### Academic records

- [Student portal](https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Mahasiswa): `app/Http/Controllers/Mahasiswa`
- [Course registration](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Mahasiswa/KrsController.php): `app/Http/Controllers/Mahasiswa/KrsController.php`
- [Registration logic](https://github.com/ryandaaa/siakad/blob/main/app/Services/KrsService.php): `app/Services/KrsService.php`
- [Advisor KRS review](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Dosen/BimbinganController.php): `app/Http/Controllers/Dosen/BimbinganController.php`
- [Grades and assessment](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Dosen/PenilaianController.php): `app/Http/Controllers/Dosen/PenilaianController.php`
- [KHS and transcript](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Mahasiswa/TranskripController.php): `app/Http/Controllers/Mahasiswa/TranskripController.php`
- [Academic records](https://github.com/ryandaaa/siakad/tree/main/app/Models): `app/Models`

### Teaching and learning

- [Lecturer portal](https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Dosen): `app/Http/Controllers/Dosen`
- [Class attendance](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Dosen/PresensiController.php): `app/Http/Controllers/Dosen/PresensiController.php`
- [Attendance logic](https://github.com/ryandaaa/siakad/blob/main/app/Services/PresensiService.php): `app/Services/PresensiService.php`
- [LMS and coursework](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/Mahasiswa/LmsController.php): `app/Http/Controllers/Mahasiswa/LmsController.php`
- [Learning records](https://github.com/ryandaaa/siakad/tree/main/app/Models): `app/Models`

### Student support

- [AI academic advisor](https://github.com/ryandaaa/siakad/blob/main/app/Services/AiAdvisorService.php): `app/Services/AiAdvisorService.php`
- [Thesis and internship](https://github.com/ryandaaa/siakad/tree/main/app/Http/Controllers/Mahasiswa): `app/Http/Controllers/Mahasiswa`
- [Notifications](https://github.com/ryandaaa/siakad/blob/main/app/Http/Controllers/NotificationController.php): `app/Http/Controllers/NotificationController.php`
- [Notification logic](https://github.com/ryandaaa/siakad/blob/main/app/Services/NotificationService.php): `app/Services/NotificationService.php`

### Other components

- **Campus user**
- **Gemini API**

## Connections

- Campus user → Web routes: sends requests
- Web routes → Authentication: dispatches auth
- Web routes → Admin operations: dispatches admin
- Web routes → Student portal: dispatches student
- Web routes → Lecturer portal: dispatches lecturer
- Web routes → Notifications: dispatches notifications
- Authentication → Campus user: authenticates
- Admin operations → Role and faculty scope: checks access
- Admin operations → Academic records: manages records
- Lecturer administration → Academic records: reads and writes
- Student administration → Academic records: reads and writes
- Student portal → Course registration: offers registration
- Course registration → Registration logic: uses registration logic
- Course registration → Academic records: reads and writes
- Advisor KRS review → Academic records: reads and updates KRS
- Grades and assessment → Academic records: records grades
- KHS and transcript → Academic records: reads results
- Lecturer portal → Class attendance: offers attendance
- Class attendance → Attendance logic: records attendance
- Attendance logic → Learning records: updates records
- Student portal → LMS and coursework: offers coursework
- LMS and coursework → Learning records: reads classes and tasks
- Student portal → AI academic advisor: offers advising
- AI academic advisor → Gemini API: consults AI
- Student portal → Thesis and internship: offers project tracking
- Notifications → Notification logic: uses notification logic
- Notification logic → Academic records: reads and updates notices
