# 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.