العودة إلى المشاريع
MediTrack
MediTrack متتبع خاص لنتائج التحاليل يعمل على جهازك فقط، يحوّل ملفات PDF إلى رؤى مبسّطة عبر التعرّف الضوئي على النصوص محليًا وتخزين مشفّر.
- السنة
- 2026
- النوع
- تطبيق ويب
- الحالة
- متاح
دراسة الحالة الكاملة متوفرة بالإنجليزية.
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.
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.
دوري
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
