
Grubora is a complete AI calorie tracker app template built with Flutter, GetX and Material 3. Photograph a meal and a vision model names what is on the plate; every calorie and every macro after that is computed on the device from a USDA food table bundled with the app. 14 screens, light and dark, and every one of them runs with no API key, no account and no network.
Demo Instructions — the sign-in screen is a mock and contacts no server, so any credentials are accepted. Use demo@grubora.app / demo1234, or simply tap Sign in with both fields left empty. There is nothing to register, no API key to enter and no network required: Demo mode ships switched on, so the photograph pipeline, the diary, the insights and the fasting window all answer on the device against the bundled food table.
Developers shipping a calorie or nutrition app who want the hard parts already decided: where the numbers come from, what the model is and is not asked for, and what happens when a food is not in the table. If you have shipped in this category before, you know the reviews are never about the UI — they are about whether the thing ran. This one runs on flutter run.
Nothing is proxied through a server of ours, because there is no server. Every provider is bring-your-own-key, and the only network calls this app can make are the ones your user’s own key pays for. The diary lives behind a service layer whose methods already return Futures, so pointing it at Hive, Isar, SQLite or your own API is a change in one file and no screen changes.
The model is never asked for a number. It is asked for one thing only: the name of each food and how many grams of it are there. The reply schema has no field for a calorie count, so a figure cannot reach the diary even if a future model volunteers one. A language model guessing at arithmetic is the failure mode of every app in this category — published error ranges are wide in both directions, have no source, and cannot be added up over a week and mean anything.
Names are matched against 1,200 foods from USDA FoodData Central (SR Legacy, release 2018-04), packed into the app and read with no connection at all — energy, protein, carbohydrate, fat, fiber, sugar and sodium per 100 g, plus the household measures the source gives (“1 medium”, “1 cup, sliced”). Every row carries a confidence mark and an editable portion in grams; the running total moves as you change one, because a photograph cannot tell anyone how much oil was in the pan. Public domain data, credited in Settings with the release named.
When a food is not in the table, the app says so. It does not quietly substitute the nearest thing it does have — that hands the user a believable number for a different food with no way to ever find out. An unmatched row shows no figures, is not saved, and offers the search instead.
What is left, not what is spent. The budget is a measuring beaker with the target marked below the rim, so going over is legible as liquid above a line rather than as a progress ring you have somehow “completed”. Below it, the day in meal sections that each carry their own subtotal, with the eating window and the day’s water on the same page as the food. Nothing on this screen leaves the device.
Three shares that always sum to one have two degrees of freedom, so they fit on a plane exactly. A day is a point inside a triangle, where the distance from each corner is that macro’s share; the week is a scatter you can see the spread of; your target is a region you are either inside or not. Seven stacked bar charts cannot show consistency — this can, and a week drifting toward one corner is visible before any single day is.
Intermittent fasting drawn as a sash window: two panes in proportion, the boundary marked, the clock times beside it. There is nothing to start and nothing to forget to stop — the window is a property of the clock, so close the app, restart the phone or come back in three days and it is still whatever the time says it is. 16:8, 18:6, 20:4 and OMAD are all one setting.
Every provider is a plain REST client behind a one-method interface that knows nothing about food, which is why the same three adapters serve both of this app’s very different requests. Adding a fourth is one class and one catalog entry, with no screen changes. Model names expire, and this template is built for that: the model id is an editable setting, a retired name produces a plain-language error with a button straight to the field that fixes it, and the documentation has a section on updating it.
Beyond the four signature screens: a searchable 1,200-food table with household portions; a food’s own page with its full USDA description and live per-portion figures; barcode lookup against Open Food Facts (free, no key); a targets page that shows the whole derivation rather than just its result; onboarding; sign-in; provider settings; and a mock paywall. Every one of them themed twice. Macro targets are derived from the energy share rather than a weight share — the single most common arithmetic error in this category.
flutter pub getflutter run — Demo mode is already on, so the app is fully populatedTo run and build the source code you need the Flutter SDK (version 3.29 or newer) and Dart 3.7 or newer, together with a Flutter-ready IDE — Android Studio or Visual Studio Code with the Flutter & Dart plugins. Runs on both Android and iOS from a single Flutter codebase (Material 3, null-safe).
Grubora runs entirely on the device, but the two AI features — naming the foods in a photograph, and writing up a week — are produced by a third-party AI provider that you or your users supply a key for. Connecting it to a live provider such as Google Gemini, OpenAI or Anthropic will involve those third-party services, which will incur their own separate costs and are not included in this item. Barcode lookups query Open Food Facts, a free public database that needs no key or account. Nutrition figures are estimates drawn from reference data, not measurements of the food in front of you.
Grubora is a logging tool. It is not a substitute for professional medical advice, diagnosis, or treatment, and it does not provide clinical guidance. The app applies a floor to the daily calorie target it will set.
Questions about the item go through the comments tab on this page, which is where I read them. Support covers the code as it ships: getting the project to build, the documented setup steps, provider configuration, and defects in what is included. It does not cover your own modifications, third-party provider outages or pricing changes, or building new features to order.
v1.0 — initial release.
0 average based on 0 ratings.
| Last Update | 2026-08-28 |
| Created | 2026-08-28 |
| Sales | 0 |
| Discussion | Comments |
| Software Version | Flutter 3.x |
| Files Included | Dart YAML JavaScript JSON .kotlin .swift |
| Video Preview Resolution |