Case study
Saravá: client CMS on Vercel for a cultural center
Espacio Cultural Saravá is a community center in Bolívar, Buenos Aires. The live product is a Next.js app on Vercel with a Clerk admin CMS, Neon/Prisma content, Vercel Blob media, and reader comments. v1 was a static GitHub Pages export with JSON-in-Git; this case centers on the CMS that replaced it.
← Back to portfolio



Home
1. Problem
Organizers needed to publish posts, novels, events, and branding without editing JSON in pull requests. They also wanted media uploads and reader comments on radio, podcast, and cultural posts.
A full rebuild was off the table. The job was to move the existing public site onto a hosted runtime, add authenticated publishing, and keep the cultural sections (radio, podcast, reading club, espacio cultural) intact.
2. Architecture
Next.js App Router on Vercel; Neon Postgres via Prisma; Clerk for admin allowlist and reader auth; Vercel Blob for images:
- Public App Router sections for radio, podcast, reading club, cultural space, and about, plus dynamic post routes with per-entry metadata.
- /admin behind a Clerk allowlist: CRUD for posts, novels, events, team, and branding.
- Prisma models on Neon for content and comments; no JSON-in-Git as the source of truth.
- Vercel Blob for image uploads with admin previews before publish.
3. Admin CMS
Client admins publish from the browser. Auth is an allowlist, not a free-for-all signup:
- Clerk gates /admin; only listed accounts reach the CMS.
- Image previews and a visual team editor so branding updates do not require hand-edited JSON.
- Featured flags drive an adaptive hero that only shows spotlighted content.
- GitHub Actions runs lint and a production build on every push.
4. Community layer
Readers can participate without touching the admin surface:
- Reader auth via Clerk for comments on posts, novela, radio, and podcast pages.
- Spotify show link on the podcast surface.
- Featured-only hero so empty slots do not dilute the homepage.
- Admin multi-theme picker for pastel palette previews.
5. v1 → v2
v1 solved zero-cost hosting and per-post SEO with Next.js static export to GitHub Pages and Zod-validated JSON. That was the right first ship. Authenticated publishing and Blob media needed a hosted runtime.
- v1: static export, GH Pages, JSON-in-Git, Zod content validation in CI.
- v2: drop static-only export; deploy Next.js on Vercel with Neon and Blob.
- Public section IA and per-post SEO patterns carried forward into the runtime app.
- Live URL is the Vercel deployment, not the old github.io path.
Honest scope: this is a freelance client commission in production, not a high-traffic SaaS. The upgrade path from static hub to CMS is the engineering story.
6. Outcomes
- Client admins publish from /admin with image previews and a visual team editor.
- Live app on Vercel with Neon + Blob instead of static GitHub Pages only.
- Reader comments on posts, radio, and podcast, plus a featured-only adaptive hero.
- CI covers lint and production build on the CMS codebase.