profileShare

rasmusjy / voicetask

Read-only snapshot

No repository description.

main default branch 105 files Expires Sep 13, 2026, 9:06 AM
CONTRIBUTING.md 1,667 bytes

VoiceTask

Voice-first Socratic spec interviewer. You talk about what you want to build, an AI interviewer asks one targeted question at a time, and the tool emits a coding-agent-ready spec pack where every requirement traces back to what you actually said.

All product and implementation decisions live in spec/. Read spec/SPEC.md, spec/PLAN.md, and spec/TASKS.md before writing any code. Do not invent requirements that are not in the spec.

Commands

npm install          # install dependencies
npm run dev          # start server + client in dev mode
npm run typecheck    # tsc --noEmit for server, client, shared
npm test             # vitest run (all tests use mock providers, no network)
npm run build        # production build of client + server

Conventions

  • TypeScript strict mode everywhere. No any unless interfacing with an untyped external API, and then wrap it immediately in a typed boundary.
  • Layout: server/ (Fastify), client/ (Vite + React), shared/ (types used by both). Shared types are the single source of truth for API payloads.
  • Tests live next to the code they test (foo.ts and foo.test.ts).
  • All external providers (STT, LLM) go through the interfaces in server/providers/. Application code never imports @anthropic-ai/sdk or calls fetch to a provider directly.
  • Tests and CI run with MOCK_PROVIDERS=1. Never write a test that needs a real API key or network access.
  • API keys come from environment variables only. Never write a key to disk, to logs, or to a session file.
  • Comments: only where the code cannot explain itself. No decorative comments, no docstrings on trivial functions.