Portfolio
2025Social Platform · Full Stack · Food

Experimental FoodLab

A social platform for food experimenters, where unexpected recipes, strange ingredient combinations, creative failures, and accidental discoveries are all worth sharing.


The Idea

Most recipe platforms are organized around the finished dish. Experimental FoodLab is organized around the person making it. The format is built on experiment cards rather than recipe cards, each one documenting a process and a result, including the ones that did not work.

The platform is designed for people who cook with a point of view: someone making a healthier version of a dish they grew up with, a person who has spent months perfecting a vegan take on something traditionally not vegan, an amateur chef whose food has drifted far enough from any existing recipe that it has genuinely become their own. The Signature Dish feature exists for that last case specifically. A user can name a dish, publish it under that name, and have it live permanently on their profile, distinct from their experiments. It is a way of claiming authorship over food you actually created.

The social layer is built around food identity rather than follower counts. Profiles include cooking styles, favorite ingredients, and a food identity field, so the people you find and follow tend to share a genuine overlap with how you think about food. Direct messaging and the follow system let those connections develop naturally, and the Open for Work feature gives food professionals a way to make their availability visible to anyone who encounters their work on the platform.

The gap this fills is not between recipe apps. It is between the creative food community that already exists on social media and a space that is actually structured around how that community works.


Features

01

Experiment Cards

Every post is a food experiment, not just a recipe. Users document what they tested, what happened, and whether it worked. Failed experiments are as welcome as successful ones. A 'Failed but interesting' tag carries the same weight as 'Unexpected but good.'

02

Taste Profile Tags

Each experiment is tagged with its flavor profile: sweet, salty, sour, bitter, umami, spicy. Users can filter the feed by taste to find exactly what they're looking for.

03

Social Feed & Follow System

A feed with three modes: All experiments, Following (people you follow), and For You (randomized discovery). Full follow system with follower and following counts on every profile, with dedicated followers and following list pages.

04

Would Cook Again?

Instead of likes, every experiment gets a binary vote: Would cook again / Skip. Pressing 'Would Cook Again' automatically saves the recipe to your profile collection, so voting and collecting are the same gesture.

05

Collections

Every profile has two collection tabs visible only to the owner: Would Cook Again (recipes you've voted on) and Saved (recipes you've bookmarked with the heart button). A third tab, Experiments, shows everything you've posted, and is visible to everyone.

06

User Profiles & Signature Dishes

Each profile has a food identity, favorite ingredients, cooking style tags, and an experiment level, from Beginner to Taste Scientist. Users can register Signature Dishes, their most iconic, perfected recipes, displayed separately on their profile as a personal culinary identity.

07

Direct Messaging

Real-time direct messaging between users built with Supabase Realtime, so food creators can connect directly, exchange ideas, collaborate on experiments, or discuss techniques without leaving the platform.

08

Open for Work

A professional layer built into the platform. Food professionals, chefs, recipe developers, food stylists, consultants, can activate an Open for Work profile with their services, location, headline, and background. Visitors can contact them directly through the messaging system.

09

Search

Full-text search across experiment titles, ideas, and results. Ingredient search: searching 'tahini' returns every experiment that used tahini. People search by username or food identity.


Technical Stack

FrontendNext.js 16 · TypeScript · React Server Components
DatabaseSupabase (PostgreSQL · Row Level Security)
AuthSupabase Auth (email/password)
StorageSupabase Storage (experiment images, avatars)
HostingVercel (auto-deploy from GitHub)
StylingInline styles + CSS custom properties (no framework)

The Open for Work Vision

The food industry has a communication problem. Finding the right chef for a private event, a recipe developer for a product launch, a food stylist for a shoot, or a consultant for a restaurant concept, these connections still happen through scattered networks, word of mouth, and slow back-and-forth. There is no dedicated space where food professionals signal their availability and clients can find and reach them directly.

The Open for Work feature is designed to close that gap. A food professional activates their profile with their services, location, and a headline, and becomes immediately discoverable within a community that already understands the food world. A client browsing experiments can move from seeing someone's work to contacting them in a single step, through the platform's built-in messaging system.

This removes the friction that currently exists between food talent and the people who need them. No external portfolios to hunt for, no cold emails into the void. The work speaks first — through experiments, signature dishes, and votes from the community, and the professional connection follows naturally from that context. Communication becomes faster, more informed, and grounded in actual creative output rather than resumes alone.

The longer-term potential of this layer goes further: a food sector where professionals can build a visible body of work, attract the right clients, and manage their availability — all within the same platform where they already share and discover. A professional network that grows out of a creative community, not the other way around.


What I Built

The full social layer, authentication, profiles, follow system, votes, saves, runs on Supabase with Row Level Security policies. Every user can only modify their own data. Images go to Supabase Storage with public read access.

The vote system uses a binary signal, Would Cook Again / Skip, instead of a like count. Pressing "Would Cook Again" both records the vote and automatically saves the recipe to the user's profile. The heart button saves independently. These two paths converge in the profile's collection tabs.

Profile collection tabs follow a deliberate privacy model: the Would Cook Again and Saved tabs are only visible to the profile owner; the Experiments tab is public. Votes are stored in a separate table with public read access so aggregate counts are visible to everyone, but what you've personally saved remains private.

The search system queries across experiment text fields and also searches ingredient arrays directly, so finding every experiment that uses tahini is a single Supabase .contains() call on the ingredients column.

The "For You" tab shuffles experiments server-side on every request, giving a genuine discovery experience without a recommendation algorithm. Simple, but it works.