~ / projects / senzu
Overview
Senzu is a nutrition tracking app focused on both macronutrients and micronutrients. Beyond calories, protein, carbs, and fat, it tracks vitamins and minerals — Vitamin D, Vitamin C, Iron, and others — that most trackers ignore. You can log a full meal with a single tap rather than entering each ingredient individually.
Motivation
This was my first mobile app, and it came from a personal frustration. Every calorie tracker I tried had one of two problems: they were either too simple (calories only, no micronutrients) or so complex that logging a meal took several minutes. I wanted something that could tell me if I was getting enough Vitamin D on a given day without making me enter every ingredient of dinner from scratch each time I ate it.
Building it was also my entry point into Flutter — I learned the framework by building the thing I actually needed.
How it works
Users build a library of meals — each meal stores its full nutritional breakdown. Logging a meal is then a single tap. The daily dashboard aggregates all logged meals and shows progress bars for each tracked nutrient against customisable daily targets.
Nutritional data is sourced from a public food database. Firebase handles auth and cloud sync so the data follows the user across devices. The local state is kept in a simple provider pattern so the UI stays responsive even on slower connections.
Food Logging Pipeline
The core flow: scan a barcode → look up nutrition data (from local catalog or Open Food Facts API) → review and save to your shelf → set portion size → log entry. The daily dashboard aggregates all entries and shows progress against your targets. You can also log food manually or via the AI chat assistant.
AI Nutrition Coach
Senzu includes an AI chat assistant powered by a tool-augmented LLM loop. Ask questions like "what did I eat yesterday?" or "log a birthday buffet" — the AI uses 18 tools to read your nutrition data, create foods, log entries, and even access your Hevy workout history. A memory consolidator distills key facts from conversations and injects them into future prompts for personalized coaching.
Health Ecosystem
Senzu integrates with your existing health tools: Apple HealthKit syncs weight, sleep, body composition, and energy data bidirectionally. Hevy API provides workout tracking. Open Food Facts and Fineli (Finnish food database) provide comprehensive nutrition data — Fineli works offline as a bundled asset.
Data Architecture
The app uses Riverpod for state management with a UserRepositories pattern — a uid-bound facade created when the user signs in. All data flows through StreamProviders derived from the auth state. Firestore stores everything under users/{uid}/ with 11 repository types covering shelf, meals, entries, recipes, weight, sleep, chat, memories, weekly reports, and body composition.
What I learned
Senzu taught me Flutter from the ground up: widget trees, stateful vs stateless widgets, navigation, forms, and async data fetching. I also got my first real taste of data modelling — figuring out how to represent a meal's nutritional profile in a way that was both flexible and efficient to query.
Publishing to Google Play for the first time — dealing with signing keys, release builds, store listings, and the review process — was its own education. Most of that knowledge carried directly into every project since.