A production-ready Flutter mobile application for managing your home medicine cabinet, tracking medication expiration dates, creating treatment plans, managing dose schedules, and receiving medication reminders.
- Medication Inventory — Add, edit, delete, and view medications with full details (name, active ingredient, category, quantity, expiry date, barcode, storage location, notes).
- Expiry & Stock Alerts — Automatically detects medications expiring within 30 days and medications with low stock.
- Barcode Scanner — Scan medication package barcodes using the device camera (
mobile_scanner). Barcodes are stored with each medication. - Treatment / Illness Tracking — Create treatment plans with symptoms, start/end dates, and notes.
- Prescription Plans — Attach medication prescriptions to treatments with dosage, interval, and duration.
- Dose Scheduling — Auto-generated dose log entries with pending/taken/skipped/missed status.
- Reminders — Local push notifications for each scheduled dose (
flutter_local_notifications). - Dashboard — Home screen with summary cards: today's doses, expiring meds, low stock, active treatments.
- Settings — Notification controls, sync status, and future feature placeholders.
- FVM — Flutter Version Manager (install guide)
- Flutter 3.41+ (stable) — managed via FVM
- Supabase account — supabase.com
- Android Studio / Xcode — for device emulators
cd medora
fvm install # installs the pinned Flutter version
fvm use stable # already configured-
Create a new Supabase project at supabase.com.
-
Run the SQL schema — go to your Supabase dashboard → SQL Editor → New Query, paste the contents of
supabase/migrations/001_initial_schema.sqland click Run. -
Run the RLS policies — open a second New Query, paste
supabase/migrations/002_rls_policies.sqland click Run.Important: The MVP uses permissive RLS (
USING (true)) so no authentication is required. All four tables (medications,treatments,prescriptions,dose_logs) must exist before running the app. -
Copy
.env.exampleto.envand fill in your credentials from the Supabase dashboard → Project Settings → API:cp .env.example .env
SUPABASE_URL=https://your-project.supabase.co SUPABASE_ANON_KEY=your-anon-key-here
fvm flutter pub get# Android
fvm flutter build apk --debug
# Android Emulator
fvm flutter run
# iOS (macOS only)
fvm flutter run --device-id=<ios-device-or-simulator>
# Web
fvm flutter build web --release
# Linux
fvm flutter build linux --releaseNote: The project requires minSdk 28 (Android 9.0+) due to
mobile_scannerandsupabase_flutter. Core library desugaring is already configured inandroid/app/build.gradle.ktsforflutter_local_notifications.
If you add Freezed/json_serializable models:
fvm dart run build_runner build --delete-conflicting-outputs

