Sync. Stream. Enjoy Together.
A comprehensive cross-platform application for synchronized music and video streaming with real-time social features.
Features โข Quick Start โข Documentation โข Contributing โข Support
HeyPlay is a modern, full-stack application that revolutionizes how people experience media together. Create rooms, invite friends, and enjoy perfectly synchronized music and video playback across all devices. Built with cutting-edge technology and designed for seamless cross-platform experience.
- ๐ Real-time Synchronization: Perfect sync across all connected devices
- ๐ฑ Cross-Platform: Web (Next.js), Mobile (React Native), with shared backend
- ๐ต Multi-Source: Support for YouTube, Spotify, and custom media
- ๐ฌ Social Features: Live chat, reactions, and collaborative playlists
- ๐ Secure Authentication: JWT-based with email verification and OTP
- ๐จ Modern UI: Beautiful, responsive design with dark/light themes
- ๐ Production Ready: Full deployment setup and monitoringay
Sync. Stream. Enjoy Together.
HeyPlay is a comprehensive cross-platform application that allows users to create rooms, invite friends, and enjoy synchronized music and video playback together. Built with React Native for mobile (iOS & Android) and Next.js for web, featuring real-time synchronization, chat, reactions, and background music playback.
- Room-Based Experience: Create public/private rooms with password protection
- Real-time Synchronization: Perfectly synchronized playbook across all connected devices
- Background Playback: Continue listening when minimized (mobile)
- Multi-Platform Streaming: YouTube, Spotify, and custom media support
- Collaborative Playlists: Build and manage playlists together
- Advanced Controls: Play, pause, seek, skip with role-based permissions
- Live Chat: Real-time messaging within rooms
- Emoji Reactions: Express yourself with emoji reactions
- User Roles: Admin, moderator, and participant permissions
- Profile Management: Customizable user profiles and preferences
- Participant Tracking: See who's listening in real-time
- Email Verification: OTP-based email verification system
- JWT Authentication: Secure token-based authentication
- Session Management: Automatic token refresh and session cleanup
- Account Security: Login attempt tracking and account locking
- Password Reset: Secure password reset via email OTP
- WebSocket Communication: Real-time updates via Socket.io
- Responsive Design: Seamless experience across all screen sizes
- Offline Support: Cache management for better performance
- Error Handling: Comprehensive error management and user feedback
- API Integration: RESTful API with comprehensive endpoint coverage
Node.js + Express โ Server framework
MongoDB + Mongoose โ Database and ODM
Socket.io โ Real-time communication
JWT + bcryptjs โ Authentication & security
Nodemailer โ Email services
Node-cron โ Background tasks
Next.js 15 โ React framework with App Router
React 19 โ Latest React with concurrent features
TypeScript โ Type safety and development experience
Tailwind CSS โ Utility-first styling
Framer Motion โ Smooth animations
Heroicons โ Beautiful icon library
React Hot Toast โ User notifications
React Native 0.76 โ Native mobile development
Expo 52 โ Development platform and tools
TypeScript โ Type safety across platforms
React Navigation 7 โ Navigation and routing
Track Player โ Background audio playback
AsyncStorage โ Local data persistence
Vector Icons โ Comprehensive icon set
ESLint + Prettier โ Code quality and formatting
Nodemon โ Development server
Expo CLI โ Mobile development tools
MongoDB Atlas โ Cloud database
GitHub Actions โ CI/CD pipeline (coming soon)
Ensure you have the following installed:
- Node.js (v18.0.0 or higher) - Download
- MongoDB (local installation or MongoDB Atlas account) - Setup Guide
- Git - Download
- Expo CLI (for mobile development) -
npm install -g @expo/cli
-
Clone the repository
git clone https://github.com/imdeepakyadav/HeyPlay.git cd HeyPlay -
Install dependencies for all platforms
# Install backend dependencies cd backend && npm install # Install web dependencies cd ../web && npm install # Install mobile dependencies cd ../mobile && npm install
-
Set up environment variables
# Backend environment cd ../backend cp .env.example .env # Edit .env with your configuration (see Environment Setup below)
-
Start all services
# Terminal 1 - Backend (from /backend) npm run dev # Terminal 2 - Web App (from /web) npm run dev # Terminal 3 - Mobile App (from /mobile) npm start
-
Access the applications
- Web App: http://localhost:3000
- Backend API: http://localhost:5000
- Mobile App: Scan QR code with Expo Go app
Create these environment files with your configuration:
# Database
MONGODB_URI=mongodb://localhost:27017/heyplay
# JWT Secrets (generate strong secrets for production)
JWT_SECRET=your_super_secret_jwt_key_here
JWT_REFRESH_SECRET=your_refresh_secret_key_here
# Server Configuration
PORT=5000
CORS_ORIGINS=http://localhost:3000,exp://localhost:19000
# Email Configuration (Gmail example)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-password
EMAIL_FROM_NAME=HeyPlay
EMAIL_FROM_ADDRESS=noreply@heyplay.com
# Client URL
CLIENT_URL=http://localhost:3000
# API Keys (optional)
YOUTUBE_API_KEY=your_youtube_api_key
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secretNEXT_PUBLIC_API_URL=http://localhost:5000
NEXT_PUBLIC_SOCKET_URL=http://localhost:5000Update mobile/src/config/constants.ts:
export const API_BASE_URL = __DEV__
? "http://localhost:5000"
: "https://your-production-api.com";-
Start MongoDB (if using local installation)
-
Start Backend Server:
cd backend npm run dev # Server runs on http://localhost:5000
-
Start Web Application:
cd web npm run dev # Web app runs on http://localhost:3000
-
Start Mobile Application:
cd mobile npm start # Scan QR code with Expo Go app
- ๐ฑ Web App: http://localhost:3000
- ๐ Backend API: http://localhost:5000
- ๐ API Health: http://localhost:5000/api/health
- ๐บ Mobile: Scan QR code with Expo Go
# Backend tests
cd backend && npm test
# Web tests
cd web && npm run test
# Mobile tests
cd mobile && npm test
# End-to-end tests
cd web && npm run test:e2eComprehensive documentation is available in the /docs directory:
- ๐ API Documentation - Complete API reference
- ๐๏ธ Database Schema - MongoDB collections and relationships
- ๐ Authentication - Auth system and security
- โก Socket Events - Real-time communication events
- ๐ Deployment Guide - Production deployment instructions
- ๐ค Contributing - How to contribute to the project
| Feature | Web | Mobile | Backend |
|---|---|---|---|
| Authentication | โ JWT + Email OTP | โ JWT + Email OTP | โ Full auth system |
| Real-time Sync | โ Socket.io | โ Socket.io | โ WebSocket server |
| Room Management | โ Create/Join rooms | โ Create/Join rooms | โ Room API |
| Media Playback | โ Web Audio API | โ Track Player | โ Media metadata |
| Chat System | โ Real-time chat | โ Real-time chat | โ Message handling |
| User Profiles | โ Profile management | โ Profile management | โ User API |
- ๐ Web Demo: https://heyplay-demo.vercel.app
- ๐ฑ Mobile Demo: Download Expo Go and scan the QR code
- ๐ Test Account:
- Email:
demo@heyplay.com - Password:
demo123
- Email:
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Web Client โ โ Mobile Client โ โ Backend API โ
โ (Next.js) โ โ (React Native) โ โ (Node.js) โ
โ โ โ โ โ โ
โโ Auth Pages โ โโ Auth Screens โ โโ Auth Routes โ
โโ Dashboard โโโโโบโ Home Screen โโโโโบโ Room Routes โ
โโ Room Interfaceโ โ Room Screen โ โ User Routes โ
โโ Profile โ โ Profile Screen โ โ Media Routes โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโ
โ Database โ
โ (MongoDB) โ
โ โ
โโ Users โ
โโ Rooms โ
โโ Messages โ
โโ Sessions โ
โโโโโโโโโโโโโโโโโโโ
Backend Options:
- Railway (Recommended) - Simple deployment with GitHub integration
- Heroku - Traditional PaaS platform
- DigitalOcean - VPS with more control
- AWS/GCP/Azure - Enterprise cloud solutions
Web Frontend:
- Vercel (Recommended for Next.js) - Automatic deployments
- Netlify - JAMstack hosting platform
- AWS Amplify - Full-stack platform
Mobile Apps:
- Expo Application Services - Build and submit to app stores
- App Store Connect - iOS app distribution
- Google Play Console - Android app distribution
Database:
- MongoDB Atlas (Recommended) - Cloud database
- Self-hosted MongoDB on VPS
- Other document databases (DocumentDB, CosmosDB)
See the Deployment Guide for detailed instructions.
We welcome contributions from the community! Here's how you can help:
- Use GitHub Issues with the bug report template
- Include steps to reproduce and environment details
- Add screenshots or videos if helpful
- Check existing issues and discussions first
- Use the feature request template
- Explain the use case and potential implementation
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes following our coding standards
- Add tests for new functionality
- Update documentation as needed
- Submit a pull request
- TypeScript: Use TypeScript for all new code
- Code Style: Follow ESLint and Prettier configurations
- Commits: Use Conventional Commits
- Testing: Write tests for new features and bug fixes
- Documentation: Update relevant documentation
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- โ Commercial use - Use it in commercial projects
- โ Modification - Modify the code as needed
- โ Distribution - Distribute your modified versions
- โ Private use - Use it in private projects
- โ Liability - No warranty or liability provided
- โ Attribution - Include the original license
- ๐ Documentation: Check the
/docsdirectory first - ๐ Issues: Report bugs on GitHub Issues
- ๐ฌ Discussions: Join GitHub Discussions
- ๐ง Email: Contact us at
support@heyplay.com
- Discord: Join our development Discord server
- Twitter: Follow us @HeyPlayApp
- Reddit: Join r/HeyPlay
- โญ Star this repository to show support
- ๐ Watch for release notifications
- ๐ด Fork to contribute or customize
- ๐ง Subscribe to our newsletter for major updates
- โ User authentication with email verification
- โ Real-time room-based music synchronization
- โ Cross-platform support (Web + Mobile)
- โ Live chat and emoji reactions
- โ Beautiful, responsive UI design
- โ Production-ready deployment setup
- ๐ฅ Video streaming support (YouTube, Vimeo)
- ๐จ Custom room themes and personalization
- ๐ Audio effects and equalizer
- ๐ Room analytics and listening statistics
- ๐ Push notifications for room activities
- ๐ฅ Friend system and social features
- ๐ค Voice chat integration
- ๐ค AI-powered music recommendations
- ๐ฑ Progressive Web App capabilities
- ๐ Multi-language support
- ๐ฎ Interactive room games and activities
- ๐ Advanced moderation tools
- ๐ต Spotify Premium integration
- โ๏ธ Cloud playlist synchronization
- ๐ญ Virtual avatars and room environments
- ๐ป Radio station mode
- ๐ Advanced privacy controls
- ๐ฐ Premium features and monetization
Vote on features: Help prioritize our roadmap by participating in GitHub Discussions
Thanks to all the amazing people who have contributed to HeyPlay:
- @imdeepakyadav - Project Lead & Full-Stack Developer
- [Your Name Here] - Join us and be part of the core team!
- All beta testers and early adopters
- Contributors who reported bugs and suggested features
- The open-source community for amazing tools and libraries
Built with โค๏ธ by the HeyPlay Team
Bringing people together through music, one room at a time.
โญ Star on GitHub โข ๐ Report Bug โข ๐ก Request Feature





