anitrack

simple web tui app i made to track anime i watch. while there are already much more feature-rich alternatives out there (miru.watch), i wanted something worked exactly the way i wanted and had only the features i needed.

v1 features:

  • runs in browser
  • search anime, add them to watchlist
  • mark episodes as watched
  • save progress on your account with github/google oauth
  • watch episodes on external streaming website
  • stream directly from torrent uploads from SubsPlease without downloading

v2 features:

  • runs in terminal
  • search anime
  • stream episodes in 4K (upscaled in real-time)
  • save watch history locally
  • stream directly from torrent uploads from SubsPlease without downloading

notes:

  • the biggest challenge was torrent streaming. first tried webtorrent (js lib), but browser limitations were a pain. a server-side go client had memory leaks and couldn't stream and download simultaneously. finally landed on rqbit, a rust client that did everything i needed: simultaneous download/streaming, a server mode with an api, a ui, and docker compose file to deploy it as api.
  • for v1, the rest of the stack was next.js. i initially had a separate frontend and backend but later rewrote everything using next.js with server actions. this part was pretty straightforward.
  • for v2, after finding out that there is no subtitle support for mkv files in browsers, i went with a tui with go + charm. this also let me integrate anime4k for upscaling, so i can stream in 4k with subtitles using mpv or vlc. this was my first real go project and tui app.

v1 tech stack:

anitrack
anitrack
anitrack
anitrack

demo:

sign in, watch and stream torrent:
search releases and track unwatched episodes:

v2 tech stack:

demo:

search, track and stream episodes in 4K