Afteroffice Studio EN
ENTRI 011 Plat lipat

Perpustakaan 56 hub sekolah

Aksara

Sistem perpustakaan yang melayani 56 hub sekolah dalam satu aplikasi, masing-masing dengan data dan aturannya sendiri.

LaravelPostgreSQLDockerBlademulti-tenant

Masalahnya

Lima puluh enam hub sekolah mencatat koleksi perpustakaan dengan cara masing-masing — sebagian besar spreadsheet, sebagian catatan kertas. Tidak ada yang bisa menjawab pertanyaan sederhana seperti “berapa total eksemplar yang kita punya” tanpa mengumpulkan file dari 56 orang lebih dulu. Setiap hub juga tidak boleh melihat data hub lain.

Alur penggunanya

  1. Petugas hub masuk dan hanya melihat koleksi hub-nya sendiri — pemisahan datanya di level aplikasi, bukan sekadar saringan tampilan.
  2. Ia mencari judul, dan kalau belum ada, menambahkannya sekali sebagai data bibliografi; tiap salinan fisik dicatat sebagai eksemplar terpisah dengan nomor sendiri.
  3. Anggota didaftarkan dengan nomor yang dibuat otomatis mengikuti kode organisasi dan tahun ajaran, jadi tidak ada lagi penomoran manual yang bentrok.
  4. Pengurus pusat membuka dashboard distribusi dan melihat sebaran koleksi seluruh hub dalam satu layar.

Yang dibangun

Aplikasi Laravel multi-tenant di atas PostgreSQL, berjalan dalam Docker di server yang saya kelola. Pemisahan tenant ditegakkan di lapisan data, bukan di tampilan, supaya satu hub tidak mungkin membaca data hub lain bahkan lewat URL langsung.

Arsitektur

Browser 56 hub · Blade
Caddy TLS · reverse proxy
Laravel Docker · multi-tenant
PostgreSQL Docker volume
Backup dump harian → Drive

Bagian yang sulit

Bagian tersulit bukan aplikasinya, melainkan memindahkan data lama. Sumbernya berantakan dan tidak konsisten antar hub, dan sekali data masuk salah, memperbaikinya di production jauh lebih mahal daripada memperlambat migrasinya.

Hasilnya

  • 11.212 data bibliografi dan 44.909 eksemplar berhasil dimigrasikan ke struktur baru.
  • 5.593 anggota diimpor untuk satu organisasi, dengan penomoran otomatis menggantikan penomoran manual.
  • 56 hub berjalan di satu aplikasi, satu database, satu proses deploy.

Catatan commit

commit364
hari kerja aktif31
sejak2026-06-01

Yang belum selesai

Integrasi ke spreadsheet tim masih tertunda menunggu kesiapan data di sisi mereka. Ini saya catat sebagai belum selesai, bukan sebagai fitur yang sudah ada.

Peran saya

Product, arsitektur, seluruh implementasi, migrasi data, dan operasional server.

Dicatat oleh
Ihsan Nugraha
Diperiksa
6 Agu 2026, 17.17 WIB
Cara verifikasi
Klik URL mana pun di halaman ini
Dicatat oleh