Catatan lapangan

Satu core, banyak aplikasi: cara kerja platform perbankan whitelabel

Platform perbankan whitelabel adalah satu core perbankan dengan front end yang bisa diganti. Core adalah bagian yang harus benar: buku besar double-entry, rekening nasabah, KYC dan onboarding, penerbitan dan pemrosesan kartu, rail kripto dan stablecoin, serta konsol operator yang menjalankan semuanya dari belakang. Aplikasi adalah bagian yang dilihat nasabah — nama, warna, bentuk layar, dan subset fitur yang diaktifkan. Whitelabel berarti satu core dapat tampil dengan banyak wajah tanpa harus dibangun ulang untuk masing-masing. Satu core, banyak aplikasi.

Dengan kata lain, ini klaim tentang di mana letak sambungannya. Semua yang menyentuh uang dipakai bersama, diaudit, dan direkonsiliasi sekali saja; semua yang menyentuh nasabah dikonfigurasi per tenant. Pekerjaan rekayasa yang penting adalah menjaga garis itu tetap jujur — membiarkan front end berbeda dengan bebas tanpa pernah mem-fork core yang menopangnya. Tulisan ini membedah cara garis itu ditarik, dan mengapa menariknya dengan design token lebih baik daripada dengan fork.

Yang tidak pernah berubah: core

Mulai dari separuh yang tidak boleh kreatif. Transfer tercatat dengan cara yang sama, entah aplikasi menyebutnya kirim, bayar, atau payout: dua entri di buku besar double-entry, dan tidak ada yang pernah dihapus — buku besar hanya menambah, sehingga refund berupa entri lawan yang merujuk ke entri asli, bukan penghapusan. Rekening, saldo, dan hold otorisasi berada di sini. Begitu pula KYC dan onboarding, penerbitan dan settlement kartu, serta rail kripto dan stablecoin. Di belakang semuanya ada satu konsol operator tempat setiap tindakan berhak istimewa wajib disertai alasan dan tercatat di log audit.

Masing-masing hanya ada satu, dan justru itulah intinya. Settlement, rekonsiliasi, dan kepatuhan sulit dibuat benar dan mahal jika salah, jadi bangun sekali saja dan biarkan setiap aplikasi mewarisi hasilnya. Ketika tenant melakukan onboarding nasabah, tier KYC yang ditentukan core ikut bersama nasabah itu ke konsol, apa pun aplikasi yang menangkap dokumennya. Core tidak tahu dan tidak peduli apa nama aplikasi di atasnya — yang ia lihat adalah rekening dan entri, bukan merek.

Yang berbeda: bahasa desain, arsitektur informasi, kombinasi fitur

Semua yang berada di atas core bebas bergerak, pada tiga sumbu. Pertama, bahasa desain: warna, tipografi, radius sudut, jarak, gerak — tata bahasa visual merek. Kedua, arsitektur informasi: apa yang ada di layar beranda, bagaimana alur dinamai dan diurutkan, tindakan mana yang hanya sekali ketuk dan mana yang tiga kali. Ketiga, kombinasi fitur: modul mana saja yang diaktifkan. Aplikasi transfer yang ramping dan super-app yang padat dapat berjalan di atas core yang sama persis tanpa berbagi satu layar pun.

Halaman produk di /products/pay menguraikan lima arah yang sudah dikerjakan, dan paling pas dibaca sebagai contoh dari tak terhingga kemungkinan, bukan menu berisi lima pilihan. Halcyon adalah exchange yang bersih — sederhana, sedikit layar, perdagangan di posisi utama. Lumen adalah super-app tempat uang berpindah di dalam percakapan, dan pembayaran lewat chat, langganan, serta earn berbagi layar beranda. Fern mengutamakan transfer — payout massal dan konversi FX berbasis aturan lebih dulu. Volt adalah build bertema gelap berbasis stablecoin dengan pemilah gaji dan kartu tim. Meridian bersifat multi-mata uang: rekening EUR di samping USDC, saldo perjalanan GBP, dan rekening BTC tempat reward kartu masuk. Lima merek, lima arsitektur informasi, lima kombinasi fitur — satu buku besar, satu KYC, satu prosesor kartu di bawah semuanya.

Itu tidak berarti produknya lima aplikasi. Kelima contoh itu hanyalah arah yang bisa ditempuh pipeline yang sama; angka yang penting bukan lima, melainkan sebanyak apa pun tenant yang Anda onboard. Masing-masing membuktikan bahwa front end bisa berbeda hingga ke bentuk layar beranda, sementara core di bawahnya tidak pernah menyadarinya.

Core adalah bagian yang tidak boleh Anda temukan ulang; aplikasi adalah bagian yang tidak boleh Anda batasi. Platform whitelabel adalah disiplin untuk menjaga kedua kalimat itu tetap benar secara bersamaan.
— Protocore · Rekayasa platform

Mengapa theming tingkat token lebih unggul daripada fork codebase

Ada dua cara agar satu produk tampak seperti banyak produk. Cara yang paling jelas adalah fork: salin codebase untuk setiap pelanggan, ubah tampilannya, lalu rilis. Cara ini hanya berhasil untuk satu rilis. Setelah itu, setiap perbaikan bug dan setiap perubahan regulasi harus diterapkan N kali pada N salinan yang terus menyimpang, salinan-salinan itu tidak lagi sinkron, dan permukaan keamanan yang harus Anda pikirkan berlipat sebanyak jumlah pelanggan. Fork mengubah satu sistem yang Anda pahami menjadi banyak sistem yang tidak.

Theming tingkat token membalik pendekatan itu. Hanya ada satu codebase. Sebuah merek adalah sekumpulan nilai — token untuk warna, tipe huruf, radius, dan jarak; konfigurasi komponen; dan set feature flag — yang diselesaikan saat build menjadi aplikasi bermerek. Ubah satu token dan setiap layar yang membacanya ikut berubah, karena tidak ada nilai yang di-hardcode padahal seharusnya diambil dari token. Perbaikan pada alur transfer dirilis ke semua tenant sekaligus, karena hanya ada satu alur transfer yang perlu diperbaiki. Merek-merek itu berbeda pada konfigurasinya, bukan pada source-nya.

Posisi design system

Token bukanlah gagasan yang longgar; ia adalah artefak yang dirilis. Protocore Design System — /products/pds — terdiri dari 144 design token dan 889 kelas utilitas: kosakata yang menjadi dasar theming setiap aplikasi. Sistem ini mengutamakan mode gelap, digerakkan oleh token, dan secara default beradius nol, dengan set token yang sama diterbitkan untuk web, .NET, dan native, sehingga warna yang didefinisikan sekali berarti warna yang sama di layar React, konsol desktop, maupun build mobile native. Merek tenant dinyatakan sebagai override terhadap kosakata itu, itulah sebabnya mengubah tampilan aplikasi cukup dengan perubahan konfigurasi, bukan penulisan ulang.

Inilah juga yang membuat front end benar-benar bebas, bukan sekadar bebas di dalam template. Karena bahasa desain berada di token dan kelas utilitas, bukan di stylesheet satu kali pakai, desainer dapat membawa tenant jauh dari build referensi — palet, tipografi, kepadatan, dan ritmenya sendiri — tanpa menyentuh core atau mem-fork aplikasi. Catnya bisa sangat dalam, tetapi tetap hanya cat; instalasi pipa di bawahnya dipakai bersama.

Aplikasi adalah konfigurasi, bukan build

Kombinasi fitur mengikuti aturan yang sama. Setiap modul — pembayaran lewat chat, earn, kripto, kartu, langganan, kartu tim, referral — adalah saklar yang diatur per tenant, dan sebuah flag dapat diluncurkan ke sebagian pengguna sebelum dibuka untuk semua. Operator mengaktifkannya dari panel konfigurasi, bukan lewat deploy. Jadi perbedaan antara aplikasi transfer sederhana dan super-app lengkap bukan dua proyek; melainkan dua konfigurasi dari satu proyek. Aplikasi referensi tempat setiap tenant memulai adalah build netral bermerek Protocore dengan seluruh menu tersedia — setiap whitelabel adalah build itu dengan token yang di-override dan modul yang diaktifkan atau dimatikan.

Batas yang jujur

Satu core, banyak aplikasi hanya sepadan dengan mesinnya jika Anda memang punya banyak aplikasi — atau satu aplikasi yang ingin Anda ubah tampilan, susunan, dan cakupannya dari waktu ke waktu tanpa membangun ulang bank setiap kali. Jika Anda merilis satu aplikasi tetap yang tidak akan pernah memakai merek kedua, Anda tidak butuh platform whitelabel; Anda butuh aplikasi. Nilainya terasa pada kasus yang menjadi alasan pembuatannya: platform yang meluncurkan produk perbankan bermerek tenant demi tenant, masing-masing jelas milik sendiri, tak satu pun hasil fork. Pembedahan lengkapnya — lima arah, aplikasi referensi, dan konsol operator di belakangnya — ada di /products/pay, dan design system di bawahnya ada di /products/pds.

Punya sistem yang ingin dibangun?

Ceritakan masalahnya. Kami akan kembali dengan arsitektur dan rencana.