Databases & ORMs
Where the data lives and how I talk to it. PostgreSQL is my default — paired with Prisma or Drizzle depending on the deployment target.
PostgreSQL
My default database. Handles everything from simple CRUD to full-text search, JSON columns, and time-series data in one engine.
MySQL
I use MySQL when the project requires it — existing infrastructure, AWS RDS defaults, or legacy migrations.
MongoDB
The right pick for document-heavy data that doesn't fit neatly into tables — CMS content, event logs, flexible schemas.
Redis
I use Redis for caching, session storage, rate limiting, and real-time features like pub/sub. Fast in-memory reads are the use case.
SQLite
Perfect for local-first apps, embedded databases, and development environments. Increasingly used in production with Turso and Litestream.
Prisma
My default ORM. Type-safe queries, auto-generated migrations, and a great developer experience. Works with Postgres, MySQL, SQLite.
Drizzle
Lighter than Prisma, closer to SQL. I choose Drizzle when I need more control over queries or when bundle size matters (edge deployments).
TypeORM
I use TypeORM on existing NestJS projects that already depend on it. For new projects, I prefer Prisma or Drizzle.