2026-05-25 20:20:56 +02:00
2026-05-24 22:46:21 +02:00
2026-05-25 18:24:09 +02:00
2026-05-18 17:49:03 +02:00
2026-05-25 20:20:56 +02:00
2026-05-12 10:07:05 +02:00
2026-05-24 22:36:41 +02:00
2026-05-14 12:42:17 +02:00
2026-05-14 12:42:17 +02:00
2026-05-24 22:45:51 +02:00
2026-04-14 22:36:32 +02:00
2026-05-25 20:20:56 +02:00

MyAnimeList

MyAnimeList logo
My personal anime tracker, built because nothing else felt right.

Go SQLite Tailwind HTMX

I was frustrated with every anime tracker I tried. Decent UI but awkward UX. Good features but missing the ones I actually use. So I built my own: search fast, get context fast, update your status fast, and move on.

This project is personal first — I put it on GitHub because I like shipping in the open. It also doubles as proof that a small, server-rendered Go app can stay reliable even when upstream anime APIs are inconsistent.

  • Catalog browsing & seasonal discovery — explore what's airing, filter by season
  • Quick search — find anime, get mal links, open the detail page in seconds
  • Detail pages — synopsis, stats, recommendations, related entries
  • Watchlist management — track your progress across statuses
  • Continue watching — pick up where you left off
  • In-app playback — proxy-based video player

Technical approach

Written in Go with server-rendered html/template, SQLite + sqlc for typed queries, Tailwind CSS v4 for styling, and HTMX backed by small TypeScript modules for incremental interactions.

The external anime data source is Jikan. The client layer handles request pacing, bounded retries, backoff, stale-cache fallback, and a persisted retry queue. Playback proxying uses uTLS to bypass Cloudflare. The system is built to degrade gracefully under 429 and 5xx responses rather than fail hard.

Repository structure

Path Purpose
api/* Feature routes: anime, auth, playback, watchlist
cmd/server Application entrypoint and CLI commands
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
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.

Description
No description provided
Readme MIT 32 MiB
Languages
Go 72.3%
TypeScript 26.9%
CSS 0.3%
Dockerfile 0.2%
Just 0.2%