209 lines
3.9 KiB
Markdown
209 lines
3.9 KiB
Markdown
# 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.
|