A modern, feature-rich anime streaming platform built with React, TypeScript, and Supabase.
- Anime Streaming - Watch anime with HLS video player and AniSkip integration
- Search & Discovery - Advanced search with genre filtering
- Trending Section - Random episode previews with HLS streaming
- Continue Watching - Track your progress across devices
- Watchlist & Favorites - Save and organize your anime
- Comments & Ratings - Engage with the community
- Authentication - Secure sign up/sign in with Supabase Auth
- User Profiles - Customizable profiles with avatars
- Watch History - Track and resume your viewing progress
- Multiple Themes - 7 unique themes (Neon, Sunset, Ocean, etc.)
- User Management - Ban/unban users, promote to admin
- Maintenance Mode - System-wide maintenance with admin bypass
- Admin Messaging - Broadcast or individual messages to users
- Analytics Dashboard - View user activity and stats
- Comment Moderation - Delete inappropriate comments
- Responsive Design - Desktop, tablet, and mobile optimized
- Smart TV Support - Optimized for LG webOS, Samsung Tizen, Android TV
- Beautiful UI - Glassmorphic design with smooth animations
- Theme System - Dynamic theme switching with unique color schemes
- React 18 - UI library
- TypeScript - Type safety
- Vite - Build tool and dev server
- Tailwind CSS - Utility-first CSS
- shadcn/ui - UI component library
- Framer Motion - Animation library
- React Query - Server state management
- React Router - Client-side routing
- Supabase - Backend as a Service
- PostgreSQL database
- Authentication
- Row Level Security (RLS)
- Real-time subscriptions
- HLS.js - HTTP Live Streaming playback
- AniSkip API - Skip intro/outro timestamps
- Consumet API - Anime metadata and streaming links
- Node.js 18+ and npm/bun
- Supabase account
- Clone the repository
git clone https://github.com/Snozxyx/anime-haven.git
cd anime-haven- Install dependencies
npm install
# or
bun install- Environment Setup
Create a .env file in the root directory:
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
DATABASE_URL=your_database_url- Database Setup
Run the migrations in your Supabase SQL Editor:
# Run migrations in order:
# 1. supabase/migrations/20251231031018_remix_migration_from_pg_dump.sql
# 2. supabase/migrations/20250102000001_add_views_system.sql
# 3. supabase/migrations/20250115000001_add_views_system.sql
# 4. supabase/migrations/20250116000001_add_auth_trigger.sql
# 5. supabase/migrations/20260102000002_add_admin_features.sql- Start Development Server
npm run dev
# or
bun devVisit http://localhost:5173
profiles- User profiles with admin/ban statuswatch_history- Continue watching progresswatchlist- User's saved animecomments- User comments on animeratings- User ratings for animeviews- Anime view trackingmaintenance_mode- System maintenance statusadmin_messages- Admin notification system
To make a user an admin, run this SQL in Supabase:
UPDATE public.profiles
SET is_admin = true
WHERE user_id IN (
SELECT id FROM auth.users WHERE email = 'admin@example.com'
);- Sunset (Default) - Warm orange and pink gradients
- Neon - Vibrant purple and blue neon
- Ocean - Cool blue and teal tones
- Forest - Natural green shades
- Rose - Elegant pink and rose
- Midnight - Deep purple and blue
- Brutalism Dark - High-contrast minimalist
- Row Level Security (RLS) policies
- Secure authentication via Supabase
- Admin-only routes and operations
- Banned user flow with restricted access
- CORS protection
- SQL injection prevention
- Mobile: < 768px
- Tablet: 768px - 1024px
- Desktop: > 1024px
- Smart TV: Detected automatically
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
- Consumet API - Anime data provider
- AniSkip API - Skip timestamps
- shadcn/ui - UI components
- Supabase - Backend infrastructure
For questions or support, please open an issue on GitHub.
Built with β€οΈ by Snozxyx