Project · 05 · Rust · Tauri · SQLite · MMXXVIIn progress
Aentic Nourish.
Meal-planner module sharing Kronos' bones — Tauri + Rust + SQLite, port 7702 in the same stack. Nutrition is computed from ingredients on read, never stored. Bilingual, multi-currency throughout.
Derived state is the only state worth trusting.
Specification
- Current build
- Browser PWA — vanilla JS modules, service worker, localStorage; served on :7702 by a small Node static server
- Specified
- Tauri 2 shell · Rust + Axum on :7702 · SQLite (WAL, JSON1) · React 18 + TypeScript — the Kronos pattern (build spec v2)
- Principle
- All nutrition computed from the ingredient source of truth — never stored denormalized
- Money & units
- Smallest currency unit as integers (EUR default, GBP, USD, CHF…); grams and ml internally
- Source
- Private
From the build spec — architecture rules (Kronos pattern)
- Tauri commands mirror REST endpoints — frontend calls Tauri IPC, which calls Rust handlers
- Every entity has: id (ULID), created_at, updated_at, deleted_at (soft delete)
- All nutrition computed from Ingredient source of truth — never stored denormalized
- REST API on localhost:7702/api/v1/* for brain orchestration
- Module registers with brain at localhost:7700/modules/register on startup
- SQLite WAL mode, foreign keys ON, JSON1 extension enabled
- Error handling: Rust Result types, frontend toast notifications via Zustand UI store
- All monetary values in smallest currency unit (integer) — e.g. cents for EUR/USD, pence for GBP — displayed formatted per currency settings
- All weights in grams, volumes in ml — converted for display per settings
- Currency is user-configurable (default EUR). All display formatting reads from settings.currency.