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

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.