Tech Stack & Approach

The technologies I use and the principles that guide my technical decisions. Boring, proven, reliable.

Technical Philosophy

How I think about technology choices

Boring Technology

I choose proven, stable technologies over trendy ones. PostgreSQL over the latest NoSQL fad. React over the newest framework. Reliability beats novelty.

Simple Architecture

Start simple, add complexity only when needed. A monolith that works is better than microservices that don't. Premature optimization is the root of all evil.

Performance Budget

Every page should load in under 3 seconds. Every API call under 200ms. Performance is a feature, and it's measured, not assumed.

Version Everything

Code, infrastructure, documentation — if it can be versioned, it should be. Git is non-negotiable. Rollbacks should be trivial.

Data Integrity

Database constraints, foreign keys, transactions. The database should protect your data even when the application has bugs.

Test What Matters

Not 100% coverage, but critical paths tested. Integration tests > unit tests for business logic. If it breaks the business, it needs a test.

Technology Stack

Tools I use daily to build scalable systems

Frontend

Modern, performant user interfaces

Next.js 16

React framework with App Router, Server Components

React

Component-based UI development

TypeScript

Type-safe JavaScript for better DX

Tailwind CSS

Utility-first CSS framework

Framer Motion

Production-ready animations

Backend

Scalable server-side solutions

Node.js

JavaScript runtime for server-side

Express/Fastify

Fast, minimal web frameworks

PHP/Laravel

When the project requires it

GraphQL

Flexible API queries

REST APIs

Standard HTTP interfaces

Database

Data storage and management

PostgreSQL

Primary relational database

MySQL

When PostgreSQL isn't available

Redis

Caching and session storage

Prisma

Type-safe database client

Elasticsearch

Full-text search

Infrastructure

Cloud and deployment

Docker

Containerization for consistency

AWS

EC2, S3, RDS, Lambda, CloudFront

Vercel

Optimal for Next.js deployments

DigitalOcean

Simple, cost-effective VPS

Nginx

Reverse proxy and load balancing

DevOps

Development workflow

GitHub Actions

CI/CD automation

GitLab CI

Alternative CI/CD

Sentry

Error tracking and monitoring

Jest

Testing framework

ESLint/Prettier

Code quality tools

Why This Stack?

After 18+ years of building systems, I've learned that the best technology choices are often the most boring ones. The latest framework might be exciting, but PostgreSQL has been rock-solid for decades.

My stack is optimized for:

  • Maintainability — Can a new developer understand this in a week?
  • Reliability — Will this work at 3 AM without intervention?
  • Scalability — Can this handle 10x growth without a rewrite?
  • Developer Experience — Is this enjoyable to work with?
  • Hiring — Can we find developers who know this?

I'm not dogmatic about specific technologies. The right choice depends on your context, team, and constraints. But I will push back on choices that prioritize novelty over stability.

Let's Discuss Your Technical Requirements

Every project is different. Let's talk about the right approach for yours.

Start a Conversation