Nodeflux Central
Extensions

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 sidebar

Lenz 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:

KonteksKeterangan
authTokenToken autentikasi pengguna yang sedang login
apiBaseUrlBase URL API Lenz yang dapat digunakan extension
onNavigateFungsi navigasi ke route Lenz lainnya
navigateToStreamNavigasi langsung ke halaman detail stream
openEventDetailMembuka 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.com

Tekan 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

PengaturanKeterangan
NamaNama tampilan extension di sidebar dan katalog. Dapat diubah melalui dialog Edit.
IkonIkon yang mewakili extension di sidebar. Dapat diganti melalui icon picker.
Urutan TampilanPosisi extension di sidebar. Dapat diatur ulang dengan drag-and-drop.
Status AktifToggle 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 dengan slug yang didaftarkan di server katalog)
  • exposes: Objek yang mengekspos komponen utama — key-nya adalah moduleName yang terdaftar di katalog
  • shared: Pastikan react dan react-dom dikonfigurasi sebagai singleton: true agar 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:


Selanjutnya

On this page