Logo Lanfrica

DayoMama/malvector-track

Domaine:

healthcare

Type de record:

softwaretools
Créateur:
Day
Hôte:
A decision-support web app for Ghana's NMEP to track vector-control distribution cycles, automate net/insecticide disposal alerts, and monitor insecticide resistance hotspots. # MalVector Track Vector intervention distribution, disposal & insecticide resistance monitoring for Ghana's National Malaria Elimination Programme (NMEP). CSCD602 Advanced Software Engineering — Individual Project-Based Examination. Implements the MVP (FR-1–FR-5) as scoped in `SRS_Effort_Estimation.docx` and designed in `System_Design.docx`. **Live application:** malvector-track.vercel.app **Repository:** github.com > **Note on how this was built and verified:** this codebase was originally > generated in an environment with no network access, so early versions were > only syntax-checked, not run live. It has since been deployed to a real > Supabase project and Vercel, and tested end-to-end through the actual UI as > both District Officer and Admin roles. That process surfaced and fixed > three real defects — two Row Level Security misconfigurations and one > missing cross-field validation — documented in full in > `Testing_Report.docx` and `Technical_Debt_Plan.docx`. ## 1. Prerequisites - Node.js 18+ - A free Supabase project - A Vercel account for deployment ## 2. Local setup ```bash npm install cp .env.local.example .env.local # edit .env.local with your Supabase project URL + publishable (anon) key ``` ## 3. Database setup In the Supabase SQL editor, run in order: 1. `supabase/schema.sql` — creates tables, indexes, and RLS policies 2. Create your first users via **Authentication > Users > Add user** in the Supabase dashboard (one with role you'll assign as `admin`, one or more as `officer`) 3. `supabase/seed.sql` — districts, plus profile rows linking `profiles` to the auth users you just created (fill in their UUIDs) 4. `supabase/fixes.sql` — two RLS fixes required for the app to work correctly: (a) an `is_admin()` helper function that resolves an infinite recursion bug in the `profiles` SELECT policy, and (b) a missing INSERT policy on `disposal_items` that otherwise silently blocks disposal tracking for Dis …