A self-hosted personal tier list aggregator. No more (semi-)walled gardens (co-)owning your reviews! Replace scattered tools like Goodreads, IMDB, BoardGameGeek, Untappd, and others with a single app you own and run yourself.
Take it for an adhoc test drive by running:
docker run -p 3000:3000 tierdom/tierdom-appRead docs/hosting.md for additional details on running Tierdom yourself.
- 🤖 This project has been created relying heavily on GenAI - but is signed off on and owned by humans. To each their own judgement call if they then want to use this project.
- ✨ The project is still in alpha phase. Consider it a preview version, and let me know what you think! Using it for production is possible, at your own risk. Backup your data often.
Tierdom App has two sides:
- Public site — A read-only view for anyone to browse your tier lists, organized by topic (Games, Books, Movies, Board Games, etc.). Each section shows items you've consumed or experienced, ranked in tiers. Also includes a home page and about page managed via a lightweight built-in CMS.
- Admin back-office — A private, authenticated interface for adding and editing entries, managing sections, and updating CMS content.
The entire app ships as a single Docker image. The database is a SQLite file mounted as a volume, so it lives outside the container and can be backed up independently.
- Public tier list website
- Categories 100% of your own choosing (Books, Movies, TV Series, Video Games, Board Games, Applications, Recipes, Albums or Artists, Restaurants, Hiking Areas, Beers, Wines ... you name it!) with each their own tier list;
- Each category ranks items in tiers based on their 0-100 scores, in a visually appealing way;
- Each item can get a thumbnail image, a full review in markdown, and custom properties;
- Create deep-links to individual images (e.g. to share a reviewed item online);
- Customizable Home and About pages, Footer, etc.
- Admin interface
- Securely log in to manage everything;
- Update CMS values to your liking;
- Manage Categories and Tier List Items with an easy CRUD interface;
- Import your data from various sources (Goodreads, IMDB, BoardGameGeek, etc. - or just generic JSON import);
- Export your data in various formats (SQLite, Markdown Files, JSON);
- Host and own everything yourself
- Host online on a tiny VPS or anything that can run Docker - or even a home PC or Raspberry;
- Backup through a simple data volume copy;
For open roadmap items and known issues, see TODO.md.
| Layer | Choice |
|---|---|
| Framework | SvelteKit + Svelte (TypeScript) |
| Database | SQLite via Drizzle ORM (better-sqlite3) |
| Styling | Tailwind CSS |
| Testing | Vitest + Playwright |
| Runtime | Node.js 24 LTS (Alpine) |
| Deployment | Single Docker image |
Architectural decisions are documented as ADRs in docs/decisions/. All are Accepted unless noted.
| ADR | Title |
|---|---|
| 0001 | Use Architecture Decision Records |
| 0002 | System Architecture |
| 0003 | Tooling and Developer Experience |
| 0004 | Domain Model |
| 0005 | Frontend Styling |
| 0006 | Admin Interface |
| 0007 | Markdown Rendering |
| 0008 | Use lucide-svelte for Icons |
| 0009 | Add created_at and updated_at Timestamps |
| 0010 | Authentication and Authorization |
| 0011 | Image Support for Tier List Items |
| 0012 | Docker Packaging and Publishing |
| 0013 | UUID Primary Keys |
| 0014 | End-to-End Testing Strategy |
| 0015 | Unit Testing Strategy |
| 0016 | Accessibility and Semantic HTML |
| 0017 | Replace Tags with Item Props |
| 0018 | Category Prop Keys |
| 0019 | Prop Keys with Icon Set Support |
| 0020 | Customizable Site Content via Generalized CMS |
| 0021 | Admin Confirmation Dialog |
| 0022 | Soft Delete and Trash |
| 0023 | Export Tooling — Streaming ZIP (fflate) |
| 0024 | Import Tooling Architecture |
| 0025 | Card-face Properties on Tier List Items |
| 0026 | Importer Options Framework + IMDb CSV |
| Document | Description |
|---|---|
| docs/domain.md | Core domain model — entities, tiers, scoring |
| docs/hosting.md | How to run and host the application with Docker |
| CONTRIBUTING.md | How to contribute, including AI-usage policy |
| SECURITY.md | Reporting security issues |
| CODE_OF_CONDUCT.md | Community standards |
| CLAUDE.md | AI assistant instructions for this repo |