Voice-first writing service. Hold down spacebar, talk, get a card with the transcript. Uses Sarvam for speech-to-text.
npm install
vim .env.local # paste your Sarvam key
npm run devWithout a key it falls back to mock mode so the UI is still testable.
lib/recorder.ts— single-take MediaRecorder. Returns the full blob on stop.app/api/transcribe— server-side proxy to Sarvam (saaras:v3) so the key never reaches the browser.lib/session.ts— state machine (idle → listening → processing → post) and theTranscriptItem[]model. Each recording is its own card.
Built with: Next.js (App Router) + React 19.