Files
mroberts 7f5d034a1f feat: auth by default, theme toggle, CoderPad startup, review fixes
- Require a session on every route; public routes opt out with @allow_anonymous
- Split password hashing and pepper loading into passwords.py
- Add a system/light/dark theme toggle backed by light-dark() colors
- Ignore stale 401s from an earlier session, PATCH only changed book fields,
  and block overlapping journal-entry saves
- Add bin/start and CoderPad Vite server settings for the pad's start/restart
- Rewrite README as a mise onboarding guide; expand .gitignore
- Include review-round fixes and tests
2026-10-02 16:49:14 -05:00

82 lines
2.5 KiB
TOML

[tools]
python = "3.14"
node = "24"
ruff = "0.16.10"
biome = "2.5.15"
uv = "0.12.21"
[tasks.lock]
description = "Re-resolve backend/requirements.in into the pinned, hashed backend/requirements.txt"
run = "uv pip compile --quiet --universal --generate-hashes backend/requirements.in -o backend/requirements.txt"
[tasks.setup]
description = "Create the venv and install backend and frontend dependencies"
run = [
"python -m venv .venv",
".venv/bin/pip install -q --disable-pip-version-check -r backend/requirements.txt",
"npm install --no-fund --no-audit",
]
[tasks.db]
description = "Start local Postgres and wait until it accepts connections"
run = [
"docker compose up -d db",
"until docker compose exec -T db pg_isready -q -U postgres; do sleep 1; done",
]
[tasks."dev:api"]
description = "Flask API on :5000"
depends = ["setup", "db"]
run = ".venv/bin/python backend/app.py"
[tasks."dev:web"]
description = "Vite UI; /api is proxied to Flask"
depends = ["setup"]
run = "npm run dev"
[tasks.dev]
description = "Start the app for local testing (API + UI)"
depends = ["dev:api", "dev:web"]
[tasks."format:py"]
description = "Sort imports and format the backend"
run = ["ruff check --select I --fix backend", "ruff format backend"]
[tasks."format:ts"]
description = "Sort imports and format the frontend"
run = "biome check --write --linter-enabled=false src vite.config.ts"
[tasks.format]
description = "Format and auto-fix Python and TypeScript"
depends = ["format:py", "format:ts"]
[tasks."lint:py"]
description = "Lint, type-check and verify formatting of the backend (no writes)"
run = [
"ruff check backend",
"ruff format --check backend",
"uvx --quiet --with-requirements backend/requirements.txt --with types-psycopg2==2.9.21.20260911 [email protected] --strict backend --exclude backend/tests",
]
[tasks."lint:ts"]
description = "Lint the frontend and verify formatting (no writes)"
run = "biome check src vite.config.ts"
[tasks.lint]
description = "Lint and format-check Python and TypeScript (CI-safe, no writes)"
depends = ["lint:py", "lint:ts"]
[tasks."test:py"]
description = "Backend integration tests against real Postgres (books_test)"
depends = ["setup", "db"]
run = ".venv/bin/python -W error -m unittest discover -s backend/tests -t backend"
[tasks."test:ts"]
description = "Frontend component tests and typecheck"
depends = ["setup"]
run = ["npm test", "npm run typecheck"]
[tasks.test]
description = "Run backend and frontend tests"
depends = ["test:py", "test:ts"]