Skip to content
code9xrs-hubPublic

About

Next-Gen anime & movie streaming platform built with React 19, TypeScript, Vite, Tailwind CSS, AniList GraphQL v2 & Mirror-Box API.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

Repository files navigation

🎬 Animora — Next-Gen Anime & Movie Streaming Platform

A blazing-fast, cinema-grade anime streaming web application & Progressive Web App (PWA).
Powered by React 19, Vite 6, Tailwind CSS v4, AniList GraphQL v2, and real-time multi-server streaming.

License: MIT React TypeScript Vite Tailwind CSS PWA Ready Firebase Hosting AniList API


🌐 Live Demo Website • 📦 GitHub Repository • 🐛 Report an Issue


🌟 What is Animora?

Animora is an ultra-modern, high-performance anime streaming single-page application and installable Progressive Web App (PWA) engineered with a cinema-grade dark aesthetic inspired by Crunchyroll.

It combines the vast catalog of AniList GraphQL v2 with high-speed multi-server streaming (Mirror-Box API + Megaplay SUB/DUB), driven by a 100% Real-Time AniList-to-TMDb Crosswalk Engine that requires zero static mapping databases or bundle bloat.

⚡ Highlights at a Glance

  • 📱 Progressive Web App (PWA): 1-click installable app on iOS Safari, Android Chrome, and Desktop Chrome/Edge with standalone window experience and offline fallback.
  • 👆 Real-Time Touch-Scroll Hero Slider: 1:1 finger tracking, smooth rubber-band dragging, centered navigation controls, and full unclipped title presentation.
  • 🚀 Extreme Bundle Optimization: Route-level code splitting dropping initial JS load to just ~69 KB (84% reduction!) and sub-second builds (~550ms).
  • ⚡ Zero-Latency Native 60/120Hz Scrolling: Clean GPU-accelerated scrolling with zero input lag.
  • 🎬 Multi-Server Cinema Theater: 3 dedicated servers (HD-1 Multi-Mirror, SUB, DUB) with 1-click landscape rotation lock and feature-policy iframe controls.
  • 🔄 Real-Time Dynamic Crosswalk: Translates AniList IDs to TMDb/IMDb on the fly via api.ani.zip and arm.haglund.dev with <0.01ms in-memory session caching.
  • 🎯 Smart Auto-Resume & Watch History: Season-aware resume indicators, progress tracking, and guest-friendly localStorage sync.

📑 Table of Contents


✨ Key Features

1. 📱 Installable Progressive Web App (PWA)

  • Standalone Mobile & Desktop App: Runs in its own distraction-free app window with native status-bar theming and taskbar integration.
  • Smart Install Trigger: Dynamic "Install App" action integrated right into the top navigation bar (desktop) and mobile drawer menu.
  • Dedicated iOS Safari Guide: Interactive modal offering visual step-by-step guidance for adding Animora to the home screen on iPhone and iPad.
  • Offline Reliability: Service worker caching ensures high-speed cold starts and seamless loading even over unstable cellular networks.

2. 🎠 Real-Time Touch-Scroll Hero Slider

  • 1:1 Native Finger Dragging: Touch-gesture tracker (onTouchStart, onTouchMove, onTouchEnd) allows users to smoothly swipe back and forth between spotlight banners with real-time feedback and rubber-band elasticity.
  • Responsive Aspect Ratio: Proportional auto-resizing across all devices (aspect-[16/10] on mobile up to 600px on ultra-wide desktop) showing 100% of the anime art without awkward crops.
  • Full Anime Titles: Non-truncated, multi-line titles allow users to read long anime names effortlessly.
  • De-cluttered Interface: Centered tactile navigation arrows with subtle hover lifts; removed cluttered slide counts and mobile dots for an unobstructed visual experience.
  • Optimized Timer Loop: Pure CSS keyframes eliminate interval-driven layout thrashing.

3. ⚡ Sub-Second Performance & Code Splitting

  • ~69 KB Initial Bundle: Using React.lazy() and Suspense, only the active route's JavaScript is loaded upfront.
  • Zero Input Lag: Removed third-party scroll hijackers in favor of native GPU 60/120Hz hardware acceleration.
  • Zero Layout Shift (CLS < 0.01): Content-aware skeleton shimmer system maintains exact component dimensions before data arrives.

4. 🎭 Multi-Server Cinema Theater with Orientation Lock

  • Server 1 — HD-1 (Multi) (Mirror-Box API): Multi-source adaptive player featuring HD mirrors (Abyss, FileMoon, Vidmoly, Streamwish) mapped via real-time TMDb translation.
  • Server 2 — SUB (Megaplay Softsub/Hardsub): Dedicated original Japanese audio with multilingual subtitles routed directly via AniList ID (/stream/ani/{id}/{ep}/sub).
  • Server 3 — DUB (Megaplay English Dub): Direct English audio streaming server via AniList ID (/stream/ani/{id}/{ep}/dub).
  • Full Screen & Landscape Lock: Automatically locks screen orientation to landscape (screen.orientation.lock('landscape')) with a universal CSS 90° fallback and floating exit button for iOS Safari.
  • Direct CDN Downloads: Instant one-click direct episode & movie downloads.

5. ⚡ 100% Real-Time AniList-to-TMDb Crosswalk Engine

  • No Heavy Static Mappings: Completely eliminates multi-megabyte mappings.json or anime-list-full.json files.
  • Instant Dual-Tier Translation: Resolves metadata via api.ani.zip and arm.haglund.dev on demand.
  • Sub-Millisecond In-Memory Caching: Subsequent lookups complete in <0.01ms from runtime session memory.

6. 🔄 Season-Aware "Continue Watching" & Auto-Resume

  • Deep Episode & Season Tracking: Keeps track of exact season numbers and episode numbers.
  • Smart CTA Buttons: Dynamic action buttons change to CONTINUE S<season> E<ep> (or Resume Ep <ep>).
  • Visual Progress Badges: Visual "Last Played" chips and progress indicators across all swimlanes.

7. 📅 Live Simulcast Airing Calendar

  • Real-Time Countdown: Live ticking countdown showing hours, minutes, and seconds until the next episode broadcasts in Japan.
  • Timezone Synchronization: Automatically converts broadcast schedules to the viewer's local browser timezone.

📱 Progressive Web App (PWA) System

Animora is built from the ground up as a production-grade Progressive Web App:

[ Browser Visit: animora.web.app ]
               │
               ▼
   ┌───────────────────────┐
   │ Service Worker (sw.js)│ ◄─── Pre-caches offline shell & brand assets
   └───────────┬───────────┘
               │
     ┌─────────┴─────────┐
     ▼                   ▼
[ Desktop / Android ]  [ iOS Safari / iPadOS ]
  Native Install API     Custom "Add to Home Screen"
  Prompt in Navbar       Visual Walkthrough Modal
     │                   │
     └─────────┬─────────┘
               ▼
    ┌─────────────────────────┐
    │ Standalone App Window   │
    │ • Fullscreen immersion  │
    │ • Zero address-bar lag  │
    │ • App switcher icon     │
    └─────────────────────────┘

🎠 Next-Gen Touch-Scroll Hero Carousel

Feature Legacy Implementation Animora Next-Gen Implementation
Mobile Interaction Click-only / static taps 1:1 Real-time touch drag with rubber-banding and velocity snapping
Art Display Fixed-height crop (edges lost) Proportional multi-breakpoint aspect ratio showing full artwork
Title Typography Truncated (line-clamp-1 / 2) Full multi-line title with responsive font scaling
Animation Loop 50ms setInterval state re-render Hardware-accelerated CSS keyframes with zero React thrash
Mobile Cleanliness Dots & counters covering art Clean, uncluttered view; centered navigation arrows

⚡ Real-Time Crosswalk Architecture

               [ User Clicks Episode / Show ]
                             │
                             ▼
              ┌──────────────────────────────┐
              │ In-Memory Session Cache Hit? │
              └──────┬────────────────┬──────┘
                     │ YES            │ NO
                     ▼                ▼
          [ Instant Return (<0.01ms) ] [ Real-Time Multi-Tier Crosswalk Query ]
                                                    │
                                                    ├─► Tier 1: api.ani.zip/mappings?anilist_id={id}
                                                    │   (Primary: returns TMDb ID & IMDb ID)
                                                    │
                                                    └─► Tier 2: arm.haglund.dev/api/v2/ids?source=anilist&id={id}
                                                        (Fallback: returns TMDb ID, Season & Ep offset)
                                                    │
                                                    ▼
                                       [ Cache in Session Memory ]
                                                    │
                                                    ▼
                                       [ Stream Generated Instantly ]

📺 Multi-Server Streaming Architecture

Server Name Provider Protocol / Endpoint Format Audio / Language Features
HD-1 (Multi) Mirror-Box API https://mirrorboxapi.web.app/embed?type=anime&id={tmdbId}&season={season}&episode={ep} Multi-Audio / Sub / Dub Adaptive HLS mirrors (Abyss, FileMoon, Vidmoly), direct CDN downloads
SUB Megaplay https://megaplay.buzz/stream/ani/{anilistId}/{ep}/sub Japanese (Original) + Multilingual Subs Direct AniList ID routing, high-speed edge CDN
DUB Megaplay https://megaplay.buzz/stream/ani/{anilistId}/{ep}/dub English Dubbed Audio Direct AniList ID routing, instant audio swap

🏗️ System Architecture

                      +------------------------------------------+
                      |         Animora PWA & Client App         |
                      |   React 19 + TypeScript + Vite + SW      |
                      +--------------------+---------------------+
                                           |
                 +-------------------------+-------------------------+
                 |                                                   |
    [Production / Serverless SPA]                             [Localhost / BFF]
                 |                                                   |
                 v                                                   v
   +---------------------------+                       +---------------------------+
   |   clientAniList.ts        |                       |   Express Backend (BFF)   |
   |   crosswalkResolver.ts    |                       |   fribb.service.js        |
   | (Browser Real-Time Engine)|                       | (Backend Real-Time Engine)|
   +-------------+-------------+                       +-------------+-------------+
                 |                                                   |
                 +-------------------------+-------------------------+
                                           |
        +----------------------------------+----------------------------------+
        |                                  |                                  |
        v                                  v                                  v
+─────────────────+             +───────────────────────+          +───────────────────────+
| AniList GraphQL |             | Real-Time Crosswalk   |          | Streaming Providers   |
|   Metadata v2   |             | (ani.zip & arm.haglund|          | • Mirror-Box (HD-1)   |
| (graphql.anilist)             |  Live ID Conversion)  |          | • Megaplay (SUB/DUB)  |
+─────────────────+             +───────────────────────+          +───────────────────────+

💻 Tech Stack

Layer Technologies
Frontend Framework React 19 + TypeScript 5
Bundler & Tooling Vite 6 with manualChunks route-level code splitting
Styling & Design System Tailwind CSS v4 + Custom Cinema Dark Palette
Application Capabilities Progressive Web App (PWA), Service Worker, Web App Manifest
Icons Lucide React
Routing React Router DOM v7
Backend / BFF Node.js + Express 4
Metadata Engine AniList GraphQL API v2
Crosswalk Engines Ani.zip API + Anime Relations Mappings (ARM)
Streaming Engines Mirror-Box API + Megaplay API
Analytics Google Analytics 4 (gtag.js - G-TD4S9HSEG5)
Hosting Targets Firebase Hosting (animora), Vercel, or Docker

📁 Repository Structure

anime/
├── client/                     # Frontend Progressive Web Application (SPA/PWA)
│   ├── public/                 # Static public assets
│   │   ├── icons/              # PWA app icons (192x192, 512x512, maskable)
│   │   ├── favicon.svg         # Official Animora branded SVG favicon
│   │   ├── manifest.json       # Web App Manifest for PWA installation
│   │   └── sw.js               # Service Worker for offline shell caching
│   ├── src/
│   │   ├── api/                # Hybrid API clients & real-time ID crosswalk resolver
│   │   │   ├── animeApi.ts         # Primary API consumer
│   │   │   ├── clientAniList.ts    # Browser-direct AniList GraphQL fallback service
│   │   │   └── crosswalkResolver.ts# Real-time AniList->TMDb resolver & stream builder
│   │   ├── components/         # Reusable design system components
│   │   │   ├── cards/          # Anime poster & horizontal episode cards with CDN download
│   │   │   ├── common/         # SEO manager, Shimmer skeletons, PWA Install Modal
│   │   │   ├── home/           # Real-time touch-scroll Hero Banner Carousel
│   │   │   ├── layout/         # Header, Footer, Mobile Drawer Navigation
│   │   │   └── player/         # Cinema theater player with Multi-Server Switcher
│   │   ├── hooks/              # Custom React hooks (usePWAInstall, useWatchHistory)
│   │   ├── pages/              # Lazy-loaded routed pages (Home, Browse, Watch, Calendar, Detail)
│   │   ├── types/              # Comprehensive TypeScript interfaces & DTOs
│   │   ├── App.tsx             # Root router with Suspense fallback
│   │   ├── index.css           # Global typography & Tailwind styling
│   │   └── main.tsx            # React application entry & SW registration
│   ├── index.html              # HTML5 template with SEO, PWA meta & Google Analytics (GA4)
│   ├── package.json            # Client dependencies
│   ├── tsconfig.json           # TypeScript configuration
│   └── vite.config.ts          # Vite build pipeline with optimized code splitting
├── server/                     # Optional Node.js BFF (Backend-for-Frontend)
│   ├── src/
│   │   ├── anilist.service.js  # AniList GraphQL query engine & rate-limiter
│   │   ├── fribb.service.js    # Real-time backend crosswalk resolver & cache
│   │   └── index.js            # Express API server with async stream injection
│   └── package.json            # Server dependencies
├── .firebaserc                 # Firebase project configuration (site: animora)
├── firebase.json               # Firebase Hosting SPA rewrite rules
├── start.js                    # Concurrent development launcher
├── LICENSE                     # MIT License
└── README.md                   # Project documentation

🚀 Quickstart & Local Development

Prerequisites

1. Clone the Repository

git clone https://github.com/code9xrs-hub/animora.git
cd animora

2. Install Dependencies

# Install root launcher dependencies
npm install

# Install client dependencies
cd client && npm install && cd ..

# Install server dependencies
cd server && npm install && cd ..

3. Launch Development Environment

Run both the Node.js backend (http://localhost:5000) and the Vite frontend (http://localhost:3000) concurrently with a single command:

node start.js
# or
npm start

Open your browser and navigate to http://localhost:3000.


🌐 Production Deployment Guide

1. Firebase Hosting (Recommended)

The project includes pre-configured .firebaserc and firebase.json files configured for the animora site target.

  1. Install Firebase CLI (if not already installed):

    npm install -g firebase-tools
  2. Authenticate with Firebase:

    firebase login
  3. Build the Production Client Bundle:

    cd client
    npm run build
    cd ..
  4. Deploy to Firebase Hosting:

    firebase deploy --only hosting:animora

Your live site will be instantly available at:
👉 https://animora.web.app/


2. Vercel / Netlify Deployment

Since Animora possesses an integrated browser-direct AniList fallback and client-side crosswalk resolver, it can be deployed directly as a pure static SPA on Vercel or Netlify without requiring a Node server:

  1. Connect your repository to Vercel/Netlify.
  2. Set build configuration:
    • Framework Preset: Vite
    • Root Directory: client
    • Build Command: npm run build
    • Output Directory: dist
  3. Configure SPA rewrites to /index.html.

📊 Analytics & SEO

  • Google Analytics 4: Pre-configured with Measurement ID G-TD4S9HSEG5 in client/index.html.
  • Dynamic Meta Tags: Automated page titles, descriptions, canonical URLs, and OpenGraph / Twitter Card preview images.
  • Schema.org Rich Snippets: Injected JSON-LD structured data for WebSite (with deep SearchAction), TVSeries, Movie, and TVEpisode.
  • Domain Auto-Resolution: Automatically adapts metadata and OpenGraph URLs to any custom domain without hardcoding.

📜 License & Credits

This project is licensed under the MIT License — see the LICENSE file for details.

Acknowledgments

Built with ❤️ by Rasel Khan. If you find this project helpful, please consider starring ⭐ the repository!

About

Next-Gen anime & movie streaming platform built with React 19, TypeScript, Vite, Tailwind CSS, AniList GraphQL v2 & Mirror-Box API.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages