Logo Lanfrica

thedevlake/dokita-web

Domain:

natural language processinghealthcare

Record type:

software
Creator:
the
Host:
Dokita is a voice-driven health triage system built for the way Nigerians actually speak. A patient describes their symptoms in Pidgin, Yoruba, Hausa or English. An AI agent asks follow-up questions in the same language, scores urgency against clinical red flag rules, and routes the case to a doctor. # Sahara Voice Triage — web patient app Browser port of `apps/patient` (the Expo/React Native app) — same voice-triage call flow (record → transcribe → agent reply → repeat → hand off to a doctor), same backend, built with Vite + React instead of Expo. See the root `CLAUDE.md` for the overall system; this app talks to the same `backend/` API as `apps/patient`. ## Setup ``` cd apps/web npm install cp .env.example .env # edit VITE_API_BASE_URL if the backend isn't on localhost:4000 npm run dev ``` The backend must already be running (`docker compose up` from the repo root — see the root `CLAUDE.md`). Microphone access requires a secure context: `localhost` works for dev; any other deployment needs HTTPS. ## Commands - `npm run dev` — Vite dev server with hot reload - `npm run build` — type-check (`tsc -b`) + production build - `npm run preview` — serve the production build locally ## Notes - Ported from `apps/patient/src` — see that app's files for the reference implementation. `useRecorder.ts` (MediaRecorder + Web Audio API) and `useSpeech.ts` (HTMLAudioElement) are web-native rewrites; everything else (`api.ts`, `types.ts`, `theme.ts`, `useVAD.ts`, `useVoiceAgent.ts`, `VoiceOrb.tsx`, `CallScreen.tsx`, `DoneScreen.tsx`) is a direct or near-direct port. - Orphaned mobile-app files (`PhoneConfirmScreen`, `ChatBubble`, `NumericKeypad`, `PrimaryButton`, `BrandMark`, `audioMap.ts`) were **not** ported — they're dead code in the reference app too (nothing imports them).