Julio Rodriguez
← Blog

December 21, 2025

How I Built This Site: Next.js, Prisma, and Neon

Next.jsArchitectureBackend

This portfolio itself is one of the projects listed above, so here's a short rundown of how it's put together.

The stack

  • Next.js (App Router) with TypeScript, for both the frontend and the API routes
  • Tailwind CSS + shadcn/ui for styling and components
  • Prisma + Neon Postgres for the contact form and the CRUD demo in the playground
  • Resend for email notifications
  • MDX for this blog and the TypeScript patterns demo — no CMS required

A few decisions worth calling out

The contact form and the playground's CRUD demo both talk to Postgres, but through separate tables — mixing real visitor messages with demo data felt like the wrong trade-off, even for a side project.

model ContactMessage {
  id        String   @id @default(cuid())
  name      String
  email     String
  message   String   @db.Text
  createdAt DateTime @default(now())
}
 
model Note {
  id      String @id @default(cuid())
  title   String
  content String @db.Text
}

The Engineering Playground is built around a small config array rather than a plugin system — adding a new demo is one entry plus one route, nothing more.