
Hikayat
A host wants every guest's photos and wishes in one place, without asking guests to install an app.
One album guests fill from the browser, sent to the phone of everyone who came.
Visit Hikayat (opens in a new tab)
System Developer in Kuala Lumpur. Every part around my name is one of the 138 components I built, and each one works. Try them.
Booking flows, invoices, payments, and the rules that decide who sees what. People only notice these parts when they break, so I make sure they do not.
Most of what I touch is money or personal data, so I care more about getting it right than being clever about it.
Kuala Lumpur, Malaysia3.14° N, 101.69° E--:-- GMT+8
Where I build from ·
5 projects · 2026

A host wants every guest's photos and wishes in one place, without asking guests to install an app.
One album guests fill from the browser, sent to the phone of everyone who came.
Visit Hikayat (opens in a new tab)
I wanted components that are mine to change, in every project after this one.
138 React components. One command copies one into a project, and this site runs on them.
Visit hlmnhkl/ui (opens in a new tab)
A small workshop needs people to find the next class and book a seat.
Booking for visitors, and one dashboard for the team's classes, payments and customers.
Visit by.haibllee (opens in a new tab)
How far can a marketing site go with big type and a hero that carries the work?
A landing page for an invented studio, with a projects carousel and sample content.
Visit Studio & Concept (opens in a new tab)
A contractor needs visitors to understand the job and ask for a quote.
A landing page with what they do, how it works, and a quote request.
Visit RenovateMY (opens in a new tab)The kinds of systems I work on. Each one below points at something I have shipped.
Taking an idea the whole way on my own: design, build, deploy, and the fixes after launch.
by.haibllee and hlmnhkl/ui, both designed, built and shipped on my own.
Taking money online without losing track of it. Invoices, deposits, refunds, and the awkward parts: someone closing the tab mid-payment, or paying twice.
A place people sign in to see their own things, and only their own things. Access rules enforced in the data layer, so they hold even if the interface has a bug.
An election data dashboard I built for myself, with its own encrypted data layer.
Marketing sites and landing pages built to load quickly and be found, without a pile of JavaScript getting in the way.
This home page, every screenshot and the whole map included, is under 450 KB on a computer. Less than one phone photo.
Often the useful job is not a rebuild. A slow page, a broken checkout, a bug nobody can reproduce. Much of my work is in code I did not write.
Most of my writing is exactly this: what broke, why, and what I changed.
What broke in production, why, and what I changed.
I build the systems people only notice when they break, so I make sure they do not.

When something breaks in production, I do not add a workaround. I find the real cause, fix it there, and write up what happened so the next person does not lose a day to it.
If the only thing keeping sensitive data out of a response is the app remembering to ask for the safe fields, then one bug leaks it. Permissions belong in the database first. The app filtering stays, but as a second layer, not the only one.
Anything important cannot depend on the customer coming back to the page. Payment confirmation happens server to server, so the order still finishes when their browser does not.
Architecture, data model, auth flow, the bug I just fixed. I keep them in the repo next to the code. It is how I think a problem through, and it is what I hand over when someone else picks it up.
Frameworks
Language & Styling
State & Backend
Cloud & Hosting
Motion, 3D & Testing
Happy to talk about the work or hlmnhkl/ui. You can find me here.
Kuala Lumpur, --:-- GMT+8
This page is built from 32 of my 138 components.