muSpace is a collaborative music listening platform where users can create or join spaces to share and enjoy music together. It allows users to add songs via YouTube URLs, maintain a song queue, and vote on songs. The song with the highest votes is played next, ensuring a democratic music experience for all participants.
- Users can create an account and log in to access the platform.
- Authentication is implemented using secure, scalable methods.
- Users can create a new space to start a collaborative music session.
- Other users can join existing spaces by entering a space code or URL.
- Add songs to the queue by pasting YouTube URLs.
- The platform automatically validates and queues the song.
- Each song in the queue can be upvoted or downvoted.
- Songs with the most votes are prioritized and played next.
- The queue dynamically updates based on votes.
- Users can view the current song and the next in line.
- Spaces are updated in real-time, ensuring a seamless collaborative experience.
- The platform is fully responsive and works smoothly on devices of all sizes.
- Framework: Next.js
- Styling: Tailwind CSS
- State Management: React Context API / Redux
- Framework: Next.js API Routes
- Database: PostgreSQL (using Prisma ORM)
- Authentication: NextAuth.js v5
- Real-Time Communication: WebSockets
- Hosting: Vercel (for production deployment)
Follow these steps to set up muSpace on your local machine:
- Node.js (>= 16.x)
- PostgreSQL database
- Git
-
Clone the Repository
git clone https://github.com/your-username/muspace.git cd muspace
-
Install Dependencies
npm install
-
Set Up Environment Variables
- Create a
.env.local
file in the root directory. - Add the following variables:
DATABASE_URL=your_postgresql_database_url NEXTAUTH_SECRET=your_secret_key NEXTAUTH_URL=http://localhost:3000
- Create a
-
Migrate the Database Run the following command to set up the database schema:
npx prisma migrate dev
-
Start the Development Server
npm run dev
The application will be available at
http://localhost:3000
.
If you have a seed script set up in your Prisma configuration, you can run:
npx prisma db seed
Contributions are welcome! If you find any bugs or have feature suggestions, feel free to open an issue or create a pull request.
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Commit your changes and push them to your fork.
- Open a pull request to the main repository.
This project is licensed under the MIT License. See the LICENSE file for details.
Enjoy using muSpace to create and share music collaboratively!