Calories Counter AI
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.

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.

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.
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.