All projects

Modern Blog

Live

Full-stack CRUD blog on Next.js 15 App Router, with Server Actions and Clerk-protected authoring.

Modern Blog

Stack

  • Next.js 15
  • TypeScript
  • Tailwind CSS v4
  • Server Actions
  • Zod
  • Clerk

The problem

A second course project, this time aimed squarely at Next.js 15's App Router and Server Actions — a blogging platform where every write operation (create, edit, delete) goes through validated Server Actions and requires authentication, not just a public form.

Approach

MVC-style structure on top of the App Router: routes stay thin, business logic lives in dedicated modules, and Clerk handles sign-in and gates the CRUD actions server-side rather than trusting the client. Zod validates every submission before it's persisted.

Key decisions

  • Server Actions for create/edit/delete with instant, optimistic UI updates — no separate REST layer to maintain.
  • Clerk-based authentication gating all write operations; reading the blog stays public.
  • Responsive UI with glassmorphism styling, pending/loading states, and inline validation errors instead of alert()-style feedback.
  • TypeScript strict mode throughout.

Result

Deployed on Render as a working MVP. One deliberate trade-off I'm upfront about: posts persist to a JSON file, not a database, so content resets on redeploy — a real limitation of the file-system approach, not a bug. Migrating to PostgreSQL via Prisma is the next planned step, already scoped in the repo's roadmap.

Hosted on a free tier — the first request takes ~30s to wake the server.

Want something like this? Get in touch