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
1 # VoiceTask
2
3 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.
4
5 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.
6
7 ## Commands
8
9 ```
10 npm install # install dependencies
11 npm run dev # start server + client in dev mode
12 npm run typecheck # tsc --noEmit for server, client, shared
13 npm test # vitest run (all tests use mock providers, no network)
14 npm run build # production build of client + server
15 ```
16
17 ## Conventions
18
19 - TypeScript strict mode everywhere. No `any` unless interfacing with an untyped external API, and then wrap it immediately in a typed boundary.
20 - Layout: `server/` (Fastify), `client/` (Vite + React), `shared/` (types used by both). Shared types are the single source of truth for API payloads.
21 - Tests live next to the code they test (`foo.ts` and `foo.test.ts`).
22 - 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.
23 - Tests and CI run with `MOCK_PROVIDERS=1`. Never write a test that needs a real API key or network access.
24 - API keys come from environment variables only. Never write a key to disk, to logs, or to a session file.
25 - Comments: only where the code cannot explain itself. No decorative comments, no docstrings on trivial functions.
26