Init
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user