An open-source health tracking web application for recording consumables (foods, medications, supplements) and health metrics (blood glucose, weight, etc.). All data is stored locally in PostgreSQL — you retain full control.
Designed for technically inclined individuals who prefer local-first health tracking without third-party dependencies.
- Track consumables — foods, medications, supplements, and their nutritional/ingredient details
- Record health metrics — blood glucose, weight, and other measurements over time
- Local-first — all data stays on your own PostgreSQL database
- Flexible and extensible data model
Penguin Nurse was presented at Everything Open 2026 in Canberra, Australia. Video recordings were not available at time of publication.
This is a Rust-based full-stack application using Dioxus (frontend/WASM) and Axum (backend). The build environment is managed via Nix flakes and devenv.
-
Enter the development shell:
nix develop
or
cd .devenv && source bin/activate
-
Start the Tailwind CSS compiler (in a separate terminal):
npx tailwindcss -i ./input.css -o ./assets/tailwind.css --watch
-
Start the development server:
dx serve --platform web
For desktop platforms:
dx serve --platform desktop
nix build .#defaultValidate database records and check for data inconsistencies:
DATABASE_URL=postgres://user:password@localhost/penguin_nurse nix run .#lintOr with Cargo:
export DATABASE_URL=postgres://user:password@localhost/penguin_nurse
./lint.shSee docs/LINT.md for details.
- Add — add an item to a list.
- Remove — remove an item from a list.
- Create — create a new entity.
- Archive — non-permanently hide or archive an entity.
- Delete — permanently delete an entity.
- Update — update an entity or value.
- View — view an entity or value.
- Change — pending changes to an entity.
- New — pending entity to be created.
[noun][verb][subverb]
For example: ConsumableUpdateBasic, ConsumableUpdateIngredients.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for details.