Calories Counter AI

Calories Counter AI

mobile · Co-founder Nov 2025 – Aug 2026

Built from November 2025 to August 2026, Calories Counter AI is a calorie and nutrition tracker for people who want to understand what they eat without weighing every meal. I co-founded it and worked across the whole product: the iOS and Android app, the backend and the landing page.

Calories Counter AI: editing a meal's ingredients, the daily streak with calories and macros left, and saved recipes

Ingredients, the daily view and saved recipes.

There are three ways to log a meal. A photo or a short text description is analysed by AI and returns an estimate. A barcode is looked up in our own cache first, then in Open Food Facts, and if neither knows the product, the user photographs the nutrition label and AI reads it. Every answer is cached, so a product anyone has scanned before comes back instantly, and when no nutrition data exists the app says so instead of guessing. The daily calorie goal is calculated with the Mifflin–St Jeor equation, and every number cites its source, as Apple's health review requires.

Calories Counter AI: adding a meal by text, analysing a photo of a salad, and scanning a barcode

Logging a meal by text, photo or barcode.

The app ships in Greek, English, German, Spanish and French, with Greek written natively rather than translated. Store listings for every language are versioned in the repository and checked automatically against the store character limits. A subscription unlocks barcode scanning and lifts the daily limit on AI logging. It can be bought through Apple in-app purchases or Stripe, and a friend who subscribes through an invite earns the inviter 15 extra days of premium on either. Meal photos are deleted from storage 2 hours after analysis, reminders follow the user's timezone, and product analytics only start after the user gives consent.

Architecture

Flutter gives one codebase and the same UI on iOS and Android. The app never calls the AI or nutrition providers directly: the FastAPI backend holds those keys, applies the daily limits, runs the barcode lookup and asks Gemini for the estimates. Anonymous requests from the free tier are signed per device, so only the app can use the free allowance.

The backend has 69 endpoints and about 1,300 tests and runs on Railway with PostgreSQL for meals and the product cache, while Supabase only handles sign-in. Redis keeps the free-tier counters and two time-based queues. A separate worker reads those queues to send push reminders through Firebase and delete meal photos from storage once their time is up, so neither job runs inside an API request. Apple purchases and renewals are verified with Apple's own App Store Server Library, Stripe events through signed webhooks, and Logfire traces every request, query and AI call.

Calories Counter AI: the Flutter app and the landing page call FastAPI, which uses Supabase Auth, PostgreSQL, Open Food Facts, Gemini, Redis and payment verification; a worker sends push reminders and deletes photos Calories Counter AI: the Flutter app and the landing page call FastAPI, which uses Supabase Auth, PostgreSQL, Open Food Facts, Gemini, Redis and payment verification; a worker sends push reminders and deletes photos

The app, the API and the worker.

The landing page is a static Astro site with its own URL per language, so it's fast, cheap to host and indexable in all five languages. Its only call to the API resolves an invite link, to show who sent it.

Get it on the App Store or Google Play, or see the full project at caloriescounter.ai.