12820632e7ab7426a61f37e253e9e2c3ab2dfd78
Some checks failed
CI / Build & test backend (push) Failing after 14m56s
REQ-MOB-010: BarcodeScreen.tsx — barcode scanner via react-native-camera REQ-VIZ-001: WeeklyCalorieChart.tsx — 7-day bar chart on History screen REQ-VIZ-002: Streak tracker — GET /meals/streak + HomeScreen badge REQ-UX-001: Quick-add calories — POST /meals/quick-add + QuickAddScreen REQ-UX-002: Food favourites — UserFoodMemory.favourite + toggle endpoint + FoodRow star REQ-UX-003: GoalBanner.tsx — in-app slide-in when daily target hit REQ-EXP-001: ExportController — GET /export/meals CSV download REQ-WTR-001: Water tracking — WaterEntry entity + POST/GET /water + DailyDetails widget REQ-UX-004: Daily logging reminder — HomeScreen after-18:00 banner Also: Flyway V2 (favourite), V3 (water_entries), V4 (source constraints) Traceability, CHANGELOG, PLAN updated after each feature
Calorie Counter
AI-powered calorie tracking app — Spring Boot backend + React Native mobile.
Architecture
Mobile (React Native + TypeScript)
│ REST API (JWT)
Backend (Spring Boot 3.2 / Java 21)
│
┌─────────────────────────────────┐
│ PostgreSQL Flyway │
│ OpenFoodFacts API (food DB) │
│ OpenAI Vision API (AI meals) │
└─────────────────────────────────┘
Features
- Manual food search via OpenFoodFacts
- Barcode scan → auto-fill nutrition
- Photo meal logging with AI detection (OpenAI Vision)
- Confidence-aware calories:
500 kcal ± 80 kcal (85% confidence) - Daily calorie dashboard + macro tracking
- BMR-based personalised calorie targets (Mifflin-St Jeor)
- AI correction feedback loop → improves suggestions over time
- Repeat last meal one-tap shortcut
Structure
backend/ Spring Boot REST API
mobile/ React Native app
docs/ Requirements, traceability matrix
idea/ Original product research & wireframes
Getting Started
Backend
cd backend
# Required environment variables
export DB_URL=jdbc:postgresql://localhost:5432/caloriecounter
export DB_USERNAME=caloriecounter
export DB_PASSWORD=<your-db-password>
export JWT_SECRET=<256-bit-secret>
export OPENAI_API_KEY=<your-openai-key>
mvn spring-boot:run
Mobile
cd mobile
npm install
npx react-native run-ios # or run-android
Requirements & Traceability
See docs/PLAN-AND-REQUIREMENTS.md and docs/traceability.csv.
35 requirements tracked across 3 phases — all implemented.
Security
- Passwords: BCrypt cost 12
- JWT: HS256, 1hr expiry, per-request user existence check
- All secrets via environment variables — nothing hardcoded
- Input validation on all endpoints (Jakarta Validation)
- User data isolation enforced at service layer
Description
AI-powered calorie tracking app — Spring Boot backend + React Native mobile. Hybrid food logging: manual search, barcode scan, photo AI analysis with confidence-aware calorie display.
Languages
Java
56.1%
TypeScript
42.8%
Dockerfile
1.1%