MyFitnessPal in a TUI. Offline-first, single-user, local SQLite. Tracks calories plus protein/carbs/fat, with daily goals, custom foods & saved meals, body-weight tracking, and history/trend charts. Runs on macOS, Linux, and Windows.
| Diary — meal-grouped logging | Trends — weekly bars & weight projection |
|---|---|
![]() |
![]() |
| Goals — TDEE wizard + adaptive maintenance | Add food — search, recipes & custom foods |
![]() |
![]() |
Screenshots are rendered from the real UI (shown in a modern terminal such as Windows Terminal, iTerm2, or any xterm-compatible terminal).
Requires Go >= 1.25 (built with 1.26). Pure-Go SQLite — no CGo, Xcode, or C toolchain needed on any platform.
macOS / Linux:
make build # -> ./bin/caltui
./bin/caltui # or: go run ./cmd/caltuiWindows (PowerShell):
go build -o bin\caltui.exe .\cmd\caltui
.\bin\caltui.exe # or: go run .\cmd\caltuiRun caltui in Windows Terminal (or any modern terminal) for correct
Unicode/colour rendering. Prebuilt binaries for every platform come from
make dist — see Deployment.
First run launches a short setup wizard (a TDEE calculator) that suggests daily calorie and macro targets you can edit anytime.
-
Offline (always available): a small USDA dataset of common whole foods is bundled into the binary for instant search.
-
Online (optional): branded/packaged items via USDA FoodData Central. Get a free API key at https://fdc.nal.usda.gov/api-key-signup. Provide it any of these ways (highest priority first):
FDC_API_KEYenvironment variable;- a
.envfile in the working directory withFDC_API_KEY=...(auto-loaded; copy.env.example); fdc_api_keyin the config file (~/.config/tuitracker/config.toml, or%AppData%\tuitracker\config.tomlon Windows).
Without a key the app runs offline-only.
caltui is a single static binary with no CGo (pure-Go SQLite), so it cross-compiles trivially:
make dist # -> dist/caltui-{darwin,linux}-{arm64,amd64} and
# dist/caltui-windows-{amd64,arm64}.exeCopy the matching binary to the target machine (or go install ./cmd/caltui).
The bundled food database and all features work identically on every OS. On
Windows, run the .exe from Windows Terminal (or any modern terminal) for
correct Unicode/colour rendering. For online lookups, set FDC_API_KEY in the
environment or fdc_api_key in the config file.
- Move: arrows or vim
hjkl· switch tabs:1–5,tab/shift+tab aadd food ·/search ·eedit ·ddelete ·ycopy yesterdayssave a meal as a recipe (Diary) ·mset goal from maintenance estimate (Goals)- In food search:
ctrl+fnew custom food ·ctrl+aquick-add ·ctrl+ddelete recipe ?help ·qquit
These work identically on Windows, macOS, and Linux.
- macOS / Linux:
~/.config/tuitracker/(honors$XDG_CONFIG_HOME) - Windows:
%AppData%\tuitracker\(or$XDG_CONFIG_HOMEif set)
Food data: U.S. Department of Agriculture, Agricultural Research Service. FoodData Central. https://fdc.nal.usda.gov (public domain, CC0).
make test # go test ./...
make lint # golangci-lint run
make etl # rebuild bundled food DB from USDA downloads
make update-golden # refresh teatest snapshots after intentional UI changes



