Welcome to the Jukebox Server! To get the server running, you only need Node.js installed on your computer. If you want to contribute to the DevOps portion, you will also need docker and docker-compose installed.
1. Description
Brief Description of the Project
2. Project Install One-Liner
Install the Project in One-Line
3. Getting Started
How to download the project locally
4. Technology Stack (documentation link)
5. Workflow
Current Issues
6. Setting up Spotify
7. Testing
How to test new changes to your code
The Jukebox Server is a Node.js-based server that connects with Spotify's API, allowing users to manage and potentially play music and function like a Jukebox. Required software includes Docker, Docker Compose, and Git.
This project has two Github pages this is designated for the Backend Development. If you are interested in the Frontend Development please link here. https://github.com/ufosc/Jukebox-Frontend
Copy this command to quickly get started. Must have docker, docker-compose, and git installed.
git clone [email protected]:ufosc/Jukebox-Server.git && cd Jukebox-Server && cp sample.env .env && docker-compose up --build
Use the following commands to download the project locally and get it running with nodemon.
git clone <git url>
cd Jukebox-Server
cp sample.env .env
docker-compose build
docker-compose up
We use docker compose to easily connect to databases and other container images. It could alternatively be run using npm run dev
; however, this is not guaranteed to always work.
Once the server is running, visit https://localhost:8000/login to authenticate with Spotify.
Use | Tech |
---|---|
Language | TypeScript |
Backend Runtime | Node.js |
Backend Framework | Express.js |
SQL Database | Postgres |
Unit Tests | Mocha |
Auto Documentation | Swagger |
Infrastructure as Code | Terraform |
Hosting | AWS |
Containerization | Docker |
To start with, look over the issues list and either pick out a task from there, or you can plan out your own idea. After that, clone the main branch onto you local system and get the server up and running using the commands above.
Once you have the server up and running, create a feature branch and start coding!
git checkout -b feature/something-brilliant
Remember, branches need to be focused on specific and full-working features. These features can be small, like adding some documentation, or large, like adding advanced authentication.
After you are finished with the feature, make sure you have written at least 3 unit tests, otherwise the pull request might not be accepted. Ideally, you should write tests before making the new feature to follow with the TDD paradigm, but this takes a bit of practice. Include Link/Example to TDD Paradigm here.
After you are satisfied, push your branch to GitHub and submit a pull request for you new branch.
The pull request will then be tested by a maintainer, and merged into the main branch.
The server gets its services from Spotify, as such using its developer account allows the server access to Spotify's artists, playlists, and algorithms
A Spotify app is essentially a spotify developer account where you can access their api and other developer services. After you get access to the dashboard you can create additional apps in the future for other personal projects.
To create an app refer to their guide: Developer.Spotify.com. During setup, here are the recommended settings:
- The name can be anything, I chose OSC Jukebox
- For Website, enter
http://localhost:8000
as this is what they will test for when you access their api - For Redirect URI enter
http://localhost:8000/spotify-login-callback
, this is the redirect url that spotify will send you to once you are authenticated. This is also the url will give you your spotify auth token. - Ignore Bundle IDs and Android Packages
Once you have the Spotify App and the project set up, the last step is to authenticate your account directly with Spotify. To do so, you must visit http://localhost:8000/login. This will redirect you to the /spotify-token
route which will display your new access token in JSON format.
Take the Access Token and enter it into the .env
file at the root of the project in the variable named SP_ACCESS
. This will allow you to access all of Spotify's API routes.
In the project, /login
has implemented Spotify's access token authorization code they provide on GitHub, you can look over it here.
When creating unit tests please use Mocha Formatting. REMEMBER TO HAVE AT LEAST 3 UNIT TESTS. var expect = require("chai").expect; var converter = require("../app/converter"); describe("JukeboxTest", function() { // specification code // Play from this specific playlist, source from another artist, etc. });
Running the following command will run Mocha, which will look for files inside the /test
directory.
docker-compose run --rm api sh -c "npm test"
When writing new tests, write them inside this /test
directory.