- π¬ 720p Β· 1080p Β· 4K β quality picker on every movie, sourced from YTS
- π₯ Rich catalogue homepage β Trending, Most Watched, New Releases, Box Office, Top Rated, Most Downloaded, Most Anticipated + genre rows
- ποΈ Genre tabs β tap any genre for a full-screen filtered view
- π Live search β instant results dropdown as you type
- ποΈ Movie detail page β backdrop blur, cast circles, IMDb rating ring, trailer link, quality picker, similar movies grid
- β‘ Smart rate limiting β 3-tier system: image proxy unrestricted, search 30/min, API 600/15min
- π± Full PWA β installable, Background Sync, Periodic Sync, Push Notifications handler, auto-updates on deploy
- π² TWA / APK β native Android app via Digital Asset Links verification (no URL bar)
- π₯ In-browser install banner β shows only in browser, hidden automatically in PWA/TWA
- πΊοΈ Production SEO β JSON-LD knowledge graph, FAQPage schema, dynamic Open Graph, XML sitemap
- π SEO Blog β articles targeting high-traffic movie download keywords
- π Deploy anywhere β Render, Railway, Fly.io, any Node.js host
SkyluxMovies/
βββ index.js # Launcher β fetches and starts the core engine
βββ package.json # Launcher dependencies only
βββ .env.example # Environment variable reference
βββ .gitignore
The core application is loaded securely at runtime. This keeps the source lean and the deployment simple.
git clone https://github.com/Advay254/SkyluxMovies.git
cd SkyluxMoviesnpm installcp .env.example .envEdit .env with your values:
SITE_URL=http://localhost:3000
TRAKT_CLIENT_ID=your_trakt_client_id_here
YTS_BASE=https://movies-api.accel.li/api/v2
YTS_FALLBACK=https://yts.bz/api/v2npm startVisit http://localhost:3000 β you're live. π
| Variable | Required | Description |
|---|---|---|
SITE_URL |
β Yes | Full production domain β used for sitemap and canonical URLs. Example: https://yoursite.onrender.com |
TRAKT_CLIENT_ID |
Recommended | Powers trending rows via Trakt.tv API. Get one free at trakt.tv/oauth/applications |
API_KEY |
Optional | If set, external API requests must include this key via ?key= or x-api-key header |
YTS_BASE |
Optional | Primary YTS API URL. Update here if YTS changes domains β no code changes needed |
YTS_FALLBACK |
Optional | Fallback YTS API URL |
PORT |
Auto | Set automatically by Render β do not set manually |
β οΈ SITE_URLis the most critical variable. If missing, the sitemap and Digital Asset Links will reference the wrong domain.
- Fork this repo to your GitHub account
- Go to render.com and create a new Web Service
- Connect your forked repo
- Set Build Command:
npm install - Set Start Command:
npm start - Add your environment variables under Environment
- Click Deploy
Render free tier sleeps after 15 minutes of inactivity. Use cron-job.org to ping
/api/healthevery 10 minutes to keep it awake.
npm install -g @railway/cli
railway login && railway init && railway upAdd your environment variables in the Railway dashboard under Variables.
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
git clone https://github.com/Advay254/SkyluxMovies.git
cd SkyluxMovies && npm install
npm install -g pm2
pm2 start index.js --name skyluxmovies
pm2 save && pm2 startupUser deploys SkyluxMovies
β
Launcher starts and fetches the core engine securely at runtime
Core engine extracts and installs its own dependencies
β
App starts β homepage loads parallel fetches
(trending, most watched, new releases, box office)
Genre rows stream in with staggered requests
β
User searches or taps a movie card
β
GET /api/movie/:id
β Server checks in-memory cache (6hr TTL)
β Cache miss: fetches YTS movie_details with cast + images
β Rewrites all YTS image URLs to /api/img?u= proxy
β Returns proxied JSON to client
β
Movie detail page renders
β Backdrop blur, poster, cast circles, IMDb ring, genres, synopsis
β Quality picker shows available torrents (720p / 1080p / 4K)
β Tapping a quality triggers SPlayer magnet link intent
β Trailer button opens YouTube directly
β Similar movies in 3-column grid
β
Browser opens SPlayer β torrent streams or downloads natively on device
Why image proxy? YTS CDN applies hotlink protection. The
/api/img?u=proxy handles this server-side so images always load reliably.
| Endpoint | TTL | Reason |
|---|---|---|
/api/search |
10 min | Search results change often |
/api/trending, /api/watched, /api/new, /api/boxoffice, /api/anticipated |
2 hr | Updated daily by YTS |
/api/toprated, /api/popular |
2 hr | Stable high-traffic lists |
/api/movie/:id |
6 hr | Movie metadata rarely changes |
/api/suggestions/:id |
4 hr | Suggestion list changes slowly |
/api/img |
24 hr | Image bytes never change |
Three-tier rate limiting β tuned so normal browsing never hits a limit:
| Tier | Endpoints | Limit |
|---|---|---|
| Unrestricted | /api/img (image proxy) |
No limit β 24hr cached, one real fetch per image |
| Search | /api/search |
30 req / min β scrape protection |
| API | All other /api/ routes |
600 req / 15 min per IP |
Additional protections:
- Server-side image proxy β real YTS CDN URLs never exposed to the browser
- Optional API key β protect endpoints from external scrapers
- Hardened HTTP headers β via
helmet(XSS, clickjacking, MIME sniffing protection) - Digital Asset Links β TWA verified via
/.well-known/assetlinks.jsonso the Android app runs without a URL bar
SkyluxMovies includes a native Android APK built as a Trusted Web Activity:
- No URL bar β runs exactly like a native app
- In-browser install banner β shown automatically to browser users, hidden in PWA/TWA mode
- PWA-ready with full offline support via service worker
SkyluxMovies ships with production-grade SEO out of the box:
- JSON-LD knowledge graph β
Organization,WebSite,WebPage, andMovieentities - FAQPage schema β eligibility for Google AI Overviews and rich results
- Movie schema β title, year, genre, rating, runtime, language per movie page
- Dynamic Open Graph β title, description, and poster update after each movie loads
- robots.txt β explicit
Allowfor GPTBot, ClaudeBot, and PerplexityBot - XML sitemap at
/sitemap.xmlβ includes all pages and blog articles - Canonical URLs on every page
Check version.txt for the latest release version. Sync your fork and redeploy on Render to get the latest update.
- Fork the repo
- Create your branch:
git checkout -b feature/your-feature - Commit:
git commit -m 'Add your feature' - Push:
git push origin feature/your-feature - Open a Pull Request
SkyluxMovies is an independent open-source project and is not affiliated with, endorsed by, or connected to YTS, YIFY, or any movie studio in any way.
This tool indexes publicly available torrent metadata. Users are responsible for complying with copyright laws in their country. Always respect the work of filmmakers and content creators.
MIT Β© 2026 Advay β free to use, modify, and distribute.

