Grubora is a whole AI calorie tracker app template constructed with Flutter, GetX and Materials 3. {Photograph} a meal and a imaginative and prescient mannequin names what’s on the plate; each calorie and each macro after that’s computed on the machine from a USDA meals desk bundled with the app. 14 screens, mild and darkish, and each one in all them runs with no API key, no account and no community.
Demo Directions — the sign-in display is a mock and contacts no server, so any credentials are accepted. Use [email protected] / demo1234, or just faucet Check in with each fields left empty. There’s nothing to register, no API key to enter and no community required: Demo mode ships switched on, so the {photograph} pipeline, the diary, the insights and the fasting window all reply on the machine in opposition to the bundled meals desk.
What’s within the bundle
- Full Flutter supply — 14 screens, mild and darkish, GetX structure (View → Controller → Service → Mannequin)
- A neighborhood vitamin engine in plain Dart: 1,200 USDA meals, the Mifflin-St Jeor goal derivation, and the fasting window, all offline
- Three AI suppliers as plain REST shoppers — Google Gemini (default), OpenAI, Anthropic Claude — bring-your-own-key, no vendor SDKs
- Demo mode, on out of the field: each display populated, each signature interplay working, with no key in any respect
- Offline HTML documentation — each display, a function walkthrough with two animated GIFs, supplier setup, connecting your individual storage, renaming, re-theming, mission construction, a terminal glossary and troubleshooting
- 5 runtime dependencies in whole, and 0 picture property — each illustration within the UI is painted at run time
Who is that this for
Builders transport a calorie or vitamin app who need the exhausting elements already determined: the place the numbers come from, what the mannequin is and isn’t requested for, and what occurs when a meals will not be within the desk. When you have shipped on this class earlier than, the evaluations are by no means concerning the UI — they’re about whether or not the factor ran. This one runs on flutter run.
No backend. No Firebase. Runs out of the field.
Nothing is proxied by way of a server of ours, as a result of there is no such thing as a server. Each supplier is bring-your-own-key, and the one community calls this app could make are those your consumer’s personal key pays for. The diary lives behind a service layer whose strategies already return Futures, so pointing it at Hive, Isar, SQLite or your individual API is a change in a single file and no display adjustments.
{Photograph} the plate
The mannequin isn’t requested for a quantity. It’s requested for one factor solely: the identify of every meals and what number of grams of it are there. The reply schema has no discipline for a calorie depend, so a determine can’t attain the diary even when a future mannequin volunteers one. A language mannequin guessing at arithmetic is the failure mode of each app on this class — revealed error ranges are large in each instructions, don’t have any supply, and can’t be added up over every week and imply something.
Each determine is computed on the machine
Names are matched in opposition to 1,200 meals from USDA FoodData Central (SR Legacy, launch 2018-04), packed into the app and skim with no connection in any respect — vitality, protein, carbohydrate, fats, fiber, sugar and sodium per 100 g, plus the family measures the supply offers (“1 medium”, “1 cup, sliced”). Each row carries a confidence mark and an editable portion in grams; the working whole strikes as you modify one, as a result of {a photograph} can’t inform anybody how a lot oil was within the pan. Public area knowledge, credited in Settings with the discharge named.
When a meals will not be within the desk, the app says so. It doesn’t quietly substitute the closest factor it does have — that arms the consumer a plausible quantity for a special meals with no technique to ever discover out. An unmatched row reveals no figures, will not be saved, and gives the search as an alternative.
A day, as a ledger
What’s left, not what’s spent. The price range is a measuring beaker with the goal marked under the rim, so going over is legible as liquid above a line slightly than as a progress ring you will have in some way “accomplished”. Under it, the day in meal sections that every carry their very own subtotal, with the consuming window and the day’s water on the identical web page because the meals. Nothing on this display leaves the machine.
One level, not three bars
Three shares that all the time sum to 1 have two levels of freedom, in order that they match on a airplane precisely. A day is a degree inside a triangle, the place the space from every nook is that macro’s share; the week is a scatter you’ll be able to see the unfold of; your goal is a area you might be both inside or not. Seven stacked bar charts can’t present consistency — this could, and every week drifting towards one nook is seen earlier than any single day is.
An consuming window, not a stopwatch
Intermittent fasting drawn as a sash window: two panes in proportion, the boundary marked, the clock instances beside it. There’s nothing to start out and nothing to neglect to cease — the window is a property of the clock, so shut the app, restart the cellphone or come again in three days and it’s nonetheless regardless of the time says it’s. 16:8, 18:6, 20:4 and OMAD are all one setting.
Three AI suppliers, or none in any respect
- Google Gemini — the shipped default. A secret is free and desires no bank card, so your customers are by no means despatched to a billing type, and it does each jobs: it reads images and it writes textual content
- OpenAI and Anthropic Claude
- Demo mode — the pipeline runs finish to finish on the machine in opposition to the bundled meals desk, so each display is populated with no key and no community. Not a folder of canned screenshots
Each supplier is a plain REST consumer behind a one-method interface that is aware of nothing about meals, which is why the identical three adapters serve each of this app’s very completely different requests. Including a fourth is one class and one catalog entry, with no display adjustments. Mannequin names expire, and this template is constructed for that: the mannequin id is an editable setting, a retired identify produces a plain-language error with a button straight to the sphere that fixes it, and the documentation has a bit on updating it.
14 screens, mild and darkish
Past the 4 signature screens: a searchable 1,200-food desk with family parts; a meals’s personal web page with its full USDA description and reside per-portion figures; barcode lookup in opposition to Open Meals Information (free, no key); a targets web page that reveals the entire derivation slightly than simply its outcome; onboarding; sign-in; supplier settings; and a mock paywall. Each one in all them themed twice. Macro targets are derived from the vitality share slightly than a weight share — the only most typical arithmetic error on this class.
What you get
- Full Flutter supply, GetX, analyzer clear — 109 checks move, together with the Mifflin-St Jeor arithmetic in opposition to hand-worked circumstances, the meals matcher in opposition to the true bundled desk, the fasting window throughout midnight, and the per-vendor schema transforms
- API keys saved within the Keychain on iOS and EncryptedSharedPreferences on Android — by no means in plain preferences
- All demo knowledge in a single file: a 14-day diary with sensible gaps in it, constructed by working the true engine over the true meals desk
- Zero picture property — the beaker, the macro triangle, the sash window, the onboarding plates and the app mark are all painted at run time, so there is no such thing as a paintings to license and nothing to maintain in sync. Meals your customers {photograph} are proven as images
- Typefaces are bundled, not downloaded — the UI renders identically offline and on a chilly first launch
- A particular kitchen-ledger design system: deep cocoa on an oat floor with a single cranberry accent, Crimson Hat Show + Golos Textual content, and a plate-card form with a second hairline simply contained in the border. Each amount is ready in Spline Sans Mono so a column of figures strains up. Each token is centralized, so the entire app re-skins from one colour file
Get it working in 5 minutes
- Unzip, then
flutter pub get flutter run— Demo mode is already on, so the app is totally populated- Non-obligatory: paste a supplier key in Settings to run the {photograph} pipeline in opposition to a reside mannequin
Necessities
To run and construct the supply code you want the Flutter SDK (model 3.29 or newer) and Dart 3.7 or newer, along with a Flutter-ready IDE — Android Studio or Visible Studio Code with the Flutter & Dart plugins. Runs on each Android and iOS from a single Flutter codebase (Materials 3, null-safe).
Third-party prices and sincere limits
Grubora runs totally on the machine, however the two AI options — naming the meals in {a photograph}, and writing up every week — are produced by a third-party AI supplier that you just or your customers provide a key for. Connecting it to a reside supplier corresponding to Google Gemini, OpenAI or Anthropic will contain these third-party providers, which will incur their very own separate prices and should not included on this merchandise. Barcode lookups question Open Meals Information, a free public database that wants no key or account. Vitamin figures are estimates drawn from reference knowledge, not measurements of the meals in entrance of you.
What will not be included
- No backend and no account system. Signal-in is a mock that contacts no server — the seam is drawn the place your API name goes, and the documentation walks by way of it
- The diary is held in reminiscence. It’s seeded with pattern knowledge and resets when the app restarts; wiring a persistent retailer is a documented one-file change and is left to you. The one factor written to disk is the consumer’s API key
- Barcodes are typed or pasted, not scanned. Digital camera barcode scanning will not be included; the documentation reveals methods to add a scanner bundle on high
- No Apple Well being or Google Match integration, and no picture era of any variety
- The subscription display is a mock — no cost code, receipt validation or retailer product is included
- No push or native notifications / reminders — nothing within the bundle schedules something
- No AI supplier key or credit score is included, and no net or desktop construct is shipped or supported
Well being disclaimer
Grubora is a logging device. It’s not an alternative choice to skilled medical recommendation, prognosis, or remedy, and it doesn’t present scientific steering. The app applies a ground to the day by day calorie goal it is going to set.
Assist and updates
Questions concerning the merchandise undergo the feedback tab on this web page, which is the place I learn them. Assist covers the code because it ships: getting the mission to construct, the documented setup steps, supplier configuration, and defects in what’s included. It doesn’t cowl your individual modifications, third-party supplier outages or pricing adjustments, or constructing new options to order.
Changelog
v1.0 — preliminary launch.

