Case study · 02
Macro lens
An AI calorie and macro tracker built in Flutter. Photograph a meal to get an editable estimate of its foods and macros, follow the day against personal targets on the home dashboard, and see trends in the diary. A Node API on Supabase and a Next.js admin dashboard run the product.

The challenge
Counting calories by searching food databases is slow, so most people give up within a week. The client wanted an app where you photograph a meal and get a trustworthy estimate in seconds — with daily targets tailored to the person and a clear view of progress over time.
What I built
- 01
Onboarding before sign-up
Eight quick questions — goal, sex, birth date, height, weight, activity, target weight and pace — calculate daily calorie and macro targets before an account exists. Sign-up is a phone number and a one-time code via Twilio Verify.
- 02
AI meal scanning
Take or choose a photo and Gemini identifies the foods and portions. Every item is editable before saving, and scans are limited per plan.
- 03
Home dashboard and diary
A calorie gauge and macro breakdown against today’s targets, a meal log with per-meal macros, a day-by-day diary and a 7-day calorie trend chart.
- 04
Reminders and account
Local meal reminders that work offline, streak updates, and in-app account deletion.
- 05
API and admin
A Node.js and Express API on Supabase with rotating refresh tokens and row-level security, plus a Next.js admin dashboard for users, scans and subscriptions.
Screens

Today — calories and macros against targets 
AI meal scan 
Meal log with per-meal macros 
Seven-day calorie trends 
Meal reminders

Admin dashboard
Tech stack
- Flutter
- Dart
- Bloc
- GoRouter
- Node.js
- Express
- TypeScript
- Supabase
- Gemini API
- Twilio Verify
- Next.js
Outcome
- Clean Flutter architecture with Bloc, GoRouter and custom lint rules that enforce the project’s conventions.
- Hundreds of automated tests across the app and the API.
- Admin dashboard and marketing site live on Vercel; API deployed on Render.
Next project
Fifteen flowersGet in touch
Open for freelance projects, contract roles and collaborations — mobile apps and full-stack products in particular. WhatsApp gets the fastest reply.
- Phone
- +91 70488 09875
- Based in
- Rajkot, Gujarat, India
- Elsewhere