Edible
Factor
A consumer dining app, a restaurant operating system, and an AI menu engine. One Go backend, idea to deploy, live in Bengaluru.
01The problem
Diners track calories or budget. Never both. Operators fly blind on what their menu actually does.
Eating out in Bengaluru means juggling two numbers at once, what a meal costs your body and what it costs your wallet, and no app holds both. On the other side of the table, restaurants run on instinct: no real read on which dishes are healthy, profitable, or even ordered.
Edible Factor closes both gaps from one stack: a diner-facing app that tracks budget and calories together, and an operator OS that turns a menu into something measurable.
02The fleet
Three surfaces,
one backend.
One Go backend owns auth, menus and operator context, running on a laptop behind a Cloudflare Tunnel. No cloud bill, no vendor lock.
03A chapter
A paper-white light mode, with dark left byte for byte unchanged.
The app shipped dark-only. Adding a light theme usually means a second design, and a second set of bugs. Instead it keys off the operating-system preference and flips automatically, while the shipped dark experience stays pixel-identical.
The trick is a token whose dark value equals the original literal. A new --brand-text-strong resolves to pure white in dark and to ink on paper; every white tint became color-mix(var(--brand-text-strong) N%), which is exactly the old value in dark and adapts on light. Four token sweeps, a scoped-cascade fix, a clean production build: dark could not regress, and light came almost for free.
04Under the hood
- Frontend
- Next.js 15 App Router, Tailwind v4, Zustand, shipped to a Cloudflare Worker via OpenNext.
- Backend
- A Go API owning auth (JWT), menus and operator context, behind a Cloudflare Tunnel.
- AI
- Gemini powers the sommelier chat and menu scanning, with a graceful demo fallback.
- Operators
- Plate, a second Worker, with claim-to-onboard and CSV menu import.
- Discipline
- Spec-driven, strict CSP, byte-identical theming, fully reduced-motion aware.
05Where it stands