Welcome to AnimeTV, a project designed for anime enthusiasts in Taiwan and Hong Kong! This application provides an extensive collection of anime metadata and video streaming capabilities.
- Anime Metadata: Fetches detailed information about various anime from ani.gamer.com.tw.
- Video Streaming: Streams from configurable sources — anime1.me (MP4) and twxgct.com (HLS).
- User-Friendly Interface: Built with Nuxt 4 for a seamless and responsive experience, including light / dark / system themes.
- Browse & Search: Weekday schedule, spotlight, genre themes, filters, pagination, and header search with suggestions.
- Custom Video Player: Theater mode, autoplay next episode, skip OP, playback speed, HLS quality picker, scrub thumbnails, fullscreen, and customizable keyboard shortcuts.
- Watch History: Tracks viewing progress so you can resume where you left off.
- Favorite List: Save favorite anime shows for easy access.
- Offline Downloads: Download episodes for offline viewing (MP4 and HLS), with pause / resume / cancel and a download manager at
/offline-downloads. - PWA: Installable progressive web app with offline fallback when the network is unavailable.
- Friend List: Connect with friends, manage requests, and see live watching status.
- Profile Analytics: Watch time, genre mix, top titles / studios, and an activity heatmap.
- User Settings: Themes, history preferences, data clearing, and shortcut customization.
- AI Assistant: Floating chat helper for anime Q&A, recommendations, history/favorites lookup, and confirmed settings changes (requires privacy consent).
- Admin: Role-gated metadata search and CRUD for administrators.
To get started with AnimeTV, follow these steps:
Make sure you have the following installed:
- Bun (latest stable version)
- Supabase CLI (or use
bunx supabaseas shown below)
-
Clone the repository:
git clone https://github.com/ChocoMeow/AnimeTV.git cd animetv -
Install dependencies:
bun install
-
Import Supabase:
To import your Supabase project using the Supabase CLI, follow these steps:
-
Link your project:
bunx supabase link
-
Import the provided schema into your Supabase database:
psql "postgresql://postgres:[YOUR-PASSWORD]@db.[YOUR-PROJECT-REF].supabase.co:5432/postgres" -f schema.sqlYou can find your database URL in your Supabase project under Settings → Database → Connection string.
-
Update your
.envfile with the necessary credentials:# Supabase (required) NUXT_PUBLIC_SUPABASE_URL=your_supabase_url NUXT_PUBLIC_SUPABASE_KEY=your_supabase_key NUXT_SUPABASE_SECRET_KEY=your_supabase_secret_key # Optional: AI assistant # NUXT_PUBLIC_AI_ENABLED=true # NUXT_AI_API_KEY=your_ai_api_key # NUXT_AI_BASE_URL=https://api.openai.com/v1 # NUXT_AI_MODEL=gpt-4o-mini # NUXT_AI_PROXY_URL=http://127.0.0.1:8080 # Optional: FlareSolverr for Cloudflare (https://github.com/FlareSolverr/FlareSolverr) # NUXT_CF_FETCH_FLARESOLVERR=http://127.0.0.1:8191/v1 # Optional: video proxy (low-RAM-friendly defaults) # NUXT_VIDEO_PROXY_CHUNK=524288 # initial progressive Range size (bytes), default 512 KiB # NUXT_VIDEO_PROXY_MAX_CHUNK=1048576 # max bytes per progressive response, default 1 MiB # NUXT_VIDEO_PROXY_META_CACHE=128 # HEAD metadata cache entries # NUXT_VIDEO_PROXY_TIMEOUT_MS=25000 # upstream fetch timeout # NUXT_VIDEO_PROXY_RETRIES=2 # retry count on transient upstream errors # Optional: server logging # NUXT_LOG_LEVEL=info # NUXT_LOG_MAX_DAYS=30 # NUXT_LOG_TO_FILE=true # Database backup / restore (Postgres connection — not the API service role key) # Prefer the Session pooler URL from Supabase → Connect # SUPABASE_DB_URL=postgresql://postgres.[REF]:[PASSWORD]@aws-0-....pooler.supabase.com:5432/postgres # Or password only (uses a linked project: bunx supabase link) # SUPABASE_DB_PASSWORD=your_db_password # Optional CLI auth (Dashboard → Account → Access Tokens) # SUPABASE_ACCESS_TOKEN=your_personal_access_tokenReplace Supabase values from Supabase → Settings → API. Set
NUXT_PUBLIC_AI_ENABLED=trueto show the AI widget. All app env vars use theNUXT_prefix.
-
-
Run the development server:
bun run dev
Your application will be running at
http://localhost:3000.
Build and run locally with Bun:
bun run build
bun run previewOr run the production Nitro server directly after build:
bun --bun run .output/server/index.mjsDocker (image is also published to GHCR on main / beta):
docker build -t animetv .
docker run --rm -p 3000:3000 --env-file .env -v animetv-logs:/app/logs animetvPass the same NUXT_* variables as in development. Mount /app/logs if you want daily log files persisted (NUXT_LOG_TO_FILE=true).
Logical backups follow the Supabase backup / restore guide: roles.sql, schema.sql, and data.sql in one dated folder.
Requirements
- Docker Desktop running (
supabase db dumpuses a container forpg_dump) SUPABASE_DB_URLorSUPABASE_DB_PASSWORDin.env(see Setup above)- Linked project if using password only:
bunx supabase link - Restore needs
psqlon PATH, or Docker (falls back topostgres:17)
Backup
bun run db:backup
# or a custom folder name:
bun scripts/db-backup.js --out backups/pre-migrateCreates:
backups/YYYY-MM-DD_HH-mm-ss/
roles.sql
schema.sql
data.sql
Restore
bun run db:restore -- backups/YYYY-MM-DD_HH-mm-ss
# skip the confirmation prompt:
bun run db:restore -- backups/YYYY-MM-DD_HH-mm-ss --yesRestore applies SQL against your database and can overwrite existing state. Keep a fresh backup before restoring.
This project is licensed under the GPL 3.0 License. See the LICENSE file for details.
- Nuxt.js for the powerful framework.
- Supabase for the backend database services.
- ani.gamer.com.tw for anime metadata.
- anime1.me for video content.
- twxgct.com for alternate HLS video content.
This project is intended solely for educational and research purposes. It does not engage in web scraping or intellectual copyright infringement. All content is sourced in compliance with the respective terms of service of the providers. Please support the original creators and platforms.
Happy watching! Enjoy exploring AnimeTV!