A desktop application to track the anime you watch, have watched, and plan to watch. Built with PyQt6 and backed by the MyAnimeList database via the Jikan API.
- Search the MyAnimeList database by title
- View detailed info: synopsis, score, rank, genres, characters, relations, recommendations, and trailers
- Track your library with statuses: Watching, Completed, On Hold, Dropped, Plan to Watch
- Favorite anime to pin them at the top of your library
- Filter and sort your library by type, genre, status, and score
- Bulk operations: select and delete multiple entries at once
- Import/restore your library from backup JSON files
- Dark and light themes (Mocha / Latte with a Catppuccin-inspired palette)
- Keyboard shortcuts (configurable in Settings)
Add screenshots here to showcase the application.
- Python 3.12 or later (developed on 3.14)
- uv package manager
# Clone the repository
git clone https://github.com/your-username/anitrack.git
cd anitrack
# Install dependencies
uv sync
uv run python build.pyThis produces a single-file executable at dist/Anitrack.exe (Windows) via PyInstaller.
There is no formal test framework. Run the standalone smoke tests to verify the app builds correctly:
uv run python smoke_test.py
uv run python behavior_test.pyBoth tests run headless (no display required) and do not make network requests.
uv run ruff check- API: Uses Jikan API v4 (unofficial MyAnimeList REST API) with rate limiting, exponential backoff retry, and disk-based response caching.
- Library storage: Saved as a JSON file in your platform's data directory (
%LOCALAPPDATA%/anitrack/library.jsonon Windows). - Image loading: Asynchronous via
QNetworkAccessManagerwith a file-based disk cache (30-day eviction).
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push to the branch and open a Pull Request
MIT