Skip to content
Home

Uses

What I reach for

The defaults I start from when designing and shipping a system — and why each one earns its place.

Default backend stack

Node.js + TypeScript
First choice for APIs, real-time services and tooling.
AxilJS
My own modular backend ecosystem — routing, ORM, auth, queues, AI.
PostgreSQL
The system of record, unless there is a strong reason otherwise.
Prisma / Drizzle
Typed data access; Drizzle when I want to stay close to SQL.
Redis
Caching, rate limiting and lightweight pub/sub.

When the system gets bigger

RabbitMQ
Work queues and reliable service-to-service messaging.
Apache Kafka
High-volume event streams and replayable history.
ASP.NET Core
Enterprise platforms and teams already on .NET.
Python · FastAPI
AI services, data extraction and ML workloads.

Real-time

Server-Sent Events
One-way streams — dashboards, AI agent progress.
WebSockets / Socket.IO
Two-way, low-latency client sync.

AI

LLM APIs with model fallback
Resilience first: retries, fallbacks, streaming.
RAG
Grounding answers in the customer's own data.
Multi-agent orchestration
One focused agent per step instead of one giant prompt.

Infrastructure & delivery

AWS (EC2, S3, RDS)
Production hosting and managed databases.
Docker · Kubernetes · Nginx
Reproducible environments from laptop to production.
GitHub Actions
CI/CD for every repository.
Vercel
Next.js front ends — including this site.

Everyday tools

VS Code & Visual Studio
Home base for TypeScript, Python and .NET.
Git & GitHub
Everything is versioned, reviewed and automated.
Swagger / OpenAPI
Every API ships with a contract and live docs.