{"slug": "i-built-a-free-ai-nutrition-tracker-as-a-solo-dev-here-s-what-i-learned", "title": "I built a free AI nutrition tracker as a solo dev — here's what I learned", "summary": "A solo developer built goNutriTrack, a free multilingual PWA nutrition tracker that uses AI for meal logging via photo, voice, barcode scan, and text search. The app, powered by Anthropic Claude and a serverless stack, overcame challenges like iOS PWA white screens and offline data queuing. The developer emphasizes shipping early and notes that PWA on iOS remains painful.", "body_md": "What I built\n\ngoNutriTrack is a free multilingual PWA nutrition tracker. The idea was simple: make meal logging so fast that people actually stick with it.\n\nYou can log meals by:\n\n📸 Photo — Claude Vision identifies ingredients automatically\n\n🎤 Voice — say \"200g chicken and rice\", AI parses it\n\n📷 Barcode scan — OpenFoodFacts database\n\n🔍 Text search — OpenFoodFacts + USDA\n\nPlus: AI Coach, workout tracking, weight tracking, water tracking, PDF export. Works in 5 languages (Greek, English, German, French, Spanish).\n\nThe stack\n\nFrontend: React + Vite PWA\n\nBackend: Cloudflare Workers (proxy for Anthropic API)\n\nDatabase: Supabase\n\nAI: Anthropic Claude (Vision + Haiku for voice parsing)\n\nHosting: Cloudflare Pages\n\nNo server, no Docker, no DevOps. Everything serverless.\n\nTechnical challenges\n\n- iOS PWA white screen\nThe hardest bug. When users add the app to Home Screen on iOS, sometimes it opens to a blank white page. The fix was switching the Service Worker navigation handler from network-first to cache-first (stale-while-revalidate), so iOS always has something to show immediately.\n- Offline queue\nSupabase calls fail when offline. I built a localStorage queue that stores pending inserts/deletes and syncs automatically when the connection returns — without the user noticing anything.\n- Vite + PWA build pipeline\nThe Service Worker cache name needs to change on every deploy to force updates. I wrote a Vite plugin that patches the SW file during config() (not buildStart) to avoid race conditions with vite-plugin-pwa.\n- AI meal recognition accuracy\nClaude Vision is good but not perfect. The solution was making every recognized item editable before saving — users can adjust portions and correct names. This turned a potential frustration into a feature.\nWhat I learned\nShip early. I spent weeks polishing before showing anyone. The first real users found issues in 10 minutes that I had missed for months.\nPWA on iOS is still painful. Safe area insets, white screens, push notifications not working — Apple makes this hard on purpose.\nSolo means every decision is yours. That's both the best and worst part.\nWhat's next\nLooking for honest feedback — especially on the AI logging accuracy and anything that feels broken.\nTry it free: gonutritrack.com", "url": "https://wpnews.pro/news/i-built-a-free-ai-nutrition-tracker-as-a-solo-dev-here-s-what-i-learned", "canonical_source": "https://dev.to/ikoft1/i-built-a-free-ai-nutrition-tracker-as-a-solo-dev-heres-what-i-learned-1c29", "published_at": "2026-06-18 06:24:09+00:00", "updated_at": "2026-06-18 06:51:58.431146+00:00", "lang": "en", "topics": ["artificial-intelligence", "developer-tools", "ai-products"], "entities": ["goNutriTrack", "Anthropic", "Claude", "Supabase", "Cloudflare", "OpenFoodFacts", "USDA", "iOS"], "alternates": {"html": "https://wpnews.pro/news/i-built-a-free-ai-nutrition-tracker-as-a-solo-dev-here-s-what-i-learned", "markdown": "https://wpnews.pro/news/i-built-a-free-ai-nutrition-tracker-as-a-solo-dev-here-s-what-i-learned.md", "text": "https://wpnews.pro/news/i-built-a-free-ai-nutrition-tracker-as-a-solo-dev-here-s-what-i-learned.txt", "jsonld": "https://wpnews.pro/news/i-built-a-free-ai-nutrition-tracker-as-a-solo-dev-here-s-what-i-learned.jsonld"}}