Every morning at 09:00, Swiss Lernende stop what they're doing and eat. The Znüni (the mid-morning snack break) is a daily ritual. It's so embedded in Swiss work and school culture that most people don't even think about it. They just do it.
Nobody had built a product around it. No app that treats the Znüni as a social moment, helps young people discover what to eat, and makes the daily supermarket run a little more interesting. DailyBite is that app.
What it does#
Every morning at 09:00, DailyBite pushes one combo — two or more real products from your nearest supermarket, with real prices. You mark it as done (Gmacht?), rate it, earn XP, build a streak. Other users create and share their own combos in a community feed. A weekly leaderboard shows who's been eating the best.
Migros, Coop, Aldi, Lidl, Denner — the five supermarkets that actually matter in Switzerland. Real product images from store CDN APIs. Real prices in CHF. Not a recipe app. Not a calorie tracker. A snack discovery app, built for people who have 20 minutes and a few francs.
The data problem#
Showing real products from five different Swiss supermarkets is harder than it sounds. Each store has a different API, a different data format, and a different attitude toward third-party access. The solution was to build a unified pipeline that lands everything in one normalized products table — and have the app only ever read from that.
- Migros — reverse-engineered internal API. A Supabase Edge Function (
sync-migros-products) hits it nightly at 02:00 UTC, scheduled via pg_cron. The app never calls Migros at runtime. - Aldi — self-scraped and imported into the same table.
- Coop, Lidl, Denner — static dataset loaded into the same schema.
Every source normalizes to the same shape: store_chain, name, brand, image_url, price, is_available. On top of that sits a full-text search RPC with German stemming and pg_trgm trigram similarity — so when users search for products to build a combo, typos still work.
Why gamification makes sense here#
Gamification is usually a band-aid for a product that isn't inherently interesting. DailyBite is different: the Znüni is already a daily habit. The cadence exists without the app. What gamification adds is a feedback loop and a reason to care which combo you pick.
XP for rating a combo (+10), making one (+15), creating your own (+15). Streaks for showing up every day. Badges (Znüni-Profi, Wochensieger, Sparfuchs) that are grounded in Swiss snack culture, not generic trophy icons. A weekly leaderboard that resets on Monday so it stays competitive. The system works because it maps onto something people already do every morning, not because it invents a new behavior from scratch.
Built Swiss-first, not Swiss-compatible#
The target audience is young people — Lernende, students, people in their first jobs. The Swiss apprenticeship system puts hundreds of thousands of 16-to-20-year-olds in workplaces with a morning break and a few francs to spend. That's the core user.
Every product decision reflects that. The UI is in Swiss Standard German — no ß, Du-form throughout, Swiss supermarket names as they're actually written. The gamification text uses Swiss slang (Gmacht?, Znüni-Profi) instead of neutral English approximations. The store selection is exactly the five chains young Swiss people walk past every day. This isn't a general European food app with a Swiss flag added. It was designed for one country from the first database migration.
Tech stack#
- React Native / Expo — iOS and Android from one codebase.
- Supabase — Postgres, Auth, Edge Functions, pg_cron for the nightly sync.
- Next.js 16 — marketing website and content hub, deployed on Vercel.
- German full-text search — tsvector with German stemming + pg_trgm trigram similarity on the products table.
Where it is now#
Open beta on iOS and Android. The daily pick is live, the community feed is running, and real users are building streaks. The product works — the next step is getting it in front of more Lernende.






