Remake Kanyaah dari Rails ke Jekyll & Padrino

Setelah cukup puas dengan hasil rewrite blog pribadi dari Rails ke Padrino, saya punya milestone lain: rewrite Kanyaah dari Rails ke Jekyll & Padrino. But first things first, kenapa harus rewrite? Kenapa Jekyll & Padrino? Kenapa tidak langsung full Padrino saja?

Keputusan ini saya ambil berdasarkan beberapa informasi lain, tentunya selain penggunaan memory usage yang tinggi yang sudah saya jelaskan di tulisan sebelumnya.

1. Saya masih cukup sering bantu membuatkan undangan

Dari semua calon mempelai yang memesan undangan, sebagian besar data undangannya masih saya bantu isi, meskipun saya sudah menyediakan antarmuka untuk mengubah dan menyesuaikan data undangan oleh calon mempelai secara mandiri.

Yang saya amati, kebanyakan dari mereka tidak mau ribet. Saya cukup paham, karena persiapan menjelang pernikahan sendiri pun sudah banyak yang harus diurus. Selain itu, ada juga yang memang kurang familiar dengan self-service atau bahkan gagap teknologi.

2. Adanya kebutuhan untuk kustomisasi tampilan

Misalnya: mengubah judul undangan menjadi Tasyakur Pernikahan, Ngunduh Mantu, dan sebagainya. Belum lagi ingin mencantumkan tanggal Hijriah di bawah tanggal Masehi, atau menampilkan nama jabatan di bawah nama orang tua. Baik di Rails maupun di Padrino, biasanya saya akan menambahkan kolom baru di tabel yang bersangkutan.

Menurut saya ini kurang praktis. Di Jekyll, kita cukup menambahkan saja atribut yang bersangkutan di frontmatter, lalu menambahkan kondisi di template yang bersangkutan untuk menampilkan atribut tersebut jika ada nilainya. Jauh lebih sederhana.

3. Membuat template baru cukup merepotkan.

Saat membuat template baru, yang biasa saya lakukan adalah mendaftarkan template baru di halaman admin supaya muncul di halaman list template, lalu menambahkan template di codebase.

Template baru ini, kalau ada sedikit saja yang kelewat tesnya, cukup rentan kena error. Entah itu karena data yang wajib diisi masih kosong, atau karena masalah desain undangan yang berantakan jika ada beberapa fitur yang dinonaktifkan. Tentu ini sangat memengaruhi kesan pengguna terhadap Kanyaah.

4. Logika cukup sederhana

Logika aplikasi Kanyaah itu tidak ada yang berat, hanya operasi CRUD dan if-else yang masih bisa diimplementasikan di Jekyll dengan tag Liquid. Perhitungan total harga, pembayaran, kebijakan pengadaluarsaan undangan, dan sebagainya, di skala Kanyaah saat ini, masih bisa dilakukan secara manual, dan jauh lebih sederhana serta cepat.

5. Bisnis musiman

Undangan online itu bisnis musiman. Kalau sedang tidak musim nikah, jarang ada orderan. Sedangkan biaya server terus berjalan setiap bulan. Dulu sih tidak masalah, tapi in this economy, rasanya jadi buang-buang uang saja.

Static site generator seperti Jekyll memberikan fleksibilitas yang lebih kepada saya tanpa harus melakukannya secara berlebihan. Butuh custom template yang sudah ada? Saya cukup melakukan duplikasi saja file template tersebut lalu menyesuaikannya. Tidak perlu database lagi. Semua disimpan di sebuah file Markdown dengan frontmatter.

Bagaimana dengan ucapan dan konfirmasi kehadiran?

Satu-satunya yang jadi permasalahan adalah implementasi ucapan dan konfirmasi kehadiran, karena static site generator ini output-nya hanya berupa file HTML, tanpa ada aplikasi backend di belakangnya.

Di sinilah peran Padrino. Saya mengembangkan aplikasi kecil untuk manajemen tamu undangan, sebar undangan, serta manajemen ucapan dan konfirmasi kehadiran. Fitur ini tersedia di aplikasi web Kanyaah yang lama, hanya saja dibuat ulang menggunakan Padrino. Dengan sedikit JavaScript, integrasi dengan fitur ucapan dan konfirmasi kehadiran pun bisa dilakukan dengan mulus.

Saya juga membuat skrip untuk memigrasi data-data tamu serta ucapan dan konfirmasi kehadiran undangan-undangan yang masih aktif dari database Kanyaah ke database baru ini. Prosesnya cepat karena banyak dibantu oleh AI.

Hasilnya, sekarang Kanyaah bukan lagi sebuah aplikasi Rails monolith, tapi Jekyll + Padrino, dengan tampilan yang tidak terlalu banyak berubah. Semua alur pemesanan undangan digital sekarang dipindahkan ke WhatsApp dan tidak lagi tersedia di website.

Sistem ini pun menghemat cukup banyak resource server, dari total 600 MB penggunaan memori, menjadi sekitar 48 MB saja: 3 MB untuk website Kanyaah, 45 MB untuk aplikasi sebar undangan.

Pelajaran yang diperoleh

Dari semua proses ini, saya mendapatkan beberapa pelajaran penting:

  • Start small, start simple. Saya mengakui bahwa dulu saya ingin sekali punya side hustle yang berjalan sendiri. User tinggal isi data undangan, pilih template, lalu bayar. Uang otomatis masuk ke rekening. Makanya, saya invest banyak waktu dan tenaga (saya mengembangkan aplikasi Kanyaah di era sebelum AI ya!) untuk mengembangkannya. Turns out, sistem yang saya buat tidak membawa saya ke mana-mana. Makanya, penting sekali untuk mulai dengan teknologi yang hemat dan sederhana dulu. Kalau dengan teknologi sederhana saja sudah menyelesaikan permasalahan, ya sudah.
  • Apa yang menurut saya sudah oke, belum tentu sudah oke juga menurut pengguna. Tidak semua pengguna memiliki literasi teknologi yang sama. Ada yang memang sudah terbiasa, ada yang menyalin link di Google Maps saja tidak tahu caranya bagaimana. Sangat penting untuk memahami bagaimana latar belakang dan perilaku pengguna sebelum mengembangkan sebuah sistem untuk mereka.

Kalau kamu sedang memerlukan sebuah sistem juga, saya siap membantu. Kita ngobrol-ngobrol dulu saja, gratis konsultasi kok. Konsultasi sekarang via Threads atau Instagram.

Ada pertanyaan atau tanggapan tentang artikel ini? Balas via email