Portfolio · 2026

Thitiphong Srisavat

Full-stack developer, four years. Mostly Golang and TypeScript. I've built enterprise SaaS, an e-commerce platform, and a construction permit system for the government.

That last one cost me some sleep.

What you'll have to put up with

I ask why a lot

I once spent three days asking why one role needed to see one table. Kept following it up the chain until I reached the person who ordered it. He said he didn't know, the old system just did that. We deleted it that afternoon. That was over a year ago and nobody has mentioned it since.

My estimates are the real ones

Which means they're always higher than the number you were hoping for. I tried giving someone the pretty number once. We shipped just as late. The difference was that time I felt bad about it.

If the idea is bad I'll say so there

In the room, to your face, instead of complaining about it over lunch. I know it kills the mood. The other option is finding out six months in, on your money.

I use tabs

I write Go. gofmt uses tabs. Take it up with Rob Pike.

Skills, in two piles

This pile is real

Golang
Most of my backend work. Echo, Gin, GORM. I like that it rarely lets me be clever.
TypeScript
Every day, and any still gets me about once a month. I don't believe anyone who says otherwise.
React / Next.js
I know when not to use it, which comes up more often than is good for me in interviews.
Svelte / Astro
The page you're reading is Astro. Zero JavaScript. View source if you want.
PostgreSQL / MySQL
I design the schema, I get it wrong, and then I write the migration.
Multi-tenant / ABAC
Access rules that enterprise customers configure themselves. The kind of work that fails silently until the day somebody sees a row they shouldn't.
Docker / AWS / GCP / CI/CD
I can get it deployed, and deployed the same way twice. The second part is the hard part.
Reading logs
Nobody puts this on a CV. It's where most of my day goes.

This pile is here for the ATS

Blockchain
Read one article. 2021.
Kubernetes
Applied a YAML file someone else wrote and it came up. No idea why.
Machine Learning
I know it wants random_state=42. I don't know why it's 42.
Agile / Scrum
Thousands of standups. Never once saw a blocker come unblocked in one.
Fast learner
Means never done it.
Passionate
In a job ad this means unpaid overtime. I am not passionate.
Team player
Everyone puts it, so I put it.
Leadership
Last one left.

Things that haven't broken yet

Carmen Software · Nov 2024 – present · React, Nest, Go

Procurement and inventory SaaS

Several enterprise customers on one codebase, none of them configured the same. I built the access layer so customers set their own rules. A new permission set used to mean a deploy. Now it doesn't.

Grammick House · Jul – Nov 2024 · Next

A full e-commerce platform

Storefront and admin panel from nothing. Products, cart, orders, payments, stock. I also thought it was just CRUD, right up until the day the money coming in didn't match the orders going out.

Mapboss · Jan – Jul 2024 · Next

Construction permit system

Permit applications, citizens on one side and government officers on the other. I built the map: people draw their own land boundary and the area gets calculated for them. I have now seen a great deal of real Thai land. None of it is a rectangle.

Unit Company · Aug 2022 – Dec 2023 · full-stack

MaxMe, MaxMeShop and an HRM system

Taking over code other people wrote. New features, production bugs, database design for an HR system. Eighteen months of hearing “the old system does it this way” until I could hear it coming.

What I build when nobody's paying me

Nobody hired me to build these two. Every decision inside them is mine. So are the bad ones.

SvelteKit + Svelte 5 · Go, Echo, GORM · Postgres 17 · Docker

Daewdo

Started as a deliberately dumb todo list. Type, enter, tick, done. It now has accounts, projects, people you can assign things to, and an editor you click straight into. It was not supposed to get this big.

Go · net/http + html/template + htmx · Postgres · Redis · no frontend framework

DataDlux

Point it at any JSON API, say when to go look, and it keeps everything in a database you own. Search it, filter it, pull it out as CSV, have it shout when something new turns up. New sources get added from the web UI, no code. I built it because I was tired of opening the same tabs every morning.

Reasons you're about to pass on me

Everyone has this section. Nobody puts it on their site. I'd rather say it than have you guess.

I don't have a CS degree

Vocational diploma in instrumentation, Thai-Austrian Technical College, Chonburi. If you filter on field of study I was gone before you got to this line.

In four years no certificate has ever helped during an outage.

Four companies in four years

I counted too. Every one of them a different domain — enterprise SaaS, e-commerce, government, HR. You start to see which problems every industry has.

If you want to ask about it in the interview, ask. I have an answer ready.

I've never run anything at millions of users

My systems have hundreds to thousands of users and cost someone real money when they break. I have no big scaling story, and I'm not going to make one up.

If the role needs somebody who has actually lived through that, it isn't me.

How to get a reply

Email
Fastest. Two days. No reply means spam folder, or I ignored it, and I won't say which.
GitHub
The code I'm willing to show you. Much less than the code I've written.
Phone
Not on this page. Bots collect numbers faster than recruiters do. Email me for it.
Messages with no salary range
I have an archive button.

thitiphong.srisavat@gmail.com

github.com/thitiphongD