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:
- rqbit hosted on hetzner.com via Docker Compose
- postgresql - hosted on railway.app
- nextjs 15 (rsc, server actions) deployed on vercel.com
- shadcn/ui
- TailwindCSS
- Drizzle ORM
- auth using clerk.com




demo:
sign in, watch and stream torrent:
search releases and track unwatched episodes:
v2 tech stack:
- rqbit hosted on hetzner.com via Docker Compose
- bubbletea - TUI framework for Go
demo:
search, track and stream episodes in 4K