Clarence Neil Meneses

Portfolio Revamped: Portfolio & CMS

A self-hosted portfolio with a built-in admin CMS, where every section is editable without redeploying.

Next.jsReactSupabasePostgreSQLTailwind CSS
clarenceneilmeneses.vercel.app
Portfolio Revamped: Portfolio & CMS

I wanted a portfolio I could keep current without touching code or redeploying every time. So I rebuilt mine as a fully content-managed site: every section, from my profile and tech stack to projects, experience, certifications, and gallery, is editable from a private admin panase.

What I built

The admin CMS, where I edit and reorder every section of the live site.
The admin CMS, where I edit and reorder every section of the live site.

I built it on Next.js 14 with the App Router and Tailwind CSS, backed by Sud image Storage. The admin lives at /admin behind Supabase Auth, and I deliberately kept all secret keys out of the app. Every write is gated by row-level security, so the public site only ever uses the publishable key.

Everything is editable

There are no hard-coded sections. I manage projects, work history, skills, certifications, social links, and gallery photos directly in the CMS, with drag-and-drop reordering. Slugs are generated automatically, drafts stay hidden until I publish, and changes appear on the live site within seconds.

The challenge: free-tier cold starts

Supabase pauses free projects after about a week of inactivity, which would leave a portfolio loading slowly or blank. I solved this in three layers: a daily keep-alive cron that pings a lightweight endpoint so the project never registers as idle, ISR caching so visitors always get an instant cached page, and a bundled fallback snapshot that renders the site from local content if the database is ever truly unreachable.

SEO that maintains itself

Per-page titles, descriptions, canonical URLs, and Open Graph and Twitter tags are generated from the same CMS content. A sitemap that includes every published case study and a robots.txt are produced automatically, so my SEO stays correct as I add new work, with no manual upkeep.

The result is the site you are viewing right now. I can publish a new projeswap an image in seconds, with no deploy and no downtime. It is the foundation I use tokeep my entire portfolio current.