A feature-rich streaming platform for movies and series, powered by TMDB and a custom recommendation engine. Watch, discover, and enjoy!
- About
- Features
- Tech Stack
- Installation
- Usage
- Deployment
- Future Goals
- Contributing
- License
- New Release
The Let's Stream Website is designed for a seamless video streaming experience. It leverages:
- The Streaming API for video playback (using iframe integration in the current version).
- The TMDB API for comprehensive movie and series metadata.
- A Python-based recommendation engine to suggest content based on user viewing history.
The frontend is built with React and deployed on Netlify, Cloudflare Pages, and Heroku. Future plans include migrating backend logic to serverless functions (potentially on Cloudflare Workers) and exploring options for scaling the recommendation engine (Node.js or Python).
Here's a breakdown of the key features, categorized for better readability:
Core Functionality:
- π₯ Video Playback: Stream movies and series using iframe integration (more robust solutions planned).
- π Search & Discovery: Find content easily with a powerful search powered by the TMDB API.
- π₯ Trending & Popular Content: Discover what's hot, based on TMDB's trending data.
- βΎοΈ Infinite Scroll: Enjoy continuous content loading as you browse.
- π± Responsive Design: Optimized for viewing on any device (desktop, tablet, mobile).
- β¨ Dark Mode: Switch between light and dark themes for optimal viewing comfort.
User Experience:
-
π€ User Authentication: Secure login and registration using Firebase Authentication.
-
π¬ Personalized Profiles: Create profiles, customize avatars, and add bios.
-
π Watchlists: Save movies and series to watch later and receive notifications for new episode releases. (Future Enhancement)
-
β User Reviews and Ratings: Rate and review content, and view aggregated ratings from TMDB and other users. (Future Enhancement)
-
π€ Social Sharing: Share your favourite content on social media. (Future Enhancement)
-
π Interactive Carousel: Browse featured content with a visually appealing carousel (using
react-slick
). -
Focus mode: Focus on the content by hiding the UI elements. Technical Features:
-
βοΈ PWA Support: Installable as a Progressive Web App for offline access and a native-like experience (powered by Workbox).
-
β οΈ Error Handling: Robust error boundaries for graceful error management and improved user experience.
This project utilizes a modern web development stack:
- Frontend:
- React 18
- Tailwind CSS
- React Router v6
- React Slick
- Backend/Services:
- Firebase Authentication
- Progressive Web App:
- Workbox
- Utilities:
- ESLint
- Deployment:
- Netlify
- Cloudflare Pages
- Heroku
- APIs:
- TMDB API
- Streaming API (Specify which one)
- Testing:
- Jest
- React Testing Library
- Version Control:
- Git
- CI/CD:
- GitHub Actions
- Other:
- Markdown
- Firebase Security Rules
- WAI-ARIA
- Lighthouse
- MIT License
- Contributing
Get the project running locally with these steps:
-
Clone the Repository:
git clone [https://github.com/chintan992/letsstream.git](https://github.com/chintan992/letsstream.git) cd lets-stream
-
Install Dependencies:
npm install
-
Configure Environment Variables:
Create a
.env
file in the root directory and add your API keys and configuration:REACT_APP_TMDB_API_KEY=YOUR-API-KEY REACT_APP_TMDB_BASE_URL=[https://api.themoviedb.org/3](https://api.themoviedb.org/3) REACT_APP_TMDB_IMAGE_BASE_URL=[https://image.tmdb.org/t/p](https://image.tmdb.org/t/p) # Add other environment variables as needed (e.g., Firebase config)
Important: Replace
YOUR-API-KEY
with your actual TMDB API key. You may also need to add your Firebase configuration variables here.
-
Development Mode:
npm start
This will start the development server, and you can view the application at
http://localhost:3000
. -
Production Build:
npm run build
This creates an optimized production build in the
build
directory.
This project can be deployed to multiple platforms:
- Create a new site on Netlify.
- Connect your GitHub repository.
- Set the build command to
npm run build
. - Set the publish directory to
build/
. - Add your environment variables in the Netlify site settings.
- Click "Deploy Site."
-
Install the Heroku CLI.
-
Create a Heroku app:
heroku create lets-stream # Or choose a different app name
-
Set environment variables:
heroku config:set REACT_APP_TMDB_API_KEY=YOUR-API-KEY heroku config:set REACT_APP_TMDB_BASE_URL=[https://api.themoviedb.org/3](https://api.themoviedb.org/3) heroku config:set REACT_APP_TMDB_IMAGE_BASE_URL=[https://image.tmdb.org/t/p](https://image.tmdb.org/t/p) # Add any other necessary environment variables
-
Create a
Procfile
in the root of your project (if you don't have one already):web: serve -s build -l 8000
Important: You'll need to install
serve
as a dependency:npm install serve
. And add aheroku-postbuild
script to yourpackage.json
:"scripts": { "start": "react-scripts start", "build": "react-scripts build", "heroku-postbuild": "npm run build" }
-
Deploy to Heroku:
git push heroku main
- Log in to your Cloudflare account and go to "Pages."
- Click "Create a Project."
- Connect your Git repository (GitHub or GitLab).
- Configure build settings:
- Build command:
npm run build
- Build output directory:
build/
- Build command:
- Add your environment variables in the Cloudflare Pages settings.
- Deploy! Cloudflare Pages will handle the build and deployment process automatically.
git tag Release-v1.0.0
git push origin Release-v1.0.0
This section outlines planned future enhancements:
- User Profiles: Improved profile management and customization.
- Social Media Integration: Enhanced sharing capabilities.
- Advanced Search: More granular filtering options.
- User Reviews & Ratings: Full implementation of user feedback features.
- Multilingual Support: Localization for a global audience.
- Mobile App: Dedicated native mobile applications (iOS and Android).
- Live Streaming: Support for live events.
- Subscription Model: Options for premium content access.
We welcome contributions! Please see our CONTRIBUTING.md file for detailed guidelines on how to contribute to this project. This should include information on:
- Reporting bugs.
- Suggesting features.
- Submitting pull requests (including code style guidelines).
This project is licensed under the MIT License - see the LICENSE file for details.