I didn't start here.
Before writing a single line of code, I spent years on a factory floor as a production operator — tracking output, managing flow, watching where things broke down. That context didn't leave when I switched paths. It's in how I think about what I build.
I came to software because I needed a skill that could generate real leverage, not just a paycheck. That decision led me to teach myself JavaScript, then Next.js, then start building things that solved actual problems — a cashier system for a small café, a POS and inventory tool for independent sellers, an AI assistant for small repair shops.
I'm still early. But I don't build to fill a portfolio. I build because something needs to exist.
Currently working on
A dropship operations dashboard — built for my own business workflow, using Next.js, Supabase, and Shadcn UI. The goal is a clean interface that handles product management, cost tracking, and order flow without unnecessary complexity.
Also rebuilding Kedai Artha — a café ordering system I first built during vibe coding phase — this time with full understanding of the stack: React Native and Supabase, from scratch.
What I work with
How I think about code
I write for what happens after deploy — not just for what works in development. That means I question every piece of state I add, every component I create, and every database call I make. Not out of perfectionism. Out of habit from working in environments where inefficiency has a cost.
Projects
bengkel-ai — AI-powered assistant for small repair shops. Diagnosis support, service history management, and automatic WhatsApp message generation.
swift-pos — POS and inventory dashboard for independent sellers. Multi-user support via Supabase auth, real-time stock tracking.
trading-journal-web — Personal trading journal to track entries, exits, and patterns over time.
GitHub Stats
Background
Self-taught. No CS degree — SMK graduate, Electronics major. Learned by building. Still learning by building.