Set up Mangalord with a Rust/axum backend, SvelteKit frontend, Postgres, and Docker Compose deployment. Establishes the architecture and TDD patterns the project will extend: - Hexagonal-ish backend layering (domain / repo / storage / api) with a pluggable Storage trait (LocalStorage today, S3 as a future impl). - Initial migration: users, mangas, chapters, bookmarks. - Vertical slice for mangas (list, search, create, get) with #[sqlx::test] integration coverage and storage unit tests. - SvelteKit frontend using Svelte 5 runes, typed API client, Vitest unit tests and Playwright e2e with route mocking. - CLAUDE.md documenting layering, TDD/git/SemVer workflow rules, and extension points (tags, fulltext search, OCR, S3, auth). - Project-scoped .claude/settings.json with permission allowlist for the toolchain (git, cargo, npm/vite, docker, psql, gh, doc fetches). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
122 lines
2.9 KiB
JSON
122 lines
2.9 KiB
JSON
{
|
|
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
|
"permissions": {
|
|
"allow": [
|
|
"Bash(ls:*)",
|
|
"Bash(pwd)",
|
|
"Bash(tree:*)",
|
|
"Bash(find:*)",
|
|
"Bash(grep:*)",
|
|
"Bash(rg:*)",
|
|
"Bash(cat:*)",
|
|
"Bash(head:*)",
|
|
"Bash(tail:*)",
|
|
"Bash(wc:*)",
|
|
"Bash(file:*)",
|
|
"Bash(stat:*)",
|
|
"Bash(du:*)",
|
|
"Bash(df:*)",
|
|
"Bash(diff:*)",
|
|
"Bash(which:*)",
|
|
"Bash(whereis:*)",
|
|
"Bash(env)",
|
|
"Bash(printenv:*)",
|
|
"Bash(date:*)",
|
|
|
|
"Bash(awk:*)",
|
|
"Bash(sed:*)",
|
|
"Bash(cut:*)",
|
|
"Bash(sort:*)",
|
|
"Bash(uniq:*)",
|
|
"Bash(tr:*)",
|
|
"Bash(jq:*)",
|
|
"Bash(yq:*)",
|
|
"Bash(xargs:*)",
|
|
"Bash(echo:*)",
|
|
"Bash(printf:*)",
|
|
|
|
"Bash(mkdir:*)",
|
|
"Bash(touch:*)",
|
|
"Bash(cp:*)",
|
|
"Bash(mv:*)",
|
|
|
|
"Bash(git status:*)",
|
|
"Bash(git diff:*)",
|
|
"Bash(git log:*)",
|
|
"Bash(git show:*)",
|
|
"Bash(git ls-files:*)",
|
|
"Bash(git rev-parse:*)",
|
|
"Bash(git branch:*)",
|
|
"Bash(git switch:*)",
|
|
"Bash(git checkout:*)",
|
|
"Bash(git add:*)",
|
|
"Bash(git commit:*)",
|
|
"Bash(git restore:*)",
|
|
"Bash(git stash:*)",
|
|
"Bash(git tag:*)",
|
|
"Bash(git merge:*)",
|
|
"Bash(git rebase:*)",
|
|
"Bash(git cherry-pick:*)",
|
|
"Bash(git remote:*)",
|
|
"Bash(git fetch:*)",
|
|
"Bash(git pull:*)",
|
|
"Bash(git clean -n:*)",
|
|
"Bash(git config --get:*)",
|
|
"Bash(git config --list:*)",
|
|
"Bash(gh:*)",
|
|
|
|
"Bash(cargo:*)",
|
|
"Bash(rustc:*)",
|
|
"Bash(rustup:*)",
|
|
"Bash(rustfmt:*)",
|
|
"Bash(clippy-driver:*)",
|
|
"Bash(sqlx:*)",
|
|
|
|
"Bash(node:*)",
|
|
"Bash(npm:*)",
|
|
"Bash(npx:*)",
|
|
"Bash(pnpm:*)",
|
|
"Bash(yarn:*)",
|
|
"Bash(tsc:*)",
|
|
"Bash(vite:*)",
|
|
"Bash(vitest:*)",
|
|
"Bash(playwright:*)",
|
|
"Bash(svelte-kit:*)",
|
|
"Bash(svelte-check:*)",
|
|
"Bash(eslint:*)",
|
|
"Bash(prettier:*)",
|
|
|
|
"Bash(docker:*)",
|
|
"Bash(docker compose:*)",
|
|
"Bash(docker-compose:*)",
|
|
|
|
"Bash(psql:*)",
|
|
"Bash(pg_isready:*)",
|
|
"Bash(pg_dump:*)",
|
|
"Bash(pg_restore:*)",
|
|
"Bash(createdb:*)",
|
|
"Bash(dropdb:*)",
|
|
|
|
"Bash(curl http://localhost:*)",
|
|
"Bash(curl http://127.0.0.1:*)",
|
|
"Bash(curl -s http://localhost:*)",
|
|
"Bash(curl -s http://127.0.0.1:*)",
|
|
"Bash(wget http://localhost:*)",
|
|
"Bash(wget http://127.0.0.1:*)",
|
|
|
|
"WebFetch(domain:docs.rs)",
|
|
"WebFetch(domain:doc.rust-lang.org)",
|
|
"WebFetch(domain:rust-lang.org)",
|
|
"WebFetch(domain:crates.io)",
|
|
"WebFetch(domain:svelte.dev)",
|
|
"WebFetch(domain:kit.svelte.dev)",
|
|
"WebFetch(domain:vitejs.dev)",
|
|
"WebFetch(domain:vitest.dev)",
|
|
"WebFetch(domain:playwright.dev)",
|
|
"WebFetch(domain:docs.docker.com)",
|
|
"WebFetch(domain:www.postgresql.org)",
|
|
"WebFetch(domain:postgresql.org)"
|
|
]
|
|
}
|
|
}
|