Files
RayLab-Core/Docs/Phase-01-Module-Design.md
T
2026-07-30 09:41:42 +07:00

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.