Tholib Usman HanafiFullstack Engineer

Yogyakarta, Indonesia / open to Singapore

Tholib Usman Hanafi

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

Since 2021 at PT Istana Mesin Laundry I have taken three products from idea to release: self-service laundry on IoT, a multi-tenant HR and attendance system, and an on demand delivery app. I started by writing the code and now plan and drive the delivery of all three, without handing the code to someone else.

Why me

A short track record.

From a technical role to leading delivery

My first production code shipped in 2020, four years before I graduated. Six years later I plan and drive delivery for three products in production, promoted from Fullstack Developer to Project Manager in 2025, without leaving the code.

I lead across engineering and design

I align engineering and design across three products in production, and I led two stack moves: Laravel to React Native in 2023, and to NestJS in 2025.

Backend internship in Singapore

In 2024 I shipped bug fixes and new backend features for a French client's education certification platform, reading into a codebase I had not written and working in an English speaking team.Zettabyte Pte Ltd / Singapore / internship

01 / SCALE AND RELIABILITY

KRISPAY

A self-service laundry ecosystem on IoT: hardware and software integration across 80+ locations that have to stay available on internet that drops.

Fullstack Engineer2022 to presentLaravelIoTMySQL
~2,000
tx / day
80+
locations
3 yrs
in production
The decision

A payment can succeed at the provider while the confirmation never reaches us. Every transaction carries a key the server recognizes on repeat, and the server queries the provider directly when no confirmation arrives in time. The trade off is that unfinished payments stay open longer and are reconciled by a scheduled job. I accepted it, because charging a customer whose machine never starts costs more than money.

Read the full case study
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 YOU CAN TRUST

Presein

A multi-tenant HR and attendance system with location tracking for 250+ employees, plus an LLM chatbot for root cause questions and KPI review.

Fullstack Engineer2023 to presentReact Native ExpoLaravelOpenAI
250+
employees daily
3 to 5 days
paperwork removed / month
The decision

If clocking in is only a button, anyone can press it from anywhere. The app checks the employee location against their own branch, asks for a photo, and detects mock GPS and altered device clocks instead of trusting the phone. The trade off is that weak indoor signal makes clocking in harder. I accepted it, because attendance data nobody trusts makes every payroll decision built on it useless.

Read the full case study

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 / ZERO TO ONE, B2C

Londrin

An on demand laundry delivery app, owned end to end: roadmap, user stories, and one order status kept in sync between customer, courier, and branch.

Frontend Engineer + Project Manager2026 to presentReact Native ExpoNext.jsREST API
3
parties, one status
2
apps + merchant dashboard
The decision

Launched recently, so the honest measure is how complete the flow is, not how large it runs. Each side can stall for its own reason: the courier arrives before the customer is ready, the branch weighs the load heavier than the estimate so the price changes, or the wash finishes with no courier free. The order state machine has to hold in all three cases.

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

Six years of production code, four of them before graduation.

2020First production code on Laravel, PHP
2021Joined PT Istana Mesin Laundry as Fullstack Developer
2022KRISPAY live. IoT payments in the first branchesLaravel
2023Presein, 250+ employees on React Native Expoto React Native
2024Backend internship, Zettabyte Pte Ltd (Singapore)
2025Stack moved to NestJS, promoted to Project Managerto NestJS / promoted
2026Londrin launched, graduated with GPA 3.81
Photo
170 x 170

Project Manager and fullstack today, aiming at product management next.

Ready to relocate to Singapore. Tell me about the product and the team behind it, and I will reply with the work of mine that sits closest.