OpenMusic API is a RESTful API project for managing albums and songs using Hapi.js, PostgreSQL, and ESLint for code linting.
Before running this project, make sure you have installed:
- Node.js
- PostgreSQL
-
Clone this repository:
git clone https://github.com/TearsAchly/OpenMusic-API-V1.git cd openmusic-api -
Install dependencies:
npm install
-
Database configuration:
Make sure PostgreSQL is running and create a database named
AlbumsAndSongs. Then adjust the.envfile to your database settings:PGUSER=<YOUR_DB_USER> PGPASSWORD=<YOUR_DB_PASSWORD> PGDATABASE=AlbumsAndSongs PGHOST=localhost PGPORT=5432 -
Run database migration:
npm run migrate up || npx run migrate up -
Run server:
npm start
-
Linting code:
To ensure your code is free from linting issues, run:
npx eslint .
- eslint.config.mjs: ESLint configuration.
- migrations: Directory for database migration scripts.
- package.json: Npm configuration file.
- src/api: Directory containing handlers, indexes, and routes for albums and songs.
- src/exceptions: Directory containing custom error classes.
- src/server.js: The main file for running the Hapi.js server.
- src/services: Directory containing services for interacting with the PostgreSQL database.
- src/validator: Directory containing validation schemes using Joi.
-
Albums
POST /albums: Adds a new album.GET /albums: Gets a list of albums.GET /albums/{albumId}: Gets album details.PUT /albums/{albumId}: Updates the album.DELETE /albums/{albumId}: Deletes an album.
-
Song
POST /songs: Adds new songs.GET /songs: Gets a list of songs.GET /songs/{songId}: Gets song details.PUT /songs/{songId}: Updates songs.DELETE /songs/{songId}: Delete a song.
Please open a pull request or submit an issue to contribute to this project.
This project is licensed under the MIT license. See the LICENSE file for more information.