Multi-platform streaming platform with API server and web client. Ready for mobile, TV, and desktop expansion.
StreamFlix is a production-ready Netflix-like streaming platform aggregating 24,000+ movies and TV series from 5 streaming providers with rich TMDB metadata.
Key Features:
- π₯ 24,489+ movies & TV series
- π 5 streaming providers with automatic failover
- π Rich metadata (40+ fields per item from TMDB)
- β‘ Redis caching & MongoDB storage
- π Production-grade (clustering, rate limiting, health checks)
- π³ Docker-ready with NGINX load balancing
- π¨ Modern Next.js 15 web client with React 19
streamflix-platform/
βββ api/ # Node.js/Express API Server (port 8080)
β βββ server.js # Main entry point
β βββ services/ # 10+ core services (MongoDB, Redis, TMDB, etc.)
β βββ routes/ # RESTful API endpoints
β βββ controllers/ # Business logic
β
βββ web/ # Next.js 15 Web Client (port 3000)
β βββ src/app/ # App Router with React Server Components
β βββ src/components/ # React components
β βββ .env.local # Frontend configuration
β
βββ docs/ # Complete documentation
Multi-Frontend Ready: This structure supports future platforms:
- β Web (current)
- π± Mobile (React Native) - future
- πΊ TV (Smart TV apps) - future
- π» Desktop (Electron) - future
- Node.js 18+
- MongoDB 7.0+
- Redis 7+
- TMDB API Key (Get one here)
-
Clone the repository:
git clone <your-repo-url> cd Films
-
Configure environment:
cp .env.example .env # Edit .env and add your TMDB_API_KEY -
Install dependencies:
# Root dependencies npm install # API dependencies cd api && npm install && cd .. # Web dependencies cd web && npm install && cd ..
-
Initialize database:
npm run api:init-db
-
Start development:
# Terminal 1 - API Server npm run api:dev # Terminal 2 - Web Client npm run web:dev
-
Access the platform:
- Web Client: http://localhost:3000
- API Server: http://localhost:8080
- API Health: http://localhost:8080/health
- API Stats: http://localhost:8080/api/stats
npm run api:start # Start API in production mode
npm run api:dev # Start API with hot reload
npm run api:init-db # Initialize MongoDB databasenpm run web:dev # Start web client in dev mode
npm run web:build # Build web client for production
npm run web:start # Start web client in productionnpm run health # Check API health
npm run stats # View platform statistics
npm run sync # Trigger manual content syncdocker-compose up -dThis starts:
- MongoDB (port 27017)
- Redis (port 6379)
- 3x API servers (ports 8080-8082)
- NGINX load balancer (port 80)
# Check all containers
docker-compose ps
# View logs
docker-compose logs -f
# Stop all services
docker-compose downComprehensive documentation available in /docs:
- API.md - Complete API endpoint reference
- QUICK_START_GUIDE.md - Detailed setup guide
- DEPLOYMENT_GUIDE.md - Production deployment
- COMPONENT_ARCHITECTURE.md - Frontend architecture
- RESTRUCTURING_SUMMARY.md - v2.0 changes
- API_DEBUGGING_GUIDE.md - Troubleshooting
- Runtime: Node.js 18 (Alpine)
- Framework: Express.js 4.18
- Database: MongoDB 7.0 + Mongoose
- Cache: Redis 7.0
- External APIs: TMDB v3
- Features: Clustering, rate limiting, health checks
- Framework: Next.js 15 (with Turbopack)
- UI Library: React 19
- Language: TypeScript 5
- Styling: Tailwind CSS 4
- State: React Context API
- Rendering: SSR + CSR hybrid
- Containerization: Docker + Docker Compose
- Load Balancer: NGINX
- Process Manager: PM2-ready
- Monitoring: Health checks + metrics
GET /api/movies # All movies (paginated)
GET /api/movies/trending # Trending movies
GET /api/movies/new # Recently added (24h)
GET /api/movies/:id # Movie details
GET /api/movies/:id/stream # Streaming URLs
GET /api/movies/search # Search with filters
GET /api/series # All series (paginated)
GET /api/series/trending # Trending series
GET /api/series/:id # Series details
GET /api/series/:id/stream # Streaming URLs
GET /api/stats # Platform statistics
GET /api/health # Health check
GET /api/sync/status # Sync status
POST /api/sync/trigger # Manual sync
See docs/API.md for complete reference.
- π Homepage: Hero banner, trending content, genre carousels
- π Search: Advanced filters (genre, year, rating)
- π¬ Watch Page: Embedded player, cast info, similar recommendations
- π Watchlist: Local storage-based favorites
- π Dark Mode: System preference detection
- π± Responsive: Mobile, tablet, desktop optimized
- β‘ Performance: Sub-second load times with caching
# Database
MONGODB_URI=mongodb://localhost:27017/films_streaming
REDIS_URL=redis://localhost:6379
# External APIs
TMDB_API_KEY=your_tmdb_api_key_here
# Server
NODE_ENV=production
PORT=8080
CORS_ORIGIN=*NEXT_PUBLIC_API_URL=http://localhost:8080
NEXT_PUBLIC_APP_NAME=StreamFlix
NEXT_PUBLIC_APP_VERSION=2.0.0- Total Content: 24,489+ items
- Movies: ~18,000+
- TV Series: ~6,000+
- Streaming Providers: 5 (VidSrc, SuperEmbed, 2Embed, AutoEmbed, Smashy)
- Metadata Quality: 70% average completeness
- TMDB Integration: 40+ fields per item
- Performance: Sub-second response times
- Uptime: 99.9% with health monitoring
This is currently a private project. For questions or suggestions, please contact the maintainer.
MIT License - See LICENSE file for details
- API Documentation: docs/API.md
- Quick Start Guide: docs/QUICK_START_GUIDE.md
- TMDB API: https://www.themoviedb.org
For issues, bugs, or questions:
- Check docs/API_DEBUGGING_GUIDE.md
- Review docs/QUICK_START_GUIDE.md
- Contact the maintainer
Built with β€οΈ for the streaming future
StreamFlix Platform v2.0.0 - Production Ready