A light-weight open-sourced calorie tracker.
- Most trackers in the app store are bloated -- Include social features, recipes, cloud backup, etc.
- Heavily paywalled or too many ads.
- You don't own your data anymore, it's stored in the app's cloud where they get to decide what they want to do with it.
Noms is a simple food journal with daily aggregates and long-term visual insights using graphs that helps you track your food consumption. Everything is stored locally.
| Diary | Insights | Settings |
|---|---|---|
![]() |
![]() |
![]() |
The app is only tested on iOS devices, android UX might be broken. The app uses expo, follow expo build instructions.
$ npm run ios # Start dev run on iOS.
- Implement a catalog of food entries to quick add.
- Fix Set Goals UI to match add.tsx screen. The UX looks off.
- Add goal direction, eating surplus calories is not always a negative.
- Add barcode scanning option: items in catalog can be linked to a barcode value and used to quick add entries.
- Implement option to import data.
- Implement option to export data.
- Allow selecting graphs in insights. Make it a customizable dashboard.
- Read Apple Health data for calories burned, weight, etc to add new graph types for insights.
- Add option to edit entries in diary and catalog.
- Add swipe option to date picker in the diary screen. swipe is more intuitive.
- For fortnight and month selection, instead of supporting side scroll, maybe sample the points and create a visual that fits in the screen.
- Catalog entries should indicate if they have a barcode associated.
- Add serving size and quantity options. I should be able to say apple serving: 1 apple, quantity: 2. UX should be simple to pick.
- Fix gap between keyboard and done button when keyboard is open.
- Fix "clear app data" to clear all app data.
- Fix "clear app data" to have a warning pop-up.
- Clean up the logo, looks off.
- Clean the UI for sign up flow.
- Add flow to suggest goals based on standard TDEE questionaire.
- Tech Debt
- Only load last X days of data into memory and load remaining on-demand.
- Pre-aggregate old data and store it in a table to avoid re-computation.
- Create combined stateless UI component for journal-entries and catalod entries.
- Create a combined style for all text boxes, buttons, etc and maintain a standard theme across the app.
- Create a SettingsList component and combine settings and manage-data screens.
- Rename diarySlice & journal-store, use a consistent name.



