5 months ago
Barokah ERP

Barokah ERP adalah sistem ERP yang aku buat untuk PT Barokah Jaya Semesta, perusahaan di bidang konstruksi. Sistem ini punya beberapa modul utama: human resource information system, project Management, dan inventory.
Aplikasi ini sebenarnya untuk skripsiku, aku ingin cerita tentang alasan kenapa skripsiku bisa lama, kesulitan yang kuhadapi, solusi yang kucoba, lalu hasilnya seperti apa, dan apa yang kudapatkan
Alasan Kenapa Lama
Jadi selama ngerjain skripsi, aku malah terlalu enjoy ngodingnya daripada nulis laporannya. bahkan aku masih sempat intern sebagai frontend di Rakamin dan ikut dua project-kan satu buat perusahaan di surabaya bikin aplikasi internal, satu lagi sama anak perusahaan telkom (tapi yang anak telkom batal). Sedangkan laporannya aku masih belum sempat ngerjainnya, aku masih enjoy banget ngodingnya (kalo waktu itu disuruh ke barak 🏕️ aku pasti ke barak).
Sampai akhirnya aku sadar temanku yang lain udah lulus semua, cuma aku sendiri yang belum. Aku mulai fokus nyelesain laporan di bulan juni kemarin dan tanggal 24 juli kamis kemarin aku akhirnya sidang🎉
Kesulitan
Awalnya aku sendiri nggak terlalu ngerti ERP itu apa. Aku sering denger istilahnya, dan tahu kalau udah banyak yang bikin versi open source kayak Odoo, ERPNext, dan lain-lain. Dari situ aku jadi penasaran, akhirnya coba install dan eksplor sendiri gimana sih sebenarnya aplikasi ERP itu. Setelah aku pelajari ini bisa salah jadi ERP itu kumpulan sistem atau modul yang saling terintegrasi.
Karena ERP itu sistem yang besar dan kompleks, diriku sadar tiap perusahaan pasti punya kebutuhan yang berbeda. Karena itu sistem ini dirancang khusus untuk PT Barokah Jaya Semesta, aku juga pelajari sedikit tentang dunia konstruksi dan alur kerja di lapangan, biar fiturnya bener-bener relevan. Barokah ERP ini kemungkinan ga bakal langsung cocok kalau diterapkan di perusahaan lain tanpa penyesuaian.
Solusi yang kucoba
Solusi yang aku coba pertama-tama adalah memahami kebutuhan dari stakeholder. Seperti proyekan pada umumnya, aku mulai dengan tanya langsung ke stakeholder untuk gali kebutuhan mereka. Bedanya, di proyek ini aku juga melibatkan mereka di tahap desain dan coding. Setelah desain awal selesai, aku langsung kasih ke stakeholder untuk minta feedback. Dari situ biasanya muncul lagi kebutuhan tambahan yang sebelumnya belum kepikiran. dan modulnya juga nggak aku buat sekaligus, tapi aku pecah satu per satu.
Sekarang sedikit ke teknisnya, stack yang kupilih itu ada React.js, Express.js, dan bahasanya Typescript. kenapa pake react.js? kenapa ga pake frameworknya misal next.js karena sistem yang kubangun ini dia ga butuh SEO, dan juga server side rendering sistem ini hanya internal dashboard, berisi data-data yang harus dinamis, mungkin yang paling berat bikin route, bikin route atau halaman lebih mudah di Nextjs (btw aku juga pernah coba remix.js tapi masih kagok wkwk routenya memang rapih daripada yang nested sih), balik lagi akhirnya aku tetep pake react.js biasa toolnya pake vite lebih ringan sama cepet faktor externalnya laptopku kentangg🥔 (anyway dulu pas intern ketika aku jalanin server dev di local diriku harus nunggu lama bangett udh gitu laptopku jadi ngelag wkwk tapi aplikasinya memang superr gede btw). Kedua kenapa pake express.js? sebenarnya karena sama-sama javascript ditambah aku heavy di frontend aku rasa kalo backendnya pake bahasa yang sama bakal lebih gampang ga perlu belajar lagi dan express itu sangat bebas/unopinionated aku bisa langsung bikin ngedelop backendnya dengan gayaku, oh iya disini aku pisahin antara backend dan frontend karena sistem ini cukup gede menurutku bakal lebih mudah kalo dipisahin biar aku lebih fokus. Terakhir bahasa yang kupilih yaitu typescript karena apa? ya aku sering lupa😂 alasannya karena javascript itu bebas aku butuh sesuatu buat ngingetin dan nyalahin ketika ada yg ga sesuai/salah.
Hasilnya
Sistem ini terdiri dari tiga modul utama.
Pertama hris, modul ini digunakan untuk mengelola data pegawai, kehadiran, lembur, kasbon, dan payroll.

Kedua project management, digunakan untuk mengelola proyek, mulai dari input data proyek, upload dokumen, buat laporan harian, sampai mengatur siapa saja yang terlibat di proyek. Modul ini juga dipakai untuk stock out material dan pencatatan peminjaman barang atau alat dari gudang ke proyek.

Terakhir inventory, berisi pengelolaan data alat dan material, termasuk pencatatan stok masuk, stok keluar.

Selain 3 modul utama, aku juga menambahkan fitur semacam search, fitur ini aku terinspirasi dari fitur searching yang biasanya ada di web dokumentasi, misalnya di dokumentasi next.js

kalo barokah erp seperti dibawah, belum sempurna tapi aku sengaja bikin fitur ini buat ngurangin sedikit pain ketika mau pindah halaman karena sistem ini sedikit besar

Aku juga udah menerapkan role-based access control di sistem ini, tapi baru sebatas di sisi frontend. Jadi, kontrol akses antar user misalnya admin, HR, atau staff proyek bakal diatur berdasarkan role mereka, tapi masih di level frontend aja wkwk.
Karena ini cuma aplikasi internal dan user-nya kemungkinan besar nggak terlalu paham teknis, menurutku sih masih cukup aman untuk sekarang.
Sebenarnya di backend juga udah kusiapin middleware-nya, dan permission-nya juga udah kukirim lewat request. Tapi... aku udah capek 😅

Selain itu, aku juga nambahin end-to-end (E2E) testing pakai Playwright, walaupun belum semua fitur tercover, kebetulan juga waktu intern, E2E testing-nya pakai Playwright, jadi udah agak familiar.
Terakhir, aku setup CI/CD pakai GitHub Actions, biar setiap kali push ke repo langsung auto-deploy. Soalnya jujur aja, diriku malas keluar-masuk VPS cuma buat update aplikasi manual 😅.
Apa yang kudapatkan
Yang aku pelajari dari proyek ini, khususnya di bagian frontend, adalah soal struktur aplikasi React. Di sini aku pakai pendekatan feature-based, dan ternyata nyaman banget pake ini ketika aplikasi makin gede. Semua file terkait fitur tertentu dikumpulkan di satu tempat, jadi lebih rapi, mudah dicari, dan bikin proses development jadi lebih produktif.

Terakhir
Semua program frontend dan backend yang kubikin untuk skripsi-ku, reponya kubikin publik, bisa di cek link dibawah sama deploymentnya juga
repository frontend: github.com/mmulyana/erp-frontend
repository backend: github.com/mmulyana/erp-backend
link staging: erp-stg.barokahjayasemesta.com

nb: karena pas sidang ga ada temen, jadi yang fotoin pengujinya
