Uses
What I build with
The tools, languages, and infrastructure I reach for most — the stack behind the work (and behind this site).
// Languages & core
- TypeScriptStrict mode, end to end — the default for everything.
- Node.jsThe runtime under most of what I ship.
- ZodOne schema → validation + types, shared across the stack.
// Backend & data
- NestJSPrimary backend framework — modular, DI, guards.
- Fastify / ExpressHTTP layer under Nest, or standalone when lean.
- Hono + DrizzleEdge-friendly stack for newer, lighter services.
- PostgreSQLMy default database; TypeORM or Drizzle on top.
- MongoDB / MySQLWhere the domain or the client calls for it.
- RedisCaching, rate limiting, queues, and locks.
// Messaging & async
- Apache KafkaEvent backbone for multi-service ecosystems.
- BullMQRetryable background jobs on Redis.
- AWS SQS + EventBridgeManaged queues + serverless scheduling.
// Frontend
- Next.jsReact framework of choice — App Router, RSC, ISR.
- ReactFor everything interactive.
- Tailwind CSSStyling the public side (this site included).
- Ant DesignAdmin dashboards and internal tools.
// Infrastructure & cloud
- AWSS3, SES, SQS, EventBridge, Rekognition in production.
- DockerLocal parity and container deploys.
- SupabaseAuth (JWKS) + storage when I want managed.
- Vercel / RenderWhere the frontends and APIs run.
// Tooling
- Turborepo + BunMonorepo orchestration + a fast package manager.
- BiomeOne fast tool for lint + format.
- VS CodeDaily editor.
- zshShell — hence the terminal theme.
- GitObviously.