Review findings on this branch. The lab-case save could be posted against a detail the server has never seen. persistDraft returns a *preview* treatment instead of saving when any detail lacks a treatment type — the blank one the workspace opens with is enough — and a preview's detail id falls back to the client id. Recording straight after opening a visit and confirming a result with a lab or due date would send that id and fail the whole save. It now checks what came back rather than the precondition, so it holds for every early return persistDraft has. stop() optional-chained into a no-op when the recorder was already gone, leaving the bar recording forever with a live timer and only Cancel as a way out. Three "this browser cannot record" paths reported VOICE_MIC_DENIED — no MediaRecorder at all, no container the API accepts, and a recorder that throws after permission was already granted. Telling clinicians their microphone was denied sends them hunting for a permission nothing asked for; they now report VOICE_UNSUPPORTED_FORMAT. The voice route's large-body match stripped every trailing slash while Express ignores exactly one, so '/api/voice/extract//' bought a 10 MB buffer for a request that then 404s. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Dyolink — Frontend (Next.js)
Prerequisites
- Node.js 20+ and npm
First-time setup
-
Clone the monorepo and go to the frontend app:
git clone <repository-url> dyolink cd dyolink/frontend -
Install dependencies
npm install -
Environment
Create
.env.localin this folder (not committed to git) with the public URLs your browser will use:NEXT_PUBLIC_APP_URL=http://localhost:3001 NEXT_PUBLIC_API_URL=http://localhost:3000/api NEXT_PUBLIC_APP_NAME=Dyolink- Adjust
NEXT_PUBLIC_API_URLif the Nest API runs on another host/port. - These values are baked in at build time for production images; for local dev, restart
npm run devafter changing them.
- Adjust
Run (development)
npm run dev
Open http://localhost:3001 (dev server uses port 3001 so it does not clash with the API on 3000).
Ensure the backend is running and NEXT_PUBLIC_API_URL matches its base URL (including /api if your API is mounted there).
After pulling latest main
git pull
npm install
Useful commands
| Command | Purpose |
|---|---|
npm run dev |
Development server (port 3001) |
npm run build |
Production build |
npm run start |
Serve production build (port 3000 — used inside Docker) |
npm run lint |
ESLint |
Docker
Image build and build-args (NEXT_PUBLIC_*) are documented in the repository root README.md.