AudioSync is a music streaming application designed to allow users to browse and stream songs, explore artists, and create playlists. Built with a React frontend and a Express backend using OpenAPI, AudioSync integrates with the Spotify API and leverages MySQL for data storage.
- User Authentication: Sign up, login, and session management.
- Music Search: Search for songs and artists.
- Playlist Management: Create and manage personal playlists.
- Artist Pages: Explore artist profiles, including their albums and top tracks.
- Responsive Design: Fully responsive interface for mobile and desktop views.
- Frontend: React, React Router, Webpack, styled-components.
- Backend: Node.js, Express, OpenAPI, JWT for authentication.
- Database: MySQL for data storage.
- External APIs: Spotify API for streaming music.
- Development Tools: Swagger for API documentation.
If you prefer to run the application without Docker, follow the steps below for each component:
-
Clone the repository:
git clone https://github.com/teogr99/audiosync.git
-
Make sure you have MySQL installed and running.
-
Set up the database by running the SQL scripts in the
database/prod
folder. -
Install backend dependencies
cd backend npm install
-
Set up the environment variables by creating a .env file in the backend directory and adding the following variables:
MYSQL_HOST MYSQL_PORT MYSQL_USER MYSQL_PASSWORD MYSQL_DATABASE JWT_SECRET
-
Start the backend server:
npm start
-
Make sure your backend server is running on
http://localhost:5000
. -
Install frontend dependencies:
cd frontend npm install
-
Set up environment variables for the frontend: Create a
.env
file in thefrontend
directory and add the following:REACT_APP_API_URL=http://localhost:5000
-
Start the frontend application:
npm start
This will run the React app on
http://localhost:3000
.
-
Clone the repository:
git clone https://github.com/teogr99/audiosync.git
-
Navigate to the project root directory
cd audiosync
-
Build and start the services using Docker Compose:
docker-compose up --build
This will start the following services:
- MySQL (database)
- Backend (Express server)
- Frontend (React app)
- The backend will be available at http://localhost:5000, and the frontend will be available at http://localhost:3000