Lewati ke konten
RazinSaid

Milih Senjata: NestJS, React, dan MySQL

RS
Razin Said
3 menit baca
Bagian 2 dari 5 · Seri Membangun smart_sppg: ERP untuk Program Makan Bergizi Gratis

Setelah tahu masalahnya, pertanyaan berikutnya sederhana: mau dibangun pakai apa?

Sebelum nyentuh kode, saya sebenarnya udah punya dua batasan yang bikin semua keputusan jadi lebih gampang. Pertama, aplikasinya harus bisa jalan di satu VPS biasa — bukan server mahal, bukan layanan cloud yang tagihannya bikin deg-degan. Kedua, saya ngerjain ini sendirian. Jadi apa pun yang saya pilih, harus gampang saya rawat sendiri tanpa bikin pusing.

Dari dua batasan itu, pilihannya mulai kelihatan.

Backend: NestJS

smart_sppg ini bukan aplikasi kecil. Isinya banyak bagian yang saling nyambung: pembelian ke vendor, produksi di dapur, distribusi ke sekolah, sampai pembukuan. Kalau ditumpuk sembarangan, kode seperti ini gampang berubah jadi benang kusut.

Di sinilah NestJS kepakai. Dia "maksa" kode ditata rapi per modul. Urusan vendor ada di tempatnya sendiri, urusan dapur di tempatnya sendiri, begitu seterusnya. Waktu modulnya makin banyak, struktur inilah yang bikin saya nggak gampang nyasar — apalagi karena ngerjainnya sendiri.

Bonusnya, NestJS pakai TypeScript. Buat saya ini penting: banyak salah ketik atau salah tipe data yang ketahuan pas ngoding, bukan pas aplikasinya udah dipakai orang.

Terus kenapa nggak Express yang lebih ringan? Justru karena terlalu bebas. Untuk aplikasi sebesar ini, kebebasan itu malah bikin repot — saya harus nentuin sendiri semua strukturnya dari nol. NestJS udah ngasih kerangkanya, saya tinggal ngisi.

Database: MySQL + Prisma

Buat database, saya pilih MySQL. Alasannya nggak neko-neko: dia umum, gratis, dan jalan di mana aja — termasuk di VPS murah atau hosting biasa. Ini nyambung sama batasan tadi: harus hemat.

Tapi saya nggak ngobrol langsung ke MySQL pakai query mentah. Saya pakai Prisma sebagai perantara. Kenapa? Dua hal. Pertama, skema datanya jadi jelas dan tertulis rapi di satu tempat, jadi saya selalu tahu bentuk datanya seperti apa. Kedua, tiap ada perubahan struktur database, Prisma nyimpen riwayatnya lewat migrasi. Buat yang kerja sendirian, ini penyelamat — database-nya nggak gampang berantakan seiring aplikasinya makin gede.

Frontend: React + Vite

Tampilannya saya bangun pakai React. Aplikasi seperti ini penuh sama tabel, grafik, dan papan kanban buat mantau produksi. Ekosistem React itu gede banget — hampir semua yang saya butuh (komponen tabel, chart, sampai drag-and-drop buat kanban) udah ada, tinggal dirakit.

Buat proses ngebangunnya saya pakai Vite, biar kenceng. Tiap nyimpen perubahan, hasilnya langsung kelihatan di browser tanpa nunggu lama. Kelihatannya sepele, tapi kalau dikerjain berjam-jam tiap hari, ngaruh banget.

Frontend-nya saya pisah dari backend (istilahnya SPA), dan dia ngobrol ke backend lewat satu pintu API. Ini juga sengaja, biar pas deploy semuanya bisa jalan dari satu domain tanpa ribet.

Benang merahnya: satu ekosistem, satu server

Kalau diperhatiin, ada satu pola dari semua pilihan di atas: semuanya masih satu ekosistem — JavaScript/TypeScript, dari depan sampai belakang. Backend jalan di Node lewat NestJS, frontend juga dunia JavaScript lewat React. Jadi sebagai orang yang ngerjain sendiri, otak saya nggak perlu bolak-balik antara dua bahasa yang beda — misalnya PHP di belakang, JavaScript di depan. Energinya bisa dipakai buat nyelesain fitur, bukan buat gonta-ganti cara mikir.

Dan semuanya — backend, database, tampilan — dirancang biar muat di satu VPS biasa. Nggak ada yang aneh-aneh, nggak ada yang mahal.

Sampai sekarang saya cukup puas sama kombinasi ini. Satu hal yang sempat saya timbang-timbang: cache pakai Redis. Ternyata nggak semua dapur butuh, jadi saya bikin fiturnya bisa dinyalain atau dimatiin. Kalau dimatiin pun aplikasinya tetap jalan normal, cuma nggak sekencang waktu cache-nya nyala.

Di chapter berikutnya kita masuk lebih dalam: gimana semua bagian tadi — vendor, dapur, sekolah, keuangan — disusun jadi satu sistem yang nyambung. Alias, arsitektur dan rancangan datanya.

Mau lihat langsung hasilnya? Demo smart_sppg ada di sini — tinggal login pakai akun demo yang tertera.

Bagikan: XWhatsAppFacebookLinkedIn

Artikel terkait