Private, single-user media tracker for films, series, manga, books, comics, visual novels, games and board games.
- Copy
.env.exampleto.envand fill only the server-side credentials you use. Never put API keys inNEXT_PUBLIC_*variables. - Install dependencies with
pnpm install. - Generate the Prisma client and apply the existing migrations:
pnpm exec prisma generate && pnpm db:migrate. - Seed collections and field groups with
pnpm exec prisma db seed. - Start the app with
pnpm dev.
Open Library is the primary Book/Comic work source and needs no key; set
OPEN_LIBRARY_CONTACT_EMAIL for an identified User-Agent. Hardcover enriches
books when HARDCOVER_API_TOKEN is configured. Both are queried server-side;
book and comic text search is title-only and stores work identities, never ISBN
editions.
IGDB, RAWG, SteamGridDB, Fanart.tv and BoardGameGeek are optional integrations.
BoardGameGeek must stay disabled until its application token is approved.
Google Books is discovery-only and disabled by default: it must use a separate
restricted GOOGLE_BOOKS_API_KEY, never OAuth credentials, and its results may
not be imported directly.
Provider registration: Open Library, Hardcover, IGDB, RAWG, BoardGameGeek, and VNDB.
The application footer attributes enabled data providers. RAWG data requires its active backlink; Google discovery results require their own branding. Provider cover URLs are never hotlinked for saved items: the server validates, downloads and stores an allowed image in Cloudinary. Adding an item without a safe cover is intentionally blocked until one is supplied.
Run the normal checks before handing off changes:
pnpm test
pnpm lint
pnpm build
pnpm exec prisma validate
pnpm exec prisma generate
git diff --checkWith configured credentials, smoke-test Dune (Book), Watchmen (Comic), a
visual novel, The Witcher 3 (base game only), and Gloomhaven (base game
only). Verify that disabling any optional provider still leaves other results
available and that saved posters point to Cloudinary.