Welcome to Peer2Stream! This is your all-in-one spot to discover, watch, and organize your favorite movies and TV shows. Super easy, super fun! 🚀
Peer2Stream is a web app built with Next.js that lets you explore trending movies and series, search for what you love, save your favorites in your own videoclub, and keep track of what you’ve watched. Everything is designed for a smooth experience on your computer! 💻
- External Plugin Integration – Watch content using external plugins for a better viewing experience 🎥
- TMDB Integration – All info and covers come from The Movie Database (TMDB) 🗂️
- Easy Login & Register – Sign up, log in, and reset your password in a snap 🔐
- Personal Dashboard – Edit your profile and tweak your settings 👤
- Content Discovery – Find trending stuff, filter by genre, provider, and more 🔎
- Videoclub – Save, sort, and search your favorite movies and shows ⭐
- Watch Progress Tracking – Never lose your place! Continue watching anytime ⏩
- Recommendations – Get suggestions based on your tastes 🤩
- Where to Watch – See which platforms have your content 📺
- Trailers – Watch trailers right in the app 🎞️
- Notifications – Stay in the loop with updates and news 🔔
- Full Details – See cast, ratings, and more for every title 📝
- TV Show Management – Browse seasons and episodes, track your progress 📅
- User Preferences – Set your language and video quality 🌍
- Made for Desktop – Best viewed on your computer! 🖥️
-
Frontend
- Next.js 15.3.0 (React 19)
- CSS Modules
- Material UI & Icons
- Framer Motion (animations)
- TailwindCSS
-
Backend
- MongoDB + Mongoose
- JWT (auth)
- bcrypt.js (passwords)
- Nodemailer (emails)
-
External Services
- TMDB API
- External media plugins
- Streaming platform integration
-
Other Tools
- Vercel Analytics
- React Icons
- DND Kit (drag & drop)
- Custom video player
- Node.js (v18+)
- npm or yarn
- MongoDB (local or cloud)
-
Clone this repo:
git clone https://github.com/yourusername/peer2stream.git cd peer2stream-frontend -
Install dependencies:
npm install # or yarn install -
Add a
.env.localfile with:MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_secret_key_for_jwt NEXT_PUBLIC_API_URL=http://localhost:3000/api NEXT_PUBLIC_TMDB_API_KEY=your_tmdb_api_key EXTERNAL_PLUGIN_URL=http://localhost:3000 SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=your-email@gmail.com SMTP_PASSWORD=your-email-password EMAIL_FROM=noreply@peer2stream.com NEXT_PUBLIC_SITE_URL=http://localhost:3000
Tip: Get a free TMDB API key here and make sure you have a compatible media plugin installed!
-
Start the app:
npm run dev # or yarn dev -
Open http://localhost:3000 in your browser and enjoy! 🎉
| Variable | Description | Example |
|---|---|---|
MONGODB_URI |
MongoDB connection string | mongodb+srv://user:password@cluster.mongodb.net/peer2stream |
JWT_SECRET |
Secret key for JWT | your-strong-secret-key |
NEXT_PUBLIC_API_URL |
API base URL | http://localhost:3000/api |
NEXT_PUBLIC_TMDB_API_KEY |
TMDB API key | your-tmdb-api-key |
EXTERNAL_PLUGIN_URL |
Media plugin URL | http://localhost:3000 |
SMTP_HOST |
SMTP server | smtp.gmail.com |
SMTP_PORT |
SMTP port | 587 |
SMTP_USER |
SMTP username | your-email@gmail.com |
SMTP_PASSWORD |
SMTP password | your-email-password |
EMAIL_FROM |
Sender email | noreply@peer2stream.com |
NEXT_PUBLIC_SITE_URL |
Public site URL | https://peer2stream.live |
- Go to the login page and hit "Register" to make an account ✍️
- Check your email if needed
- Log in and you’re set!
- Click the compass icon 🧭 to explore trending stuff
- Use filters to find exactly what you want
- Click any card for more info
- Add movies/series to your Videoclub with one click ⭐
- Access your collection via the Videoclub icon 🎬
- Sort, search, and manage your faves
- Click a card to see details
- For movies, hit play
▶️ (make sure your plugin is ready!) - For TV shows, pick a season/episode and start watching 📺
- Your progress is saved automatically
- Continue anytime from the "Continue Watching" section 🔄
- See where else you can watch with direct links 🌐
POST /api/auth/register– RegisterPOST /api/auth/login– Log inPOST /api/auth/logout– Log outGET /api/auth/me– Who am I?POST /api/auth/forgot-password– Forgot passwordPOST /api/auth/reset-password– Reset passwordPUT /api/auth/update– Update user info
GET /api/content-status– All your watch statusGET /api/content-status?status=pending– In-progress stuffGET /api/content-status/[externalId]– Status for a specific titlePOST /api/content-status– Update watch status
GET /api/user/settings/getSettings– Get settingsPUT /api/user/settings/updateSettings– Update settingsGET /api/user/favourites/getFavourites– Get favoritesPUT /api/user/favourites/updateFavourites– Update favoritesPOST /api/user/favourites/updateFavourites– Add to favoritesGET /api/user/notifications– Get notificationsPOST /api/user/notifications– New notification
GET https://api.themoviedb.org/3/find/{external_id}– Find by IMDBGET https://api.themoviedb.org/3/trending/{media_type}/{time_window}– TrendingGET https://api.themoviedb.org/3/{media_type}/{id}/watch/providers– Streaming providersGET https://api.themoviedb.org/3/{media_type}/{id}/videos– TrailersGET https://api.themoviedb.org/3/{media_type}/{id}/similar– Similar content
- Fork this repo
- Make a new branch (
git checkout -b cool-feature) - Commit your changes (
git commit -m 'Add cool feature') - Push and open a Pull Request
Please follow the code style and add tests if you can! 🧪
MIT License – see the LICENSE file for details.
- Next.js – The React framework
- MongoDB – Database
- Material UI – UI components
- The Movie Database (TMDB) – API & content
- Framer Motion – Animations
- Vercel – Hosting
- TailwindCSS – Styling
- Desktop Only: Best on a computer (not mobile!)
- Modern Browser: Chrome, Firefox, Safari, Edge
- Internet: Needed for fetching & discovery
- Browser Plugins: You’ll need a compatible media plugin
- Plugin Permissions: Allow the plugin to play media
- Ismael Delgado Sancho – Co-owner, Full Stack Developer
- Alejandro Cabrera Carrasco – Co-owner, Full Stack Developer
Special thanks to all contributors and the open-source community for their support! 🚀