Vibe-coded recipe workspace for creating ingredients, drag-and-drop steps, countdown timers, and completion tracking in one place. Built with React, Bun, Convex, and Tailwind so recipes stay easy to manage while cooking without losing your flow.
web: React + Vite + Tailwind + Convex
- CRUD recipes
- email/password login with Convex + Better Auth
- private recipes scoped to the signed-in user, with invited editor access
- public recipe sharing with read-only access for other viewers
- multi-user recipe collaboration for ingredients, steps, timers, and completion progress
- CRUD ingredients with per-ingredient unit conversion
- CRUD ordered recipe steps
- Drag-and-drop ordering for ingredients and steps
- Recipe-specific countdown timers on steps
- Step started and completed timestamps
- Bun
- Convex account and deployment URL
- Git Bash recommended for local dev on Windows
- Clone the repository and move into the project root:
git clone <your-repo-url>
cd RecipeAtlas- Install dependencies:
bun install- Create a local web env file:
cp .env.example web/.env.local-
Set
VITE_CONVEX_URLinweb/.env.localto your Convex deployment URL. If you want to set it explicitly, also addVITE_CONVEX_SITE_URLwith the matching.siteURL. -
Start Convex dev once to configure or attach the project:
cd web
bunx convex dev- Configure Better Auth for your Convex deployment:
cd web
npx convex env set BETTER_AUTH_SECRET <generate-a-random-secret>
npx convex env set SITE_URL http://localhost:5173If you want other devices on your local network to use the app, set SITE_URL to the LAN address they will open and allow both origins during development:
cd web
npx convex env set SITE_URL http://192.168.1.15:5173
npx convex env set TRUSTED_ORIGINS http://localhost:5173,http://192.168.1.15:5173Then have other devices open http://192.168.1.15:5173.
Passkeys will not work over plain HTTP on a LAN IP, so use email/password for network testing unless you add HTTPS.
Start Vite and Convex dev together with hot reload:
bun run devOr run them separately from the root:
bun run dev:webbun run dev:convexLocal URLs:
- web:
http://localhost:5173 - Convex dashboard/deployment: provided by Convex during setup
Install all dependencies:
bun installRun all tests:
bun run testRun frontend tests:
bun run test:webRun frontend build:
cd web
bun run buildRun frontend preview:
cd web
bun run previewRoot env example:
VITE_CONVEX_URL=https://your-deployment.convex.cloud
VITE_CONVEX_SITE_URL=https://your-deployment.convex.siteReset all stepsalso clears started/completed state and resets local countdown timers.- Recipe timers persist per recipe in local browser storage, so navigating away and back keeps the active countdown for that recipe.
- Ingredient unit conversion is per ingredient row.
- Signed-in users see their own private and public recipes. Signed-out users only see public recipes.