Tholib Usman HanafiFullstack Engineer

Yogyakarta, Indonesia

Tholib Usman Hanafi

Project Manager dan Fullstack Developer / React Native / NestJS / Laravel / IoT

Sejak 2021 di PT Istana Mesin Laundry saya membawa tiga produk dari ide sampai rilis: laundry self-service berbasis IoT, sistem HR dan presensi multi-tenant, dan aplikasi antar-jemput on-demand. Saya mulai dari menulis kodenya, sekarang merencanakan dan mengawal delivery ketiganya, tanpa melepas kodenya ke orang lain.

Kenapa saya

Rekam jejak singkat.

Dari peran teknis ke memimpin delivery

Kode produksi pertama saya rilis pada 2020, empat tahun sebelum saya lulus. Enam tahun berselang saya merencanakan dan menjalankan delivery tiga produk yang berjalan di produksi, naik dari Fullstack Developer ke Project Manager pada 2025, tanpa berhenti menulis kode.

Memimpin tim lintas divisi

Saya menyelaraskan tim engineering dan desain di tiga produk yang berjalan di produksi, termasuk memimpin dua kali perpindahan stack: Laravel ke React Native pada 2023, dan ke NestJS pada 2025.

Magang backend di Singapura

Pada 2024 saya merilis perbaikan bug dan fitur backend baru untuk platform sertifikasi pendidikan milik klien Prancis, dengan membaca basis kode yang bukan tulisan saya dan bekerja di tim berbahasa Inggris.Zettabyte Pte Ltd / Singapura / magang

01 / SKALA DAN KEANDALAN

KRISPAY

Ekosistem laundry self-service berbasis IoT: integrasi hardware dan software di lebih dari 80 cabang yang harus selalu aktif, meski internetnya sering putus.

Fullstack Engineer2022 sampai sekarangLaravelIoTMySQL
~2.000
transaksi / hari
80+
cabang
3 tahun
di produksi
Keputusannya

Pembayaran bisa saja sudah sukses di sisi penyedia sementara konfirmasinya tidak pernah sampai ke server kami. Karena itu setiap transaksi membawa kunci yang tetap dikenali server meski dikirim berulang, dan server menanyakan langsung ke penyedia jika konfirmasi tidak datang tepat waktu. Konsekuensinya, transaksi yang belum tuntas tertahan lebih lama dan dicocokkan lewat job terjadwal. Saya ambil konsekuensi itu, karena menagih pelanggan sementara mesinnya tidak menyala merugikan lebih dari sekadar uang.

Baca case study lengkap
smartkris.app/branches/jogja-04
Machine statuslive / 12 units
W-01
running
W-02
idle
W-03
running
W-04
error
D-01
running
D-02
idle
D-03
idle
D-04
running
TRANSACTIONS TODAY1,984
CustomerPembayaran QRISOur serviceidempotency keyretry queuereconcile jobPayment providerQRISDevice firmwareours, no vendorMachines80+ locationsconfirm, or ask directlyunlock commandmachine status: idle / running / error
Smartkris, the NestJS rebuild. Our own firmware, no outside IoT vendor in the path.

02 / DATA YANG BISA DIPERCAYA

Presein

Sistem HR dan presensi multi-tenant dengan pelacakan lokasi untuk 250+ karyawan, ditambah chatbot LLM untuk menelusuri akar masalah dan evaluasi KPI.

Fullstack Engineer2023 sampai sekarangReact Native ExpoLaravelOpenAI
250+
karyawan tiap hari
3 sampai 5 hari
pekerjaan manual hilang / bulan
Keputusannya

Kalau absen hanya berupa tombol, siapa pun bisa menekannya dari mana saja. Aplikasinya mencocokkan lokasi karyawan dengan cabangnya, meminta foto, serta mendeteksi GPS palsu dan jam ponsel yang diubah, bukan sekadar percaya pada perangkat. Konsekuensinya, karyawan dengan sinyal lemah di dalam ruangan lebih sulit absen. Saya ambil konsekuensi itu, karena data kehadiran yang tidak bisa dipercaya membuat semua keputusan penggajian di atasnya ikut tidak berarti.

Baca case study lengkap

Presein / clock in

Cabang Jogja 04

inside branch radius, 18 m
device clock matches server
no mock location detected
photo proof required
CLOCK IN at 07:58

03 / DARI NOL, LANGSUNG KE PELANGGAN

Londrin

Aplikasi antar-jemput laundry on-demand yang saya kawal end-to-end: roadmap, user story, dan satu status pesanan yang tetap sinkron antara pelanggan, kurir, dan cabang.

Frontend Engineer + Project Manager2026 sampai sekarangReact Native ExpoNext.jsREST API
3
pihak, satu status
2
aplikasi + dashboard merchant
Keputusannya

Aplikasi ini baru rilis, jadi ukuran yang jujur saat ini adalah kelengkapan alurnya, bukan besar skalanya. Tiap pihak bisa tertahan dengan alasan yang berbeda: kurir datang sebelum pelanggan siap, cabang menimbang cucian lebih berat dari perkiraan sehingga harga berubah, atau cucian selesai tetapi belum ada kurir yang bisa mengantar. Status pesanannya harus tetap konsisten di ketiga situasi itu.

Baca case study lengkap
londrin.app/orders/4821
Order #4821in wash
picked upweighedwashingdeliverprice updated, 4.2 kg
COURIER: BUDI S.ETA 18 min
Timeline

Enam tahun kode produksi, empat di antaranya sebelum lulus kuliah.

2020Kode produksi pertama di Laravel, PHP
2021Bergabung di PT Istana Mesin Laundry sebagai Fullstack Developer
2022KRISPAY mulai beroperasi, pembayaran IoT di cabang pertamaLaravel
2023Presein, 250+ karyawan di React Native Expoke React Native
2024Magang backend, Zettabyte Pte Ltd (Singapura)
2025Stack pindah ke NestJS, naik menjadi Project Managerke NestJS / promosi
2026Londrin rilis, lulus dengan IPK 3.81
Photo
170 x 170

Sekarang Project Manager dan fullstack, tujuan berikutnya product management.

Siap pindah ke Singapura. Ceritakan produknya dan tim di baliknya, saya akan membalas dengan pekerjaan saya yang paling dekat.