Node.js · Express · ASP.NET · REST API design · authentication and authorisation · third-party integration
Work that runs on spreadsheets, paper trails and chat messages, turned into something people actually use.
Most businesses outgrow their systems long before anyone gets time to fix it.
The work ends up spread across a spreadsheet, a chat thread, and somebody’s memory.
Everyone knows which parts are fragile. Nobody has a spare month to stop and rebuild them.
It keeps working, right up until it doesn’t.
That’s the work I like. Going in while everything is still running, and leaving behind something people would rather use than the thing they had before.
A selection. There are others. Most are client work, so system names and screenshots are omitted.
Then the data stops being yours to own.
Then it stops being data, and starts being money.
And then the money belongs to one person, with no safety net at all.
Where money moves, I stop the automation short.
On the bank integration, confirmed payments wait in a staging collection until a person approves them. On Prodasher, a withdrawal that hasn’t been confirmed is never automatically retried, because a retry could send the money twice.
Two projects, two teams, same decision. Knowing where not to automate is usually the more important one.
Most of what I build goes into a business that already runs. It has to fit around live processes and the people using them rather than replacing everything at once. That is harder than starting clean, and closer to what the work actually is.
I didn’t know the travel business when I started in it. The people doing the job did. I built from what they told me, changed it when they told me I’d got it wrong, and trained them on it myself.
I work solo and alongside other people, and I’ve shipped both ways.
Node.js · Express · ASP.NET · REST API design · authentication and authorisation · third-party integration
React · Next.js · TypeScript · Tailwind · MUI · Zustand · TanStack Query
PostgreSQL · MySQL · MS SQL · MongoDB · Firestore · schema design · migrations and backfills
Vertex AI · Dialogflow CX · Gemini API