This commit is contained in:
Mr. Rayyan
2026-07-30 09:41:42 +07:00
parent aef8e412a8
commit 3efac50f39
70 changed files with 3217 additions and 0 deletions
+208
View File
@@ -0,0 +1,208 @@
# RayLab Core Phase 1 --- Module Design
## Tujuan
Fase 1 mendefinisikan pembagian modul pada RayLab Core. Setiap modul
memiliki tanggung jawab yang jelas (Single Responsibility Principle),
mudah dikembangkan secara independen, dan berkomunikasi melalui service
atau interface yang telah ditentukan.
------------------------------------------------------------------------
# Prinsip Desain
- Modular dan mudah dikembangkan.
- Loose coupling, high cohesion.
- Setiap modul memiliki domain bisnis yang jelas.
- Antar modul tidak mengakses database modul lain secara langsung.
- Komunikasi dilakukan melalui service, interface, atau event jika
diperlukan.
------------------------------------------------------------------------
# Daftar Modul
## 1. Core System
Tanggung jawab:
- Bootstrap aplikasi
- Dependency Injection
- Configuration
- Logging
- Health Check
- Global Middleware
- Exception Filter
------------------------------------------------------------------------
## 2. Identity
Mengelola identitas pengguna.
Fitur:
- User
- Profile
- Session
- Authentication (implementasi pada fase berikutnya)
------------------------------------------------------------------------
## 3. Authorization
Mengelola hak akses.
Fitur:
- Group
- Role
- Permission
- Domain Access
- Resource Access
- Special Access
Hierarki:
``` text
User
Group
Role
Permission
Domain Access
Resource Access
Special Access
```
------------------------------------------------------------------------
## 4. Registry
Pusat registrasi aplikasi dan layanan.
Mengelola:
- Application
- Service
- Domain
- Adapter
------------------------------------------------------------------------
## 5. Configuration
Menyimpan konfigurasi yang dapat diubah saat runtime.
Contoh:
- Theme
- Timezone
- Upload Limit
- Default Language
------------------------------------------------------------------------
## 6. Dashboard
Menyediakan data untuk dashboard RayLab.
Dashboard tidak menyimpan business logic, hanya menggabungkan data dari
modul lain.
------------------------------------------------------------------------
## 7. Health
Monitoring internal.
Contoh:
- Database
- Redis
- Storage
- Adapter
- Service Status
------------------------------------------------------------------------
## 8. Adapter
Lapisan integrasi layanan eksternal.
Contoh adapter:
- Nextcloud
- Jellyfin
- Immich
- Minecraft
- Future integrations
Semua komunikasi eksternal harus melalui Adapter.
------------------------------------------------------------------------
## 9. Storage
Mengelola storage logis.
Contoh:
- Storage
- Volume
- Quota
- Path Mapping
------------------------------------------------------------------------
## 10. Media
Media Manager berada di RayLab Core.
Tanggung jawab:
- Membuat struktur folder otomatis
- Mengelola folder private/shared
- Memindahkan media saat perubahan visibilitas
- Mengubah permission
- Memicu refresh library Jellyfin
- Audit media
Jellyfin hanya membaca media, bukan mengelolanya.
------------------------------------------------------------------------
## 11. Audit
Mencatat seluruh aktivitas penting sistem.
Contoh:
- Login
- Perubahan permission
- Pembuatan user
- Penghapusan group
- Perubahan konfigurasi
- Aktivitas adapter
------------------------------------------------------------------------
# Aturan Antar Modul
- Tidak ada modul yang mengakses repository modul lain secara
langsung.
- Semua business logic berada pada modul pemilik domain.
- Integrasi dilakukan melalui service atau adapter.
- Setiap modul harus dapat diuji secara mandiri.
------------------------------------------------------------------------
# Hasil Akhir Fase 1
Setelah fase ini selesai, RayLab Core memiliki struktur modular yang
menjadi fondasi untuk seluruh pengembangan berikutnya.