3.9 KiB
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:
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.