MeatFlicks is a SvelteKit 2 (Svelte 5 runes) web application for exploring and streaming movies and TV series. It stores a curated library in a local SQLite database with FTS5 full-text search, augments records with TMDB metadata, resolves playable sources from multiple third-party streaming providers, and lets authenticated users maintain a personal watchlist.
- Server-rendered Svelte 5 experience with Tailwind CSS v4 styling and responsive design.
- Library ingestion backed by SQLite + TMDB enrichment (cast, trailers, artwork).
- Streaming resolver that queries Vidlink, Vidsrc, TwoEmbed, and EmbedSu, with provider prioritisation and diagnostics.
- Authentication with GitHub and Google OAuth via Lucia and JWT sessions.
- Personal watchlist controls persisted alongside the catalog in SQLite and exposed through
/api/watchlist. - Global search endpoint (
/api/search) with debounced UI, category/collection browsing, and light/dark theme toggle.
- SvelteKit 2 / Svelte 5 runes mode / TypeScript (strict)
- Tailwind CSS v4 with utility-first design
- Bun for runtime, dependency management, and scripts
- SQLite (better-sqlite3) with FTS5 full-text search
- Lucia for authentication with OAuth flows
- Zod validation for configuration, Lucide icons, Ofetch for outbound requests, Vitest/Playwright for testing
- Bun >= 1.1.0 (installs dependencies and runs scripts)
- Node.js >= 18 (Bun still relies on system Node toolchain for some utilities)
- TMDB API key
- OAuth credentials for GitHub (required) and optionally Google
- Secrets store or
.envfile containing the configuration below (never commit production secrets)
-
Install dependencies:
bun install
-
Create a
.envfile (or configure your secrets manager) using the variables listed below. -
Start the development server:
bun dev
The app will be available on the host/port reported by Vite (default
http://localhost:5173). The SQLite database file is created automatically on first run (defaults todata/meatflicks.db; override withSQLITE_DB_PATHif desired).
| Command | Description |
|---|---|
bun dev |
Start the SvelteKit development server. |
bun run build |
Create a production build. |
bun preview |
Preview the production build locally. |
bun run lint |
Run Prettier check and ESLint. |
bun run check |
Run SvelteKit sync and type-checking (svelte-check + TypeScript). |
bun test |
Execute Vitest unit tests (--run configured in package). |
- Run
bun testfor unit tests (Vitest + Svelte testing utilities). - Use
bun run checkto keep TypeScript and Svelte types in sync. - Use
bun run lintbefore commits to enforce ESLint and Prettier formatting. - Playwright is available for browser automation; run
npx playwright installbefore adding E2E specs.
Streaming resolution calls multiple unofficial providers (Vidlink, Vidsrc, TwoEmbed, EmbedSu) in priority order, returning the first successful source along with diagnostics for all providers. These providers are intended for educational or testing use. Review their terms of service and comply with local laws before deploying publicly.
This project is distributed under the MIT License.