Your portfolio is a static HTML file. It works fine — until you want to update it without touching code, or track who's viewing it, or add a contact form that actually works. That's when you need a database. And Supabase makes it genuinely easy.

What We're Building

In 45 minutes, you'll have: a projects table that feeds your portfolio grid, a contact form that saves submissions to a database, basic analytics (page views, project clicks), and Row Level Security so your data is protected.

Step 1: Create the Project (5 min)

Sign up at supabase.com, create a new project, grab your API URL and anon key. These go into your portfolio's JavaScript as public variables — they're safe to expose because RLS handles the security.

Step 2: Create Tables (10 min)

Two tables: 'projects' (id, title, description, image_url, category, order, is_featured, created_at) and 'contacts' (id, name, email, message, created_at). Run the SQL in the Supabase dashboard.

Step 3: Wire the Frontend (20 min)

Include the Supabase JS client via CDN. Write a fetch function that pulls projects ordered by your 'order' column. Render them into your existing portfolio grid. Add a form handler that inserts into the contacts table. Done.

Step 4: Add RLS (10 min)

Enable RLS on both tables. Projects: public read, admin write. Contacts: public insert, admin read. This ensures anyone can view your portfolio and submit the contact form, but only you can manage the data.