Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Public preview. This repository is a showcase of a private, self-hosted project — it contains only the README, screenshots, and dependency manifests, not the source. The screenshots are from a real running instance seeded with a sample library.

Trackit

Your movies, shows, anime, audiobooks and games — in one private library that's yours to keep, and yours to share on your own terms.

Trackit is a self-hosted tracker for the five things you actually watch, read and play. It's private by default: nobody sees your library, there's no feed, no algorithm, and no ads. When you do want to share — your ranked top ten, a weekend watchlist for a friend — you share one list with one link. Your friend clicks it. No account, no login, no app to install.

The Trackit library: a dark, poster-forward grid of tracked movies, TV shows, anime, audiobooks and games, with type and status labels on each card


Why it exists

Every mainstream tracker asks you to give something up. Letterboxd is beautiful but films-only. Trakt does everything, then puts list sharing behind a subscription that doubled in price. IMDb makes a list all-public or all-private with nothing in between. And all of them turn your taste into someone else's ad inventory or someone else's argument.

Trackit is the opposite bet. One small program you run yourself, holding one thing the big services won't give you together: a library that's genuinely private, that you can share one piece of at a time, across everything you watch and play.

  • It's yours. The data lives in a single SQLite file on your own server. No vendor can paywall it, mine it, or change the deal.
  • Private really means private. Sharing is an explicit, revocable act — never a default, never a public pile-on.
  • No feed, no ads, no limits. There's no "For You", no engagement bait, and no cap on how much you can track.
  • You can always leave. One click exports your whole library, lists, ratings and diary as JSON. Import from Letterboxd, Trakt or IMDb on the way in.

What it feels like to use

Keep watching, without the guesswork

Pick up the show you started last night. Trackit tracks your progress episode by episode and knows what's next — one tap on "Mark S2 E5 watched" moves you forward. One clear status per title (want · watching · seen · dropped), never Letterboxd's confusing "watched vs logged" split. Rate it, log the date, see where it's streaming in your region.

The Bear title page showing a 12 of 46 episodes progress bar, a "Mark S2 E5 watched" next-episode button, a Watching status control, a 1–10 rating row, and where-to-watch for Denmark

Rank the ones you love

Turn any list into a ranked one and it grows big, confident position numbers. Can't decide between #3 and #4? Rank by duels shows you two titles at a time and builds the order from your gut calls. Lists can have collaborators, too — invite a friend to edit, or just to look.

A ranked list titled "My top films" with large numbered positions 1 through 8, each row showing a poster, title and reorder controls, plus a "Rank by duels" button and a collaborators section

Lists that build themselves

Save a filter over your library as a Smart List — "everything I dropped", "unrated anime I want to watch", "horror movies I rated 8+". It stays live: as your library changes, the smart list re-matches. Turn one into an ordinary list any time ("Create list" — shareable and rankable), and if you keep it linked, one tap refreshes it in place to pull in newly-matching titles without re-sharing — the same link and followers carry over. It's all private and owner-only; nothing auto-publishes.

The library showing an active Smart List: a "Smart list" switcher set to "Sci-fi favourites" with Create list / Edit / Delete / Back to Library actions, a "9 titles" count, and a poster grid of science-fiction films (Interstellar, Inception, The Matrix, Dune, The Martian, Arrival…)

Share a list with one link — no login for them

This is the part the other apps won't do. Flip a list to shareable and you get one unguessable link. Send it. Whoever opens it sees a clean, read-only page — posters, your ranking, nothing else. No account. No sign-in. No tracking. Change your mind and revoke it, and the link goes dead instantly.

A public shared list, viewed logged-out: "My top films" as a ranked poster grid numbered 1–8, footer reading "Shared privately" with a subscribe link and the TMDB attribution

(The public page carries no third-party scripts, tells search engines not to index it, and proxies every poster through your own server — so opening a shared link leaks nothing about the viewer.)

Adding something takes one gesture

Press / anywhere to jump to search. Type a few letters and results stream in across every source at once — movies and TV, anime, audiobooks, games. Each result carries the four status pills — Want · Watching · Seen · Dropped (and the right words per type, so a game reads Want to play · Playing · Completed). Tap one and it's in your library, already in that state — no "add, then go and edit". That's the whole loop.

The add screen with "dune" typed into the search box, showing results across movies, anime and games, each with a row of status pills (Want / Watching / Seen / Dropped) and a keyboard-shortcut hint

A diary of what you watched, and when

Every watch and rewatch lands in a dated timeline with your rating and a note. It's a record for you — quiet, personal, and never broadcast anywhere.

A watch diary grouped by date, with entries for Everything Everywhere All at Once, Past Lives, Dune: Part Two and Shōgun, each showing a rating and a short personal note

Your year, in numbers you'll actually want to look at

Stats show the shape of your year — what you finished, what's still on the shelf, how you rate things. The Year in Review wrap-up counts your finishes by type, finds your busiest month, surfaces your highest-rated titles and even estimates your audiobook hours.

A stats page showing "You finished 19 titles in 2026", a breakdown by type, a rating-distribution chart, and a row of recently finished posters

A cross-media Year in Review: "19 titles finished", colored bars per media type, a monthly listening/watching rhythm chart, and a highest-rated poster row

Made for the couch and the commute

On a phone the layout collapses to a thumb-friendly bottom bar — Library, Lists, a big Add button, Diary, Stats — so tracking something from bed or the bus is a one-hander. It also installs as an app and keeps a light offline shell.

Trackit on a phone: the library grid with a bottom navigation bar showing Library, Lists, a central Add button, Diary and Stats


What you can track

Five media types, each done properly rather than crammed into a generic "media" box:

Type Source Status words
Movies TMDB want · watching · seen · dropped
TV TMDB, with episode-by-episode progress want · watching · seen · dropped
Anime AniList (romaji/English titles, absolute episode numbering) want · watching · seen · dropped
Audiobooks Open Library, enriched with narrator/runtime/publisher want · watching · seen · dropped
Games IGDB want to play · playing · completed · dropped

The whole app is bilingual (English / Danish), keyboard-friendly, and honors prefers-reduced-motion.


Private by design

Trackit treats your library like your diary, not your billboard.

  • Nothing is public unless you make it so. No lists, ratings or notes leave your server until you deliberately share.
  • Shares are capability links. A share link is like a password: only the link's holder can open it, only the token's hash is stored, and you can revoke or rotate it at any time.
  • Opt-in profile. You can claim a public handle and choose specific lists to show there — everything else stays invisible.
  • Passwordless sign-in. Access to your own library is protected by passkeys (via Pocket ID) at the edge; there's no password to leak.
  • Real ownership. Full JSON export whenever you want, and CSV import from the services you're leaving behind.

The full reasoning lives in docs/why.md and the auth/sharing threat model in docs/security.md.


Run it yourself

Trackit is one Rust binary. It serves the API, the web app, and the public share pages, and stores everything in a single SQLite file. It's designed to sit behind Caddy on a home server via Docker Compose, with passkey login (Pocket ID + oauth2-proxy) and a nightly local backup (with Litestream offsite replication configured for when you point it at a bucket).

nix develop            # the build/test toolchain (Rust, Node, sqlx, Litestream, Caddy…)
cp .env.example .env   # add a free TMDB token (+ optional IGDB creds), generate the secrets
just up                # bring the whole stack up (needs Docker Desktop, which is not in Nix)

You provide a free non-commercial TMDB API token; anime (AniList) and audiobooks (Open Library) need no key, and games (IGDB) are optional. See deploy/DEPLOY.md for the full build/backup/verify runbook and deploy/AUTH.md for wiring up passkeys.


Under the hood (for developers)

One Rust (axum) binary serves a SvelteKit (Svelte 5) frontend built with adapter-static, plus server-rendered public share pages, over SQLite (WAL). Auth is passwordless at the edge (Pocket ID passkeys → oauth2-proxy → Caddy forward_auth); backups run via Litestream. Provider metadata comes from TMDB, AniList, Open Library and IGDB — always fetched server-side, and never fed into any AI/ML path (a TMDB terms requirement).

nix develop        # enter the dev shell (never use brew — tools come from Nix)
just dev           # backend + frontend in watch mode
just check         # fmt + clippy + tests + svelte-check (mirrors CI)
just e2e           # Playwright browser tests in headless Chromium
just build         # build the frontend, then the release binary

Deeper docs:

  • docs/why.md — why this project exists and why these choices.
  • docs/architecture.md — how it fits together.
  • docs/design.md — the cinematic, poster-forward design direction.
  • docs/security.md — the auth boundary, sharing and compliance rules.
  • docs/competitor-insights.md — what we borrow and design out.
  • CHANGELOG.md — everything that has shipped, newest first.
  • v3.md — the forward roadmap (things here are planned, not built).

The screenshots above were captured from a real running instance seeded with a sample library. The in-app wordmark reads "My Top" — the project's working repo name is my-top-tv-movies.


Attribution

This product uses the TMDB API but is not endorsed, certified, or otherwise approved by TMDB. Streaming-availability data is provided by JustWatch. Game metadata and box art come from IGDB. Anime data comes from AniList; audiobook data from Open Library.

License

TBD.

About

Public preview of Trackit — a private, self-hosted cross-media tracker (movies · TV · anime · audiobooks · games). README + screenshots + dependency manifests.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors