skip to content

SOK SOTHY

~ $ cat stack.txt

The stack, top to bottom

Read down and you are following a request through the system. The tools are the easy part — what follows each one is why it is there.

01

interface

Server-rendered by default. Client state only where it has to live, because every hook I ship is weight somebody downloads.

  • TypeScript
  • Next.js
  • Vue
  • Nuxt
  • Tailwind CSS
  • shadcn/ui
  • Redux
  • Vite
  • Three.js
  • Figma
02

api

Modules before microservices. One deployable until traffic argues otherwise — a distributed system you did not need is just latency you chose.

  • NestJS
  • Express
  • Bun
  • Prisma
  • TypeORM
  • Better Auth
  • JWT
  • Passport
  • Swagger
  • Socket.IO
03

services

Node is where I am fastest, not where I stop. Picking the runtime a problem already has an ecosystem for beats bending the one I know.

  • Python
  • FastAPI
  • Django
  • Go
  • Java
  • Spring
  • PHP
  • Laravel
04

data

Postgres holds the truth. Redis holds what is hot. ClickHouse answers the questions Postgres should never be asked.

  • PostgreSQL
  • MariaDB
  • MongoDB
  • SQLite
  • Redis
  • ClickHouse
  • Supabase
  • Firebase
05

events

Anything a user should not wait for leaves the request and comes back later. Reports, mail, exports — none of it belongs in a response.

  • Kafka
06

runtime

The same image in development and in production, or the environment is the bug. K3s on my own hardware is where I learned what the managed platforms hide.

  • Docker
  • Podman
  • Kubernetes
  • Nginx
  • Traefik
  • Terraform
  • Ubuntu
  • Debian
  • Arch Linux
07

cloud

Managed until managed stops paying. Knowing what a platform does for you is the only way to know what it costs you.

  • Google Cloud
  • Cloudflare
  • Cloudflare Workers
  • Vercel
  • Railway
  • DigitalOcean
08

delivery

Shipping is a pipeline, not an event. And if it is not graphed, it is not running — it is only assumed to be.

  • GitLab
  • Jenkins
  • GitHub Actions
  • Grafana
  • Prometheus
  • Datadog

workbench

  • Git
  • GitHub
  • Jest
  • Vitest
  • Postman
  • k6
  • Neovim
  • Obsidian
  • Notion
  • Jira

Still learning: how to make a cluster boring enough to ignore.

To[email protected]
send ⏎

opens in your own mail client

open to work

Phnom PenhICT

お気軽にご連絡ください

~ $