AnimeGeek is a streaming platform dedicated to anime with English subtitles. It provides a seamless experience for anime enthusiasts to discover, watch, download, and enjoy their favorite shows.
Developed by Alan Cyril Sunny
If you enjoy this project, please ⭐ star the repository — it really helps!
Live Demo: animegeek.netlify.app
- Extensive Anime Library: Access a vast collection of anime series and movies
- English Subtitles: All content includes English subtitles
- Multi-Provider Support: Choose from 6+ streaming providers with automatic fallback
- Provider Selection: Switch providers on-the-fly from the header dropdown
- Automatic Fallback: If one provider fails, automatically tries others
- Responsive Design: Optimized for desktops, tablets, and mobile devices
- Search Functionality: Discover anime by searching titles
- Multiple Categories: Browse Trending, Popular, and Upcoming anime
- User-Friendly Interface: Clean and intuitive navigation with Chakra UI
- High-Quality Streaming: Fast-loading, high-definition HLS streaming with native browser support
- Episode Management: Easy navigation through anime episodes with seasons support
- Character Information: View character details and roles
- Recommendations: Get anime recommendations based on your interests
- Docker Ready: Full Docker and Docker Compose support for easy deployment
Planned features:
- Dual Audio Support
- User Language Preferences
- Audio/Sub Selection
- Backend/Player Integration
- Testing & Optimization
- React - UI library
- Chakra UI - Component library
- React Router - Routing
- React Responsive Carousel - Carousel component
- HLS.js - HLS video streaming
- Axios - HTTP client
- Docker support included
- Vercel/Netlify ready
This project uses the Consumet API for anime data. The Consumet API is a modern search engine API that scrapes data from various anime providers.
⚠️ Important: Consumet API is no longer publicly available. You need to self-host your own instance or use a public instance. See Self-Hosting Consumet API section below.
Default Base URL: https://consumet-instance.vercel.app/meta/anilist
All endpoints require the provider parameter (default: gogoanime):
- Trending Anime:
/trending?provider=gogoanime - Popular Anime:
/popular?provider=gogoanime&perPage=20 - Upcoming Anime:
/upcoming?provider=gogoanime - Anime Details:
/info/{id}?fetchFiller=true&dub=false&provider=gogoanime - Search:
/search?query={query}&provider=gogoanime - Streaming:
/watch/{episodeId}?provider=gogoanime
The app supports multiple streaming providers with automatic fallback:
- Gogoanime (default) - Most reliable, large library
- Zoro - Good quality, fast loading
- AnimePahe - High quality streams
- Marin - Alternative source
- 9Anime - Backup option
- Crunchyroll - Official (limited availability)
Provider Selection:
- Users can select their preferred provider from the header dropdown
- If the selected provider fails, the app automatically tries other providers
- Provider preference is saved in localStorage
Note: Provider availability depends on the Consumet API instance you're using. Some providers may not be available on all instances.
- Node.js (v18 or higher)
- npm or yarn
-
Clone the repository
git clone https://github.com/dragonpilee/AnimeGeek.git cd AnimeGeek -
Install dependencies
npm install
-
Configure environment variables (optional)
Create a.envfile in the root directory:cp env.example .env
Edit
.envand set your Consumet API instance URL:VITE_API_BASE_URL=https://consumet-instance.vercel.app/meta/anilist VITE_ANIME_PROVIDER=gogoanime
If you're self-hosting Consumet API, set
VITE_API_BASE_URLto your instance URL (e.g.,http://localhost:3000/meta/anilist) -
Start the development server
npm start
-
Open in browser
Visit http://localhost:5173
npm run buildThe build artifacts will be stored in the dist/ directory.
npm run preview-
Configure environment variables (optional)
Create a
.envfile or set environment variables:VITE_API_BASE_URL=https://consumet-instance.vercel.app/meta/anilist VITE_ANIME_PROVIDER=gogoanime PORT=3000
-
Build and run
docker-compose up -d
The application will be available at
http://localhost:3000 -
Optional: Self-host Consumet API with Docker Compose
Uncomment the
consumet-apiservice indocker-compose.ymland updateVITE_API_BASE_URLtohttp://consumet-api:3000/meta/anilist:consumet-api: image: riimuru/consumet-api:latest container_name: consumet-api ports: - "3001:3000" restart: unless-stopped environment: - NODE_ENV=PROD
Build with environment variables:
docker build \
--build-arg VITE_API_BASE_URL=https://consumet-instance.vercel.app/meta/anilist \
--build-arg VITE_ANIME_PROVIDER=gogoanime \
-t animegeek .Run the container:
docker run -p 3000:80 animegeekSince Consumet API is no longer publicly available, you have several options:
docker pull riimuru/consumet-api
docker run -d -p 3000:3000 -e NODE_ENV=PROD --name consumet-api riimuru/consumet-apiThen set VITE_API_BASE_URL=http://localhost:3000/meta/anilist in your .env file.
Follow the Consumet API installation guide to deploy your own instance.
git clone https://github.com/consumet/api.consumet.org.git
cd api.consumet.org
npm install
npm startThe API will be available at http://localhost:3000. Update your .env file accordingly.
The docker-compose.yml file includes an optional Consumet API service. Uncomment it to run both services together.
AnimeGeek/
├── public/ # Static assets
├── src/
│ ├── assets/ # Images and icons
│ ├── components/ # React components
│ │ ├── detail-anime/ # Anime detail components
│ │ ├── global/ # Reusable global components
│ │ └── home/ # Home page components
│ ├── constants/ # Constants and configuration
│ ├── helpers/ # Utility functions (videoHLS, formatWord)
│ ├── hooks/ # Custom React hooks (useProvider, useFetchData)
│ ├── pages/ # Page components
│ ├── style/ # CSS files
│ ├── utils/ # Utility functions (providerHelper)
│ └── theme.js # Chakra UI theme
├── Dockerfile # Docker configuration
├── docker-compose.yml # Docker Compose configuration
├── env.example # Environment variables example
├── vercel.json # Vercel deployment config
└── vite.config.js # Vite configuration
npm start- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
Contributions are welcome!
Feel free to fork the repo, submit pull requests, or open issues.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
| Variable | Description | Default |
|---|---|---|
VITE_API_BASE_URL |
Consumet API base URL | https://consumet-instance.vercel.app/meta/anilist |
VITE_ANIME_PROVIDER |
Anime provider (gogoanime, zoro, etc.) | gogoanime |
PORT |
Docker container port | 3000 |
Create a .env file in the root directory to override defaults. See env.example for reference.
- No sensitive data is stored in the repository
- All API calls are made from the client-side
- Environment variables are properly ignored (see
.gitignore) - XSS protection: Be cautious with
dangerouslySetInnerHTMLusage in description rendering - Docker images use multi-stage builds for smaller production images
- Nginx configuration includes security headers
This project is licensed under the MIT License.
- Consumet API for providing anime data
- AniList for anime metadata
- All the open-source libraries and tools used in this project
This project is for educational purposes only. Please respect copyright laws and the terms of service of the APIs used.