MyAnimeList
I built this because nothing else felt right. Every tracker I tried had decent pieces but the whole never clicked — awkward UI, missing features, or it just got in the way of actually watching anime. So I built one that fits how I work.
It is a self-hosted Go server that streams anime through a proxy layer, catalogs metadata, and tracks your progress.
The frontend is Tailwind CSS v4 with HTMX handling pagination, infinite scroll, search, and watchlist interactions. TypeScript only steps in where HTMX cannot — the video player, command palette bound to Cmd+K, skip segment editor, theme toggling with system preference detection, and custom UI components. Everything lives in one process, one SQLite database, one deployment.
Repository structure
| Path | Purpose |
|---|---|
api/* |
Feature routes: anime, auth, playback, watchlist |
cmd/server |
Application entrypoint and CLI commands |
cmd/user |
User management CLI (create, update, delete) |
integrations/* |
External API clients and scraping |
internal/* |
Core services: db, middleware, server, worker |
pkg/middleware |
Generic HTTP middleware |
templates/* |
Server-rendered HTML templates |
migrations |
Schema evolution (20 migrations) |
static / dist |
Frontend assets |
Running locally
Requires Go 1.25+, Bun, and just. Migrations run on startup. Configuration lives in environment variables — see cmd/server/main.go for the full list.
just dev
Contributing
Bug reports and pull requests are welcome. This is a personal project, so there is no strict roadmap or issue triage cycle. If something is broken or missing, open an issue or send a PR.
License
MIT. See LICENSE.