This project is developed first and foremost to satisfy my own personal reading and library-management needs.
I am still a beginner with Rust, Tauri, and TypeScript, so thoughtful advice from experienced contributors is very welcome. If you notice architectural issues, ecosystem conventions I am missing, or implementation choices that are likely to cause trouble later, I would genuinely appreciate that kind of feedback in an issue.
At the same time, I am not looking for unplanned "AI slop" style improvements that expand the project without a clear reason. Drive-by suggestions or changes that add complexity without understanding the actual goals of the project are not something I intend to accept, and they may simply be declined without discussion.
Bug reports, requests, and other ideas are also welcome through issues, and you should not hesitate to open one. However, because this is a personal project, not every request will be accepted or prioritized.
Use the flake shell before running frontend or Rust commands.
nix --extra-experimental-features 'nix-command flakes' develop
npm installnpm run tauri devRun both checks before submitting changes.
npm run checkFor a release-facing verification pass, use:
npm run check:releaseOr run the individual checks when iterating on one area:
npm run check:rust
npm run check:frontendOr the narrower commands:
npm run rust:fmt:check
npm run rust:lint
npm run lint
npm run fmt:check
npm run build
cargo check --manifest-path src-tauri/Cargo.tomlRun the test suites when touching frontend logic, Rust behavior, or shared state handling.
npm test
cargo test --manifest-path src-tauri/Cargo.tomlFor deeper Rust test-quality audits, you can also run mutation testing locally:
cargo install cargo-mutants --locked
npm run mutants:rust:list
npm run mutants:rustWhen dependencies or bundled notices change, also run:
npm run check:licensesFrontend checks also print a small bundle-size report after npm run build so large regressions are easier to notice during review.
- src-tauri/src/lib.rs: backend, config, SQLite, library scan/watch, thumbnails
- src/main.ts: frontend state, navigation, PDF viewer, notes
- src/styles.css: UI styling
- Keep changes small and verifiable when possible.
- Prefer preserving user data over destructive cleanup.
- Mention practical manual test steps when changing persistence, navigation, or PDF rendering.
Development notes and implementation details live in AGENTS.md.