A standalone Rust service that polls manga discovery sources, resolves each release to a MangaBaka series, and maintains a local catalog of discoverable series. Browse it through the embedded web UI; gate the write surface behind a single-user admin token.
Ships as one binary with the React SPA embedded, or as a multi-arch Docker image. SQLite-only; no Postgres, no Redis, no external queue.
Full operator documentation lives at tsundoku.4sh.dev:
- Getting Started — install + first run, Docker and from-source.
- Configuration — the
field-by-field reference, generated from
config/tsundoku.example.toml. - Sources, Providers, Review queue — day-to-day operations.
- Deployment, Troubleshooting — prod + diagnostic recipes.
- Architecture — short design tour.
While developing locally, the runtime
Scalar UI at /docs is the live API
reference.
# 1. Copy the example config and edit it (data_dir, at least one source).
cp config/tsundoku.example.toml config/tsundoku.toml
$EDITOR config/tsundoku.toml
# 2. Apply migrations.
cargo run -- migrate
# 3. (Optional) refresh the MangaBaka offline cache.
cargo run -- refresh-provider-cache
# 4. Serve the API + scheduler.
cargo run -- serveThe server binds to 127.0.0.1:8080 by default. The embedded SPA is
at /.
cp config/tsundoku.example.toml config/tsundoku.toml
$EDITOR config/tsundoku.toml
make prod-up # docker compose --profile prod up -dPre-built multi-arch images at ghcr.io/ashdevfr/tsundoku:latest and
:v<version>.
v1 in progress. Source-pluggable architecture, but only the Nyaa discovery source ships in v1. Metadata-provider-pluggable, but only the MangaBaka provider ships. The architecture is ready for additional sources and providers without core refactors.
See CLAUDE.md for the contributor-facing architecture
overview and code conventions. The docs site has a non-contributor
architecture tour for a
gentler intro.
Pre-commit hooks:
brew install pre-commit # or: pipx install pre-commit
make setup-hooksLicensed under either of
- Apache License, Version 2.0 (
LICENSE-APACHEor http://www.apache.org/licenses/LICENSE-2.0) - MIT License (
LICENSE-MITor http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.