Quality of Life
Hooks, CI, and developer quality tooling across the monorepo.
Consistency, fast feedback, and automation across TS, Rust, Bash, and Python.
Cross-repo (Tier 1)
| Layer | What we use |
|---|---|
| Git hooks | Lefthook: format, lint, typecheck, large-files, secrets, commit-msg (see scripts/git-hooks/) |
| Task runner | Bun scripts via bun run <task> (see root package.json) |
| Editor consistency | .editorconfig: LF, indent, charset, final newline |
| CI | .github/workflows/ci.yml: split quality gates (lint, typecheck, coverage tests, web e2e) on push/PR to main |
| CD | .github/workflows/cd.yml: staged deploy workflow template (staging on main, production on version tags) |
| Dev Container | .devcontainer/: reproducible env (Bun, Rust, Python, shell tools). Reopen in Container; see .devcontainer/README.md |
Per-language
| Language | Lint / format | Test / types |
|---|---|---|
| TS/JS | oxlint (lint), oxfmt (format) | tsc (typecheck), Vitest/Jest if added |
| Rust | rustfmt, clippy | cargo test (e.g. apps/rust) |
| Bash | shellcheck, shfmt | (bats optional) |
| Python | ruff (check + format) | (pytest optional); scripts/python |
One-command surface
From repo root:
bun run format— oxfmt + scripts (shfmt, ruff) + cargo fmtbun run lint— Turbo lint + scripts (shellcheck, ruff)bun run typecheck— TS onlybun run test— Turbo tests + script testsbun run test:coverage— TS coverage runs + all language testsbun run test:e2e:web— Playwright browser tests forapps/webbun run build— Turbo build
Next-level (Tier 2+)
- Rust:
cargo watch/cargo nextestfor faster feedback - C: sanitizers (ASan/UBSan) in debug builds
- Python: Pyright + pytest in CI
- Releases: changesets for versioning and changelogs
- Environments: Dev Container (
.devcontainer/) or Nix for pinned toolchains
See PROJECT.md for full layout and commands.