fanTune is a real-time, interactive web application that transforms how content creators engage with their audience through music. It allows streamers to create dedicated music rooms where viewers[...]
The application features a robust multi-room system, admin controls for queue management, and a sleek, modern interface, all powered by a real-time backend to ensure a perfectly synchronized experienc[...]
Live Demo: fantune.chayanmann.in
- Multi-Room System: Admins can create and manage multiple, independent streaming rooms.
- Real-Time Queue & Voting: Song submissions and upvotes are reflected instantly for all users in a room without needing a page refresh (powered by Supabase Realtime).
- Community-Powered Playlists: The next song to play is democratically chosen based on the highest number of votes.
- Admin Controls: Room creators (admins) have full control to play the next song and delete unwanted tracks from the queue.
- Secure Authentication: Users can sign in securely using their Google accounts, managed by NextAuth.js.
- Protected Routes: Only authenticated users can access rooms, and only admins can create them, thanks to Next.js Middleware.
- Sleek & Responsive UI: A modern, dark-themed interface built with Tailwind CSS that looks great on both desktop and mobile devices.
- Dockerized Deployment: Easily run the application anywhere using Docker for a consistent and simplified deployment experience.
- Framework: Next.js
- Language: TypeScript
- Styling: Tailwind CSS
- Authentication: NextAuth.js
- Database & ORM: PostgreSQL on Supabase with Prisma
- Real-time: Supabase Realtime
- Deployment: Vercel, Docker
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
- Node.js (v18 or later) (if not using Docker)
- npm or yarn (if not using Docker)
- Docker & Docker Compose (for containerized setup)
- A local PostgreSQL instance or a free Supabase project
- A Google Cloud project for OAuth credentials
- A YouTube Data API Key
-
Clone the repository:
git clone https://github.com/chayan-mann/fanTune.git cd fanTune -
Install dependencies:
npm install
-
Set up your environment variables: Create a file named
.env.localin the root of the project and add the variables mentioned in the.env.samplefile in the root directory of this repository. -
Run the development server:
npm run dev
The application should now be running at http://localhost:3000.
A Dockerfile and optional docker-compose.yml are provided to make running the app even easier.
-
Clone the repository:
git clone https://github.com/chayan-mann/fanTune.git cd fanTune -
Create your environment file:
- Copy
.env.sampleto.env.localand fill in the required environment variables.
- Copy
-
Build and run using Docker:
docker build -t fantune . docker run --env-file .env.local -p 3000:3000 fantuneOr, with Docker Compose (if a
docker-compose.ymlis present):docker-compose up --build
-
Access the app:
- Visit http://localhost:3000 in your browser.
This project is licensed under the MIT License - see the LICENSE file for details.