Skip to main content
TrueCourse stores everything as JSON files. No database. There are two locations: a per-repo store under <repo>/.truecourse/, and a per-user store under ~/.truecourse/.

Per-repo: .truecourse/

Created on first use. The committable files travel with the repo through git; everything else is added to .truecourse/.gitignore automatically.
The committable baselines (LATEST.json, guard/LATEST.json, specs/corpus.json) follow one convention: commit them only after merging to main (re-run the command, commit the result). Committing them from feature branches makes two PRs conflict on a large generated JSON.

Per-user: ~/.truecourse/

Set TRUECOURSE_HOME to relocate the whole per-user directory.

Write safety

Writes go through an atomic write-to-tmp + rename, so a crash never leaves a half-written store. Concurrent analyses are prevented by the .analyze.lock file. The server walks up from cwd looking for .truecourse/, so commands work from anywhere inside the repo.

Next steps

Baselines & diff

The commit conventions in practice, on the analyze side.

Telemetry

What anonymous usage data is collected, and how to opt out.