All projects
Live since October 2026App

MunchMatch.me

Tinder for dinner: swipe recipes together until everyone says “Munch!” to the same dish.

Players per room
2–10
Recipes in the deck
2893
Game modes
5

Own product – concept, design & full-stack development

MunchMatch app: home screen
MunchMatch app: recipe card while swiping
hero.jpg
munchmatch.me
MunchMatch.me homepage with the swipe app on a phone

MunchMatch ends the endless “what are we eating tonight?”. Up to ten people join a room with a five-letter code, everyone swipes the same deck on their own phone – and the first dish all of them like wins. Nothing to install, no account, free. And it keeps going from there: step-by-step cooking mode, shopping list, a week plan for the household.

Architecture

A Turborepo with four apps: the marketing site with recipe and blog SEO pages, the game app as a PWA, a Payload CMS on PostgreSQL for recipes, decks and admin, and a dedicated Socket.io server for rooms, matches and votes in real time. A shared package holds the typed socket protocol so client and server never drift apart. Frontends run on Vercel, backend and realtime server on a self-hosted VPS.

Tech stack
Next.js 16React 19TypeScriptSocket.ioPayload CMS 3PostgreSQLZustandFramer MotionTailwind CSS 4TurborepoPWA
Fact sheet
Players per room
2–10
Recipes in the deck
2893
Game modes
5
Account needed
—
Price
€0

The app

Screens from the app

MunchMatch app: home screen
Home – open or join a room
MunchMatch app: recipe card while swiping
Swiping – right is munch, left is nope
MunchMatch app: discovery mode
Discovery – the deck learns
MunchMatch app: ingredient list in cooking mode
Cooking – ingredients, servings, units
AI in the product

A deck that learns

In discovery mode every munch counts for cuisine, vibe, cooking time, diet and star ingredient, a nope a third as much against. Two cards per hand deliberately ignore your taste so the deck keeps exploring; old swipes fade after two weeks.

AI content pipeline

Around 2,900 recipes came out of a custom pipeline: facts are extracted deterministically, rewritten into original recipes by a language model, then validated and de-duplicated automatically.

Generated food photos

Every recipe image is AI-generated from a description of the dish, never from someone else’s photo – and openly labelled “AI” on the card. Nutrition is additionally recomputed against the USDA database.

One room, everyone on their own phone

One tap opens a room, shared by code, link or QR code. Everyone gets the same 20 cards and swipes at their own pace; the app only speaks up once truly everyone likes the same dish. Drop out mid-round and your seat waits 60 seconds.

the-table.jpg
Lobby, swiping and match as three phone screens

Lobby → swiping → match

No argument, even without a match

If the deck runs out without everyone landing on the same dish, the table votes: a fresh deck or the chef’s pick. A tie is the host’s call. Everyone’s diets and allergens are applied to the deck up front – whatever wins, the whole table can eat.

round.jpg
The four stages of a round: lobby, swiping, match, vote

How a round runs

Households and the week plan

Not home at the same time? A household is the standing crew – flatmates, family, a couple. One of you deals a deck for one, three or five meals, everyone swipes when they have a minute, and the result goes onto the week plan and the shopping list in one tap. Push notifications say when it’s decided.

households.jpg
Household screens: week overview, waiting for votes, result

Deciding asynchronously as a household

From the match to the stove

Every match opens as a recipe to cook from: one step per screen in large type, only the ingredients that step needs, timers in one tap and a screen that stays awake. Servings scale from 1 to 12, cups turn into grams. Afterwards the dish can be shared with friends in the feed, with a photo and stars.

kitchen.jpg
Cook tab, cooking mode and shopping list in the MunchMatch app

Cook tab, cooking mode, shopping list

More than one course

A match doesn’t have to end the evening: the host deals another deck for a side, a dessert or a drink – and a quick decision turns into a whole menu.

courses.jpg
“Match the main. Then keep going.” section with a menu receipt
Challenges & solutions
Challenge

Up to ten phones have to agree in real time – dead spots included

Solution

A dedicated Socket.io server owns the game state; a typed protocol in the shared package keeps client and server in sync, and dropped connections get a grace period before the seat is freed.

Challenge

Every dish in the deck has to work for everyone at the table

Solution

The deck is dealt only after every filter: any player’s allergen excludes a recipe, every requested diet must be met – and an audit script checks that no tag contradicts the ingredients.

Challenge

A large, credible recipe catalogue without an editorial team

Solution

A multi-stage content pipeline with AI rewriting, validation, duplicate detection, generated images and recomputed nutrition – reproducible by script rather than by hand.

Challenge

Playable instantly, without friction – yet something worth keeping

Solution

Anonymous play is the baseline. Signing up keeps likes, match history, custom decks, households and the feed – without guests ever needing an account.

Features
Next step

Planning something similar?

I build projects like this directly with you – from concept to launch. Briefly describe what you have in mind.