~ / projects / senzu

nameSenzu
platformAndroid
stackFlutter, Dart, Firebase
statuslive on Google Play

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.

food-logging.svg
Food logging pipeline diagram

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.

ai-coach.svg
AI nutrition coach architecture diagram

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.

health-ecosystem.svg
Health ecosystem integration diagram

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.

data-architecture.svg
Data architecture diagram

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.