All posts
  • meta
  • engineering

Building a career operating system

Why this site is not a portfolio but a single source of truth — one Supabase backend the public site reads and an admin dashboard writes.

2 min read

This site started as a portfolio and became something more useful: a career operating system.

Everything you see on the public page is read from one Supabase backend. Nothing public is editable in source code — an admin dashboard writes it, the public site reads it.

The repeatable recipe

Every content module is the same five steps:

  1. A table + RLS in supabase/migrations
  2. Types in src/lib/supabase/types.ts
  3. Public + admin reads
  4. Server-action writes
  5. Public section + admin CRUD
// Public reads are cookieless and ISR-cacheable.
export async function getPublishedPosts() {
  const supabase = createPublicClient();
  return supabase.from('blog_posts').select('*');
}

This blog is that recipe applied one more time. More soon.