MusicVerse

MusicVerse

MusicVerse is a cross-platform application that revolutionizes the way you experience music. Developed using React Native, NestJS, Firebase & Expo.

    MusicVerse App - Thumbnail
    MusicVerse App - Real-time Notifications
    MusicVerse App - Track/Songs Upload
    MusicVerse App - Albums
    MusicVerse App - Playlists
    MusicVerse App - Download & Library
    MusicVerse App - Music Player
    MusicVerse App - Personalized Feed
    MusicVerse App - Thumbnail
    MusicVerse App - Real-time Notifications
    MusicVerse App - Track/Songs Upload
    MusicVerse App - Albums
    MusicVerse App - Playlists
    MusicVerse App - Download & Library
    MusicVerse App - Music Player
    MusicVerse App - Personalized Feed
Date
April 24, 2024
Frontend
TypeScript, React Native, Next.js
Backend
TypeScript, Python, NestJS
Databases
PostgreSQL

MusicVerse ๐ŸŽต๐ŸŒ

MusicVerse, a cross-platform Music App: Developed for my final year project using React Native Expo, TypeScript, NestJS, and PostgreSQL. Making music-sharing simple than ever. ๐ŸŽถโœจ

Features

  • ๐Ÿ›ž Secure Authentication, Authorization, Session Management, Validation, Performance Concerned System
  • ๐ŸŽง Listening to music
  • โฌ†๏ธ Uploading tracks, albums, and playlists
  • ๐Ÿ”— Sharing your favorite music with friends
  • ๐Ÿ“ฅ Offline listening and downloads
  • ๐ŸŽ›๏ธ Feature-rich music player
  • ๐Ÿ•ต๏ธโ€โ™‚๏ธ Follow other users and artists
  • ๐Ÿ‘ฅ Collaborative playlist creation
  • ๐Ÿ’ป Background playback
  • ๐Ÿ”ฎ Personalized song recommendations based on your listening history
  • โค๏ธ Like/Unlike tracks and save/unsave playlists
  • ๐Ÿ“ฐ Personalized feed content
  • ๐Ÿ”” Push notifications and in-app notifications
  • ๐Ÿ”— Shareable links for easy sharing

Tech Stack

  • ๐Ÿ“ฑ React Native (Expo) with TypeScript for cross-platform mobile development
  • ๐Ÿ•ธ๏ธ NestJS for the backend
  • ๐Ÿ’พ PostgreSQL database with Prisma ORM
  • ๐Ÿง  Python-based recommendation system
  • ๐ŸŒ NextJS for the admin dashboard
  • ๐Ÿ”„ Agile Incremental model for project methodology
  • ๐Ÿงช Manual testing and unit testing with Jest

Instructions to Run Locally

Requirements

  • Node.js
  • NPM
  • Python
  • eas-cli (for building the app)
  • Zrok (recommended for port forwarding)
  • Either an SDK manager or a mobile device with Expo installed and connected to the same internet (assuming no firewall blockages)
  • PostgreSQL database created based on the following URL:

DATABASE_URL="postgresql://musicverse:musicverse@localhost:5432/musicverse_db?schema=public"

(or edit this in the .env file of musicverse-backend)

Setup

  1. Navigate to musicverse-app and run npm install
  2. Navigate to musicverse-backend and run npm install
  3. Navigate to musicverse-dashboard and run npm install
  4. Navigate to musicverse-recommendation-system, activate the virtual environment, and run pip install -r requirements.txt
  5. Run npx prisma migrate to create tables according to the schema

Running the Project

You have two options for running the project:

Option 1: Change Port Numbers

  1. Change the port numbers for each project and update the BASE_URL in the .env file, package.json, and eas.json accordingly.

Option 2: (Recommended) Use Zrok

  1. Install Zrok from https://docs.zrok.io/docs/getting-started
  2. Invite yourself to Zrok by running the zrok invite command
  3. Check your email, click the invite link, and enter a password for your account
  4. Log in to Zrok and retrieve your token
  5. Back in your terminal, run zrok enable [your_token]
  6. Run the following command:

zrok reserve public http://localhost:{musicverse_backend_port}--backend-mode proxy

This will generate a reserved token, which you can use to forward the musicverse-backend localhost port, making it publicly accessible and bypassing any firewall limitations.

  1. Update the package.json of musicverse-backend with your new Zrok reserved token:
"start:dev": "nest start --watch --port 5984",
"start:zrok": "zrok share reserved {zrok_reserved_token}",
"start:both": "concurrently \"npm:start:dev\" \"npm:start:zrok\""

Replace "{zrok_reserved_token}" with your own token and execute npm run start:both.

Update the package.json of musicverse-dashboard and musicverse-app, eas.json of musicverse-app, and recommender.py of musicverse-recommendation-system with your new Zrok reserved token. Navigate to musicverse-dashboard and run npm run dev.

The default admin credentials are (automatically seeded): Email: [email protected] Password: Admin@2024 Username: admin

Run python recommender/app.py to start the Flask app for the recommendation system. Run npm run dev in musicverse-app to run the React Native app in development mode. Open the SDK emulator or your phone, launch Expo, and run the app.

ยฉ๏ธ Copyright Sugam Subedi https://www.github.com/supSugam