Skip to content

Repository files navigation

AnimeTV

AnimeTV Logo

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.

Features

  • 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.

Screenshot

screenshot

Getting Started

To get started with AnimeTV, follow these steps:

Prerequisites

Make sure you have the following installed:

  • Bun (latest stable version)
  • Supabase CLI (or use bunx supabase as shown below)

Setup

  1. Clone the repository:

    git clone https://github.com/ChocoMeow/AnimeTV.git
    cd animetv
  2. Install dependencies:

    bun install
  3. 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.sql

      You can find your database URL in your Supabase project under Settings → Database → Connection string.

    • Update your .env file 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_token
      

      Replace Supabase values from Supabase → Settings → API. Set NUXT_PUBLIC_AI_ENABLED=true to show the AI widget. All app env vars use the NUXT_ prefix.

  4. Run the development server:

    bun run dev

    Your application will be running at http://localhost:3000.

Production

Build and run locally with Bun:

bun run build
bun run preview

Or run the production Nitro server directly after build:

bun --bun run .output/server/index.mjs

Docker (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 animetv

Pass the same NUXT_* variables as in development. Mount /app/logs if you want daily log files persisted (NUXT_LOG_TO_FILE=true).

Database backup & restore

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 dump uses a container for pg_dump)
  • SUPABASE_DB_URL or SUPABASE_DB_PASSWORD in .env (see Setup above)
  • Linked project if using password only: bunx supabase link
  • Restore needs psql on PATH, or Docker (falls back to postgres:17)

Backup

bun run db:backup
# or a custom folder name:
bun scripts/db-backup.js --out backups/pre-migrate

Creates:

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 --yes

Restore applies SQL against your database and can overwrite existing state. Keep a fresh backup before restoring.

License

This project is licensed under the GPL 3.0 License. See the LICENSE file for details.

Acknowledgments

Disclaimer

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!

About

AnimeTV is a Nuxt.js web app for anime fans in Taiwan and Hong Kong, featuring anime metadata, video streaming, watch history, and favorite lists.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Sponsor this project

Packages

Contributors

Languages