Senkai Sora is a modern, responsive multilingual anime streaming frontend built with Next.js, React, and Video.js 10. It enables seamless discovery and playback of anime in multiple regional languages (Japanese, English, Hindi, Tamil, Telugu, Malayalam, and Bangla) with real-time multi-audio track switching, intro/outro auto-skipping, dynamic stream proxying, and an ad-free glassmorphic user interface.
- Screenshots & Previews
- Features
- Architecture Overview
- Getting Started
- Environment Variables
- Video Player Integration
- Project Structure
- Deployment
- License
| Mobile Home | Anime Details & Seasons | Streaming Player |
|---|---|---|
![]() |
![]() |
![]() |
- π Multilingual Audio Switching: Switch seamlessly between Japanese (Original), English, Hindi, Tamil, and Telugu audio tracks in real time within HLS streams.
- β© Smart Intro & Outro Skipping: Automatically detects episode opening and ending ranges and provides instant one-click skip overlays.
- π‘οΈ Dynamic HLS & MP4 Proxying: Intercepts and proxies video streams through dedicated reverse-proxy servers to bypass IP-bound tokens, CORS restrictions, and hotlink protections.
- π¨ Cinematic Glassmorphism: Custom dark-themed UI featuring responsive carousels, backdrop spotlight previews, and fluid animations.
- π± Fully Responsive & Touch-Native: Tailored for mobile, tablet, and desktop viewing with picture-in-picture (PiP) and Google Cast support.
- π Instant Autocomplete Search: Real-time typeahead suggestions and comprehensive multi-criteria filtering (AβZ, Genres, Types).
flowchart LR
User[Client Browser] -->|Next.js 16 App| Frontend[Senkai Sora Frontend]
Frontend -->|Metadata & Server List| API[Senkai Sora API\nsenkaisoraapi.vercel.app]
Frontend -->|HLS Playlists & Segments| Proxy[Abyss Stream Proxy\nRailway Container]
API -->|Scrapes Dub Player| AW[WatchAnimeWorld]
Proxy -->|Spoofed Referer & Chunks| CDN[Ravok / as-cdn / Abyss CDN]
- Frontend (
/frontend): Next.js 16 app rendering client-side Video.js 10 / Hls.js players and catalog views. - API (
/api): Express.js backend scraping catalog metadata, multi-season structures, and dub server identifiers (Senkai-Sora-Api Repository). - Stream Proxy (
/proxy): Railway Docker container handling AES-256 decryption, HLS manifest rewriting, and chunk buffering.
Important
Step 1: Deploy the Backend API First!
Before setting up and launching the frontend, you must first deploy the backend API from the Senkai-Sora-Api repository (e.g. on Vercel). Once deployed, copy your API URL and set it as api_base_url / NEXT_PUBLIC_API_URL in your .env configuration file.
- Node.js v18.18.0 or later
- npm, yarn, or pnpm
- Deployed API instance from Senkai-Sora-Api
# Clone the repository
git clone https://github.com/NicoLoop/Senkai-Sora.git
cd Senkai-Sora
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 in your browser.
Create .env or .env.local in the frontend/ root directory. Replace the API URLs with your deployed Senkai-Sora-Api endpoint:
# AnimeStream Backend API Base URL (Replace with your deployed API URL)
api_base_url=https://senkaisoraapi.vercel.app/
API_BASE_URL=https://senkaisoraapi.vercel.app/
NEXT_PUBLIC_API_URL=https://senkaisoraapi.vercel.app/
NEXT_PUBLIC_API_BASE_URL=https://senkaisoraapi.vercel.app/
# Abyss Stream Proxy Railway URL & 32-bit Auth Token
abyss_proxy_url=https://abyss-proxies-production.up.railway.app/
NEXT_PUBLIC_ABYSS_PROXY_URL=https://abyss-proxies-production.up.railway.app/
ABYSS_AUTH_TOKEN=9c86dda4c5a4f2a5a30823e6d4dc7ce0
NEXT_PUBLIC_ABYSS_AUTH_TOKEN=9c86dda4c5a4f2a5a30823e6d4dc7ce0The frontend utilizes a custom AnimeVideoPlayer component built on Video.js 10 and Hls.js with native audio track switching and intro/outro markers:
import { AnimeVideoPlayer } from "@/components/AnimeVideoPlayer";
<AnimeVideoPlayer
title="Jujutsu Kaisen"
episodeTitle="Ryomen Sukuna"
seasonNumber={1}
episodeNumber={1}
serverName="sora"
qualities={[
{ label: "1080p (Sora)", url: streamProxyUrl },
{ label: "Auto", url: streamProxyUrl },
]}
currentQuality="1080p (Sora)"
onQualityChange={(newQuality) => setCurrentQuality(newQuality)}
intro={{ start: 55, end: 144, enabled: true }}
subtitles={subtitlesList}
autoSkipIntro={true}
/>frontend/
βββ public/ # Static assets, hero backdrops, and branding
βββ src/
β βββ app/ # Next.js App Router pages and layouts
β β βββ [...id]/ # Dynamic route for anime series and episode playback
β β βββ watch/[...id]/ # Dedicated watch router
β β βββ search/ # Search page with autocomplete
β β βββ az-list/ # AβZ directory
β β βββ genre/ # Genre filter catalog
β β βββ movies/ # Standalone movies
β βββ components/ # Reusable UI & Video Player components
β β βββ AnimeVideoPlayer.tsx # Core Video.js 10 + Hls.js player
β β βββ Navbar.tsx # Glassmorphic top navigation bar
β β βββ SidebarRail.tsx # Minimal side menu
β β βββ SpotlightHero.tsx # Cinematic banner carousel
β βββ data/ # Type definitions and static anime data
β βββ services/ # Backend API integration client (api.ts)
β βββ utils/ # Cookie storage and watch progress trackers
βββ .env.example # Environment configuration template
βββ package.json
βββ tsconfig.json
The frontend is optimized for deployment on Vercel:
- Deploy API First: Ensure you have deployed your backend instance from Senkai-Sora-Api.
- Push your frontend code to GitHub.
- Import the project into the Vercel Dashboard.
- Set the Root Directory to
frontend. - Configure environment variables (
NEXT_PUBLIC_API_URLset to your deployed API URL,NEXT_PUBLIC_ABYSS_PROXY_URL,NEXT_PUBLIC_ABYSS_AUTH_TOKEN). - Deploy.
This project is licensed under the MIT License β see the LICENSE file for details. Built purely for educational, non-commercial streaming research.



