FanTune is an innovative music-sharing platform that enables collaborative playlist creation and management with real-time community engagement. The platform allows seamless integration of YouTube music content, featuring an interactive voting system and customizable sharing capabilities.
The Creator Dashboard provides authenticated users with full control over their music collection:
- Add new songs via YouTube links
- Play songs directly from the interface
- Manage upvotes and playlist ordering
- Generate shareable links for audience engagement
The Audience View (/creator/{creatorId}) offers a collaborative experience with specific permissions:
- Add songs to the creator's playlist
- Participate in song voting
- View real-time playlist updates
- Automatic playback of highest-voted songs (creator-side only)
- Secure Google OAuth2.0 integration
- Protected routes and authenticated sessions
- Role-based access control for playlist management
- Add YouTube music tracks seamlessly
- Real-time playlist updates and synchronization
- Dynamic queue management with automatic song removal
- Share playlists with customizable access links
- Collaborative playlist contributions
- Song voting system for queue prioritization
- Real-time community engagement features
- Frontend: Next.js, TypeScript, Tailwind CSS
- Backend: Next.js API Routes
- Database: PostgreSQL with Prisma ORM
- Authentication: NextAuth.js with Google Provider
- Deployment: Vercel
- Clone the repository:
git clone https://github.com/Akashsingh310/FanTune.git
cd FanTune- Install dependencies:
npm install- Configure environment variables:
Create a
.env.localfile with:
GOOGLE_CLIENT_ID="your_google_client_id"
GOOGLE_CLIENT_SECRET="your_google_client_secret"
DATABASE_URL="your_database_url"
NEXTAUTH_SECRET="your_nextauth_secret"
NEXTAUTH_URL="http://localhost:3000"
- Set up the database:
npx prisma migrate dev
npx prisma generate- Start development server:
npm run dev- Build the application:
npm run build- Deploy to your preferred platform (e.g., Vercel)
We welcome contributions! Please follow these steps:
- Fork the repository from dev Branch
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request