I build product systems, not isolated pages — applications with real users, permissions, workflows, data, integrations, and operational constraints.
My default environment is TypeScript / Next.js / PostgreSQL.
When the backend deserves its own weight, I reach for Java / Spring Boot.
Recently, I've been especially interested in AI-native workflows, automation, search, authorization, and systems that coordinate multiple actors cleanly.
Next.js TypeScript React PostgreSQL Java Spring Boot
toolbelt
Application
tRPC · REST · TanStack Query · Prisma · JPA / Hibernate · Flyway
Security
Spring Security · Better Auth · OAuth · JWT · RBAC · Zod
AI
OpenAI · Gemini · Vercel AI SDK · pgvector
Platform
Docker · Vercel · GitHub · pnpm · Maven · Stripe · Cloudinary
Testing
Vitest · Playwright · Mockito · MockMvc · Testcontainers
- Make state explicit. Hidden state becomes production bugs.
- Authorization is domain logic. “Logged in” is not the same as “allowed.”
- Prefer boring foundations. Complexity should solve a real constraint.
- Design for change. Good boundaries make the next feature cheaper.
- AI has to earn its place. If it doesn't remove work or improve a decision, it is noise.
You'll mostly find experiments and product work around full-stack systems, backend architecture, automation, and applied AI.
Some projects are public. Others are client, academic, or product work and stay private.
build → measure → simplify → ship
