Back to projects

MediTrack

MediTrack is a private, local-only lab results tracker that turns PDFs into plain-language, trended insights with on-device OCR and encrypted storage.

Year
2026
Type
Web app
Status
Live
The problem. People collect lab results as a pile of cryptic PDFs. The apps that make them readable want you to upload your bloodwork to their servers — so the fix for confusion costs you your medical privacy. MediTrack refuses that trade: it turns lab PDFs into plain-language, trended insights while every piece of health data stays on your own device. No accounts, no servers, no telemetry.

The hard part. "Local-only" and "AI analysis" pull in opposite directions — a plain-language summary normally means shipping the results to a model in the cloud. I kept both by drawing the privacy boundary inside the device: results are parsed and stored in an encrypted on-device SQLite database, and the one time the network is touched — the optional AI summary — the payload is stripped of identifying data on-device first. The model sees values, never a patient.

The approach. One canonical JSON schema code-generates the models for both the Vue 3 PWA and the Flutter app, so web and mobile can never drift apart. On-device OCR (Tesseract WASM) maps an uploaded PDF or photo onto a 70-test catalogue for review before save; reference-range markers and 12-month trend charts do the interpretation. A Clean Architecture split keeps the presentation layer from ever reaching into storage or the AI client directly, and mobile encrypts at rest with SQLCipher (AES-256).

The outcome. A genuinely private health tracker that still feels modern — family profiles, retest reminders, password-gated encrypted backups, idle and tab-blur auto-lock, and full Arabic/English RTL enforced by a CI gate that fails the build on a physical-direction CSS rule.

My Role

Architect & Full-Stack Developer — sole engineer across the shared schema, the Vue PWA, and the Flutter app. Owned the on-device privacy model, the schema-driven codegen that keeps both apps in lockstep, the OCR + encrypted-storage pipeline, and the CI gates enforcing RTL parity and layered architecture across web and mobile.
  • Vue 3
  • TypeScript
  • Vite
  • Pinia
  • Tailwind CSS
  • vite-plugin-pwa
  • Flutter
  • Riverpod
  • Drift (SQLCipher)
  • SQLite
  • Tesseract WASM
  • Claude API
  • Vitest
  • Playwright
  • GitHub Actions
MediTrack — screenshot 1 of 1