lukia

Work — write-ups

The decisions, not the screenshots.

Write-ups of shipped products, aimed at the decisions rather than the screenshots. Each one covers what the constraint was, what it cost, and what it would be a stretch to claim was proven. Where the thing is running, it is linked — and using it is a better read than any of this.

01 — Case studies

constraint · cost · what stays unproven

01 / STARTER KIT · SPRING BOOT

Payment webhooks done properly

A Spring Boot starter for the half of a PayFast integration that actually breaks: three different signature rules, idempotency as a database constraint, retries that survive a rollback, and the webhook that never arrives.

The PayFast sandbox checkout built from these kits: an amount and item field above a Pay with PayFast button, over a note that no money moves.

02 / TEMPLATE · ASTRO

Zero-JS Astro starter

A personal-site template with nothing in its script budget — Astro, plain CSS, WCAG AA, and one flag that keeps a site out of search until launch. Extracted from this one.

The zero-JS Astro starter's live demo at template.iamlukia.com, showing the template's own home page.

03 / GAME · TYPESCRIPT · CANVAS

Circle Connect

A real-time node-capture strategy game against AI rivals, with a twenty-level campaign and saved progress — playable from the keyboard alone, in a genre that almost never is.

A Circle Connect match in progress: towers scattered on a dark board with their unit counts, the rival faction holding nine of them in amber and streaming units down two beams, and the tick counter reading 0256 of 3600.

04 / APP · KOTLIN · NEXT.JS

readlater

A self-hosted read-later app in Kotlin and Next.js, where one cookie requirement decided the whole deployment — plus a fetcher that treats every saved URL as hostile, and what a passing test cannot tell you about a session.

readlater's sign-in screen — the app is single-user behind a GitHub allowlist, so this is as far as a visitor gets.

05 / DEMO · ASTRO · REACT

ZA Payments Demo

A public walk through a South African payments integration — onboarding, what actually gets signed, the webhook that never arrives, and a dashboard where money is integer cents the whole way through.

The PayFast Signature tracer: a pasted ITN body and a merchant passphrase above a green Valid verdict, over a table listing each field in the order it arrived with the exact string being hashed beside it.

02 — Method

How these are written

A portfolio that only shows finished screens is showing you the easy half.

The interesting part of any build is the set of decisions taken under a constraint — what got traded away, what turned out to be wrong later, what the number actually was once it was measured rather than estimated. That is what these are about.

So they are deliberately specific, and they include the parts that did not go cleanly. For anyone weighing up the work — whatever they are weighing it up for — this is a more honest sample than a list of technologies, and the product itself is a better one still.

Something here close to what you're building?