A modern, opinionated stack.
Battle-tested tools, chosen for type safety, performance, and long-term maintainability.
Frontend
I default to Next.js (App Router) and React with TypeScript because they give you SSR-rendered HTML for SEO, server components for fast first paints, and a typed contract between UI and data. The strict TypeScript setup catches whole classes of bugs before they reach review — a non-negotiable for codebases that need to live for years.
Backend
Kotlin on the JVM gives you Java's library ecosystem with a modern, expressive language and structured concurrency via coroutines. I pick Ktor for lightweight services and Spring Boot when you need the broader enterprise toolbox (Security, Data, Cloud) without rebuilding it from scratch.
Database
PostgreSQL is the default for nearly every project — relational, transactional, with great JSON support, Row-Level Security for multi-tenant apps, and a deep ecosystem (PostGIS, pgvector, full-text search). MongoDB and MySQL show up only when the data shape or team familiarity makes them the better fit.
Mobile & Desktop
Kotlin Multiplatform lets you share business logic, networking, and persistence across Android, iOS, and Desktop while keeping native UI where it matters. Compose Multiplatform pushes that share even further when you want one UI codebase. The result: less duplication, faster iteration, and consistent behaviour across platforms.
Stack questions, answered.
Why Kotlin instead of Node.js or Go for the backend?+
Kotlin gives you the JVM ecosystem, structured concurrency via coroutines, and a type system that catches more at compile time than dynamic languages. For long-lived business logic, money, and data integrity, that matters more than raw startup time. Node and Go are great fits for some workloads — I pick per project, not per dogma.
Is Postgres always the right database choice?+
No, but it's the right default. ~90% of projects benefit from a relational core, transactions, and SQL. I reach for MongoDB when the data is genuinely document-shaped or the team is already running a Mongo cluster, and for specialised stores (Redis, ClickHouse, search engines) when the workload demands them.
Do you use Tailwind / shadcn / a specific UI kit?+
Tailwind plus shadcn/ui is my default for new web projects — accessible primitives, no opinionated theme to fight, and full control over markup. For mature design systems I integrate with whatever you already use rather than impose a new one.
How do you decide between SSR, SSG, and a SPA?+
Marketing and content sites: SSR or SSG so Google and social crawlers see real HTML. Apps behind auth: client-side hydrated. Mixed sites: route-by-route. The decision is driven by who needs to read the HTML — humans, bots, or both — not by framework fashion.
Can you work in our existing stack?+
Yes. The stack here is what I default to for greenfield work. For existing projects I work in whatever you already run — Node, Python, .NET, PHP — and bring the same engineering discipline (typing, testing, CI, security) to it.
Start your project today.
Tell me about what you're building. I'll come back with a free estimate within 24 hours.