{"slug": "i-built-india-s-missing-health-app-then-abandoned-it-here-s-how-i-finished-it", "title": "I Built India's Missing Health App: Then Abandoned It. Here's How I Finished It.", "summary": "A developer rebuilt CureNet, a mobile app that converts prescription scans into FHIR R4-compliant digital health records linked to India's ABDM infrastructure, after abandoning the project for five months. The app, originally a university semester project with broken OCR and hallucinating AI, now supports 22 languages, four authentication methods, and three AI models across 28 screens with 13,654 lines of Dart code. The developer deployed the backend to Render and released CureNet v2.0.0 as an open-source APK, enabling 1.4 billion Indians to own portable medical records without manual data entry.", "body_md": "*This is a submission for the GitHub Finish-Up-A-Thon Challenge*\n\n**CureNet** — a mobile app that gives every Indian citizen real ownership of their medical records through the government's ABDM (Ayushman Bharat Digital Mission) infrastructure.\n\nThe pitch is simple: **scan any prescription with your phone camera, and CureNet converts it into a structured, FHIR R4-compliant digital health record** — linked to your ABHA (Ayushman Bharat Health Account). No manual data entry. No hospital portals. Just point, scan, own.\n\nIt started as a semester project at university. We had 3 weeks. I built the ABDM authentication flow, a basic AI chat, and a records list — then ran out of time. The UI was rough, the scanner didn't work on half the documents, and the \"AI assistant\" hallucinated medical advice. I submitted what I had, got my grade, and moved on.\n\nFive months later, I opened the repo again.\n\nThe code was a graveyard of `// TODO`\n\ncomments and hardcoded demo data. But the *idea* was still good — 1.4 billion people in India have no portable health records. The government built the rails (ABDM), but nobody built a train that regular people would actually ride. So I decided to finish what I started.\n\n**Tech Stack:** Flutter/Dart · Node.js/Express · MongoDB · NVIDIA NIM (Llama 3.2 90B Vision) · FHIR R4 · ABDM Sandbox · Bhashini ULCA · Render\n\n🔗 **GitHub:** [github.com/labishbardiya/CureNet](https://github.com/labishbardiya/CureNet)\n\n🔗 **GitHub Release:** [https://github.com/labishbardiya/CureNet/releases/tag/v2.0.0](https://github.com/labishbardiya/CureNet/releases/tag/v2.0.0)\n\n📱 **APK Download:** [Download CureNet APK](https://github.com/labishbardiya/CureNet/releases/download/v2.0.0/app-release.apk)\n\n🖥️ **Live Demo:** [https://youtu.be/QU5zbPB3XJw](https://youtu.be/QU5zbPB3XJw)\n\n🌐 **Live Backend:** [curenet.onrender.com](https://curenet.onrender.com)\n\nWhen I paused CureNet in February, here's what \"existed\":\n\n| Feature | Status |\n|---|---|\n| ABDM Login | ✅ Working (barely) — single auth method, no encryption |\n| AI Chat | ⚠️ Basic Groq integration — hallucinated freely, no medical context |\n| Document Scanner | ❌ Camera opened but OCR was broken on 60%+ of documents |\n| Health Records | ⚠️ Hardcoded demo list — no real persistence |\n| Health Locker | ❌ Didn't exist |\n| Emergency Pass | ❌ Didn't exist |\n| Multilingual | ❌ English only |\n| Consent Sharing | ❌ Didn't exist |\n| Health Trends | ❌ Didn't exist |\n| Backend | ⚠️ Local only — no cloud deployment |\n\nThe UI looked like a college prototype because it *was* a college prototype. Text arrows (`←`\n\n) instead of proper icons. Hardcoded names leaking everywhere. `print()`\n\nstatements in production code. Deprecated API calls. Unused imports stacked 10-deep in every file.\n\nI rebuilt CureNet from the ground up — same codebase, completely different app. Here's the arc:\n\n**🧠 AI Architecture Overhaul**\n\n**📸 Document Scanner Rebuilt**\n\n**🏗️ 6 New Features**\n\n**💅 Enterprise-Grade Polish**\n\n`CureNetBottomNav`\n\nwidget (eliminated ~210 lines of duplication across 7 screens)`print()`\n\nwith `debugPrint()`\n\n`withOpacity()`\n\ncalls to `withValues(alpha:)`\n\n`flutter analyze`\n\n: **☁️ Cloud Deployment**\n\n| Metric | Before | After |\n|---|---|---|\n| Dart files | ~15 | 57 |\n| Lines of code | ~3,000 | 13,654 |\n| Screens | 5 | 28 |\n| Commits | ~20 | 64 |\n`flutter analyze` warnings |\n40+ | 2 (structural only) |\n| Supported languages | 1 | all 22 |\n| Auth methods | 1 | 4 |\n| AI models used | 1 (Groq) | 3 (NIM Vision + Llama 3.3 + Gemma) |\n\nGitHub Copilot was my constant pair programmer throughout this finish-up. Here's specifically how it helped:\n\nFlutter is verbose. Every new screen needs a `StatefulWidget`\n\n, `State`\n\nclass, `initState`\n\n, `dispose`\n\n, `build`\n\nmethod, `Scaffold`\n\n, `SafeArea`\n\n... Copilot autocompleted these structural patterns instantly. For CureNet's 28 screens, that's hours saved on scaffolding alone.\n\nWriting FHIR-compliant JSON structures by hand is painful — deeply nested resources with strict field requirements. I'd type `createPrescriptionBundle(`\n\nand Copilot would suggest the entire Bundle structure with proper `resourceType`\n\n, `entry`\n\narrays, `Patient`\n\n, `Practitioner`\n\n, and `MedicationRequest`\n\nresources. I still had to verify compliance, but the starting point was 90% correct.\n\nFlutter's API evolves fast. Copilot caught deprecated patterns I didn't even know about — suggesting `withValues(alpha: 0.5)`\n\nwhen I typed `withOpacity(`\n\n, flagging `activeColor`\n\n→ `activeThumbColor`\n\non Switch widgets, and recommending `mounted`\n\nguards on async `BuildContext`\n\nusage. It acted like a real-time migration guide.\n\nCureNet's offline-first architecture relies heavily on `SharedPreferences`\n\nfor record persistence. Copilot learned the project's `DataMode.storageKey()`\n\nnamespacing pattern and consistently suggested properly-namespaced keys. When I wrote save logic, it suggested the corresponding load logic with the correct JSON encoding patterns.\n\nWhen my SSE (Server-Sent Events) streaming broke after deploying to Render, I pasted the Nginx config into Copilot Chat and asked \"why is my SSE connection dropping after 30 seconds?\" It identified the missing `proxy_buffering off`\n\ndirective immediately — a fix that would have taken me hours of Stack Overflow archaeology.\n\nCopilot didn't write CureNet. But it removed the friction that makes finishing a project so hard. The boring parts — boilerplate, type annotations, JSON parsing, import management — got handled in the background while I focused on the actual hard problems: ABDM cryptography, FHIR compliance, and making an AI assistant that doesn't hallucinate your medication list.\n\nThat's exactly what \"finishing\" needs. Not a magic wand, but a tireless partner that handles the tedium so you can focus on the craft.\n\n**CureNet is open for feedback.** If you're building in Indian healthtech or working with ABDM, I'd love to connect.", "url": "https://wpnews.pro/news/i-built-india-s-missing-health-app-then-abandoned-it-here-s-how-i-finished-it", "canonical_source": "https://dev.to/labishbardiya/i-built-indias-missing-health-app-then-abandoned-it-heres-how-i-finished-it-4244", "published_at": "2026-06-04 10:39:32+00:00", "updated_at": "2026-06-04 10:42:52.461646+00:00", "lang": "en", "topics": ["artificial-intelligence", "computer-vision", "natural-language-processing", "ai-products", "ai-tools"], "entities": ["CureNet", "ABDM", "Ayushman Bharat Digital Mission", "FHIR R4", "ABHA", "NVIDIA NIM", "Llama 3.2 90B Vision", "Bhashini ULCA"], "alternates": {"html": "https://wpnews.pro/news/i-built-india-s-missing-health-app-then-abandoned-it-here-s-how-i-finished-it", "markdown": "https://wpnews.pro/news/i-built-india-s-missing-health-app-then-abandoned-it-here-s-how-i-finished-it.md", "text": "https://wpnews.pro/news/i-built-india-s-missing-health-app-then-abandoned-it-here-s-how-i-finished-it.txt", "jsonld": "https://wpnews.pro/news/i-built-india-s-missing-health-app-then-abandoned-it-here-s-how-i-finished-it.jsonld"}}