Initial TopDeck: self-hosted ranked favorites

A single Go binary with SQLite that serves a public page of the owner's
ranked lists (movies, TV, albums, songs, video games, theater) and a
login-gated editor.

- Lists of 1–65,535 entries (100 recommended), several per category
- Search-to-add via TMDB, TheTVDB, IGDB, Deezer/MusicBrainz, Wikipedia;
  manual entry as a fallback
- Theater entries carry a production (Broadway, tour, …), venue and cast
- Artwork cached locally; URL override and uploads
- Drag, arrow and type-a-rank reordering; paginated for long lists
- 12 theme presets plus custom CSS
- First-run setup code or env-provided admin; bcrypt, rate-limited login,
  CSRF-guarded JSON API
- Dockerfile and docker-compose.yml

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Opus 5.5 committed 2026-09-24 16:54:19 -07:00
commit e9a75a968a
53 files changed
+7078

No files matched your search

+18
View File
@@ -0,0 +1,18 @@
{{define "bodyclass"}}page-admin{{end}}
{{define "content"}}
<div class="container admin">
<header class="admin-head">
<div>
<h1>Your lists</h1>
<p class="muted">Drag to set the order they appear on your page.</p>
</div>
<div class="admin-head-actions">
<a class="btn btn--ghost" href="/">{{icon "external"}}View site</a>
<button class="btn btn--primary" type="button" data-action="new-list">{{icon "plus"}}New list</button>
</div>
</header>
<div id="lists" class="admin-lists" aria-live="polite"></div>
</div>
<script type="application/json" id="boot">{{.Data.Boot}}</script>
{{end}}
{{define "scripts"}}<script type="module" src="/static/js/admin-lists.js?v={{.AssetVer}}"></script>{{end}}