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.
tsundoku is a solo side project. I built it for my own use and continue to develop it because I enjoy it. A few things that follow from that:
- No SLA. I read everything but respond when I have time.
- Bug reports are welcome. Use the issue template and include version, deployment method, and relevant logs.
- Feature requests are welcome, but I will close ones that fall outside the scope (see Status above).
- PRs are welcome for bugs and small features. For larger changes, please open an issue first so we can agree on direction before you write code.
- I don't provide installation support. The docs cover deployment. If you can't get past the docs, this project may not be a good fit yet.
The docs site has an architecture tour covering the overall design and the source/provider plugin model.
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.