Extensions
Perluas fungsionalitas Lenz Dashboard dengan extension berbasis Module Federation — muat aplikasi atau UI kustom tanpa perlu rebuild ulang dashboard.
Pengenalan
Extensions adalah mekanisme untuk menambahkan modul UI kustom ke dalam Lenz Dashboard secara dinamis menggunakan teknologi Module Federation. Setiap extension merupakan aplikasi React yang di-deploy secara terpisah dan dimuat oleh Lenz saat dibutuhkan — tanpa perlu mengubah atau membangun ulang kode dashboard utama.
Dengan sistem ini, tim Anda dapat mengembangkan dan merilis fitur baru secara mandiri sebagai extension, lalu mendaftarkannya ke Lenz melalui halaman Extension Settings.
Cara Kerja
Extension Server (Remote)
│
│ expose React component via Module Federation
▼
Lenz Dashboard (Host)
│
│ load remoteEntry.js saat extension diakses
│ mount komponen ke dalam layout Lenz
▼
Pengguna melihat UI extension di sidebarLenz bertindak sebagai host yang menginisialisasi Module Federation runtime. Setiap extension menyediakan sebuah remoteEntry.js yang mengekspos komponen React. Lenz memuat komponen ini secara lazy hanya ketika extension tersebut diakses oleh pengguna.
Extension mendapatkan konteks dari host berupa:
| Konteks | Keterangan |
|---|---|
authToken | Token autentikasi pengguna yang sedang login |
apiBaseUrl | Base URL API Lenz yang dapat digunakan extension |
onNavigate | Fungsi navigasi ke route Lenz lainnya |
navigateToStream | Navigasi langsung ke halaman detail stream |
openEventDetail | Membuka dialog detail event berdasarkan pipeline event ID |
Fitur Extensions diakses melalui dua halaman utama: /extension-settings (manajemen dan konfigurasi) dan /extensions/:slug (tampilan extension yang sudah diinstall).
Halaman Extension Settings hanya dapat diakses oleh pengguna dengan peran admin. Pastikan Anda memiliki izin yang sesuai sebelum melanjutkan konfigurasi.
Cara Menggunakan
Mendaftarkan Extension Server dan Menginstall Extension
Buka halaman Extension Settings
Akses halaman /extension-settings dari sidebar Lenz Dashboard. Halaman ini menampilkan seluruh konfigurasi extension termasuk koneksi ke server, katalog extension yang tersedia, dan extension yang sudah terinstall.
Konfigurasikan URL Extension Server
Di bagian atas halaman, Anda akan melihat baris koneksi server yang menampilkan status saat ini. Klik ikon pensil di sebelah kanan untuk mengubah URL.
Masukkan URL lengkap server extension Anda, misalnya:
https://extensions.perusahaan.comTekan Enter atau klik ikon centang untuk menyimpan. Lenz akan langsung mengambil daftar extension yang tersedia dari server tersebut.
Jika URL berhasil dikonfigurasi, halaman akan menampilkan katalog extension dari server yang bersangkutan.
Install extension dari katalog
Katalog menampilkan semua extension yang tersedia di server, dibagi ke dalam dua seksi: Tersedia dan Terinstall.
- Klik tombol Install pada extension yang ingin Anda tambahkan.
- Untuk menginstall semua extension sekaligus, klik tombol Install Semua.
- Extension yang berhasil diinstall akan muncul di seksi Terinstall dan otomatis ditambahkan ke sidebar Lenz.
Akses extension yang sudah diinstall
Extension yang terinstall akan muncul sebagai item di sidebar Lenz. Klik item tersebut untuk membuka halaman extension di /extensions/:slug.
Lenz akan memuat komponen extension secara dinamis dari server remote. Proses pemuatan ini hanya terjadi sekali per sesi — setelah dimuat, komponen di-cache untuk performa yang lebih baik.
Konfigurasi Extension
Setiap extension yang terinstall dapat dikonfigurasi lebih lanjut melalui halaman Extension Settings.
Opsi Konfigurasi per Extension
| Pengaturan | Keterangan |
|---|---|
| Nama | Nama tampilan extension di sidebar dan katalog. Dapat diubah melalui dialog Edit. |
| Ikon | Ikon yang mewakili extension di sidebar. Dapat diganti melalui icon picker. |
| Urutan Tampilan | Posisi extension di sidebar. Dapat diatur ulang dengan drag-and-drop. |
| Status Aktif | Toggle untuk mengaktifkan atau menonaktifkan extension tanpa menguninstall. |
Pengaturan Sidebar
Label Sidebar
Anda dapat mengganti label grup Extension di sidebar melalui kolom 'Label sidebar' di halaman Extension Settings. Kosongkan untuk menggunakan label default 'Extensions'.
Urutan Extension
Seret dan lepas item extension di katalog untuk mengatur urutan tampilannya di sidebar. Klik 'Terapkan Urutan' untuk menyimpan perubahan.
Mengedit Extension
Klik ikon edit pada extension yang terinstall untuk membuka dialog Edit Extension. Dari sini Anda dapat mengubah:
- Nama — label yang ditampilkan di sidebar dan halaman extension
- Ikon — pilih dari daftar ikon yang tersedia melalui icon picker
Perubahan disimpan secara langsung ke server dan tercermin di sidebar tanpa perlu memuat ulang halaman.
Uninstall Extension
- Uninstall satu extension: Klik tombol Uninstall pada extension yang bersangkutan, lalu konfirmasi pada dialog yang muncul.
- Uninstall semua: Klik Uninstall Semua, lalu konfirmasi tindakan pada dialog. Semua extension akan dihapus dari sidebar.
Data Anda tetap tersimpan di server setelah uninstall. Extension dapat diinstall ulang kapan saja dan data akan kembali dapat diakses.
Fitur Utama
Pemuatan Dinamis (Lazy Loading)
Extension hanya dimuat saat pengguna mengaksesnya. Komponen di-cache di memori sehingga kunjungan berikutnya lebih cepat tanpa request ulang ke server remote.
Shared Dependencies
React dan React DOM di-share antara host dan extension untuk menghindari konflik versi dan meminimalkan ukuran bundle yang dimuat dari server remote.
Konteks Host Terintegrasi
Setiap extension menerima Token autentikasi, API base URL, dan fungsi navigasi dari Lenz — sehingga extension dapat mengakses API dan berinteraksi dengan fitur dashboard lainnya.
Manajemen Katalog Terpusat
Seluruh extension dikelola melalui satu server katalog. Admin cukup mengubah URL server untuk beralih antara katalog yang berbeda tanpa konfigurasi tambahan.
Kustomisasi Tampilan
Nama, ikon, dan urutan setiap extension dapat disesuaikan oleh admin tanpa mengubah kode extension itu sendiri.
Toggle Aktif/Nonaktif
Extension dapat dinonaktifkan sementara tanpa diuninstall, sehingga tidak muncul di sidebar sambil tetap mempertahankan konfigurasinya.
API Reference
Dokumentasi lengkap seluruh endpoint Extensions tersedia di halaman terpisah, mencakup skema request/response, parameter, dan contoh penggunaan.
Tips & Troubleshooting
Untuk Developer Extension
Bagian ini ditujukan bagi developer yang ingin membuat extension untuk Lenz Dashboard.
Prinsip Dasar
Extension adalah aplikasi React yang dikonfigurasi sebagai Module Federation Remote. Extension harus mengekspos minimal satu komponen React melalui konfigurasi Module Federation, dengan antarmuka yang kompatibel dengan HostContext yang disediakan Lenz.
Kontrak Komponen
Komponen utama extension akan menerima props berikut dari Lenz:
interface HostContext {
authToken: string | null; // Token JWT pengguna aktif
apiBaseUrl: string; // Base URL API Lenz
onNavigate?: (path: string) => void; // Navigasi ke route Lenz
navigateToStream?: (streamId: string) => void; // Buka detail stream
openEventDetail?: (pipelineEventId: string) => void; // Buka detail event
}Konfigurasi Module Federation
Extension harus dikonfigurasi dengan:
name: Nama unik remote (sesuai denganslugyang didaftarkan di server katalog)exposes: Objek yang mengekspos komponen utama — key-nya adalahmoduleNameyang terdaftar di katalogshared: Pastikanreactdanreact-domdikonfigurasi sebagaisingleton: trueagar berbagi instance yang sama dengan Lenz host
Panduan Lengkap
Untuk panduan step-by-step membuat extension dari awal — termasuk setup proyek, konfigurasi bundler, deployment, dan registrasi ke server katalog — lihat dokumentasi developer extension: