{"id":18233243,"url":"https://github.com/evgenywas/nodejs2024q3-service","last_synced_at":"2026-04-09T11:35:51.409Z","repository":{"id":260937669,"uuid":"882648285","full_name":"EvgenyWas/nodejs2024Q3-service","owner":"EvgenyWas","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-24T11:10:52.000Z","size":725,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-04-04T15:11:16.998Z","etag":null,"topics":["authentication","docker","nestjs","nodejs","postgresql","prisma","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EvgenyWas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-03T11:47:33.000Z","updated_at":"2024-11-19T21:08:22.000Z","dependencies_parsed_at":"2024-11-23T18:32:42.338Z","dependency_job_id":null,"html_url":"https://github.com/EvgenyWas/nodejs2024Q3-service","commit_stats":{"total_commits":13,"total_committers":1,"mean_commits":13.0,"dds":0.0,"last_synced_commit":"a3bc54f6cfc207f2cc65f41836ab06ae6532de48"},"previous_names":["evgenywas/nodejs2024q3-service"],"tags_count":0,"template":false,"template_full_name":"rolling-scopes-school/nodejs-course-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvgenyWas%2Fnodejs2024Q3-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvgenyWas%2Fnodejs2024Q3-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvgenyWas%2Fnodejs2024Q3-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EvgenyWas%2Fnodejs2024Q3-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EvgenyWas","download_url":"https://codeload.github.com/EvgenyWas/nodejs2024Q3-service/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247838415,"owners_count":21004576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","docker","nestjs","nodejs","postgresql","prisma","typescript"],"created_at":"2024-11-04T15:03:25.698Z","updated_at":"2025-12-30T23:06:08.533Z","avatar_url":"https://github.com/EvgenyWas.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Home Library Service\n\nThis project provides a RESTful service for managing a Home Library where users can create, read, update, and delete data about artists, albums, and tracks. Users can also add these items to their personal Favorites list.\n\n## Prerequisites\n\n- **Git**: [Download \u0026 Install Git](https://git-scm.com/downloads).\n- **Node.js**: [Download \u0026 Install Node.js](https://nodejs.org/en/download/) along with npm.\n\n## Downloading\n\nTo clone the repository:\n\n```\ngit clone https://github.com/EvgenyWas/nodejs2024Q3-service.git\n```\n\n## Installing NPM modules\n\nNavigate to the project directory and install dependencies:\n\n```\nnpm install\n```\n\n## Running the Application\n\nStart the service on the default port (4000) using:\n\n```\nnpm run start\n```\n\nOr to start the service in dev mode with watching source files changes:\n\n```\nnpm run start:dev\n```\n\n### Configuration\n\nThe server listens on port 4000 by default. You can set a different port in the `.env` file using the `PORT` variable.\n\nAfter starting the application, view the OpenAPI documentation by opening [http://localhost:4000/doc/](http://localhost:4000/doc/) in your browser.\nFor more information about OpenAPI/Swagger please visit https://swagger.io/.\n\n## API Endpoints\n\nThe Home Library Service offers several endpoints to manage Users, Artists, Albums, Tracks, and Favorites.\n\n### User Endpoints (/user)\n\n- `GET /user`: Retrieve all users.\n- `GET /user/:id`: Retrieve a user by ID.\n- `POST /user`: Create a new user.\n- `PUT /user/:id`: Update user’s password.\n- `DELETE /user/:id`: Delete a user.\n\n### Artist Endpoints (/artist)\n\n- `GET /artist`: Retrieve all artists.\n- `GET /artist/:id`: Retrieve an artist by ID.\n- `POST /artist`: Create a new artist.\n- `PUT /artist/:id`: Update artist details.\n- `DELETE /artist/:id`: Delete an artist.\n\n### Track Endpoints (/track)\n\n- `GET /track`: Retrieve all tracks.\n- `GET /track/:id`: Retrieve a track by ID.\n- `POST /track`: Create a new track.\n- `PUT /track/:id`: Update track details.\n- `DELETE /track/:id`: Delete a track.\n\n### Album Endpoints (/album)\n\n- `GET /album`: Retrieve all albums.\n- `GET /album/:id`: Retrieve an album by ID.\n- `POST /album`: Create a new album.\n- `PUT /album/:id`: Update album details.\n- `DELETE /album/:id`: Delete an album.\n\n### Favorites Endpoints (/favs)\n\n- `GET /favs`: Retrieve all favorite artists, albums, and tracks.\n- `POST /favs/artist/:id`: Add an artist to favorites.\n- `DELETE /favs/artist/:id`: Remove an artist from favorites.\n- `POST /favs/album/:id`: Add an album to favorites.\n- `DELETE /favs/album/:id`: Remove an album from favorites.\n- `POST /favs/track/:id`: Add a track to favorites.\n- `DELETE /favs/track/:id`: Remove a track from favorites.\n\n### Important Notes\n\n- Non-existing entities cannot be added to Favorites.\n- When an artist, album, or track is deleted, it is automatically removed from Favorites, and related references in other entities are set to `null`.\n\n### Validation\n\nAll incoming requests are validated, ensuring the correct data structure for each endpoint.\n\n## Data Format\n\nAll requests and responses use `application/json` format.\n\n## Testing\n\nAfter application running open new terminal and enter:\n\nTo run all tests without authorization\n\n```\nnpm run test\n```\n\nTo run only one of all test suites\n\n```\nnpm run test -- \u003cpath to suite\u003e\n```\n\nTo run all test with authorization\n\n```\nnpm run test:auth\n```\n\nTo run only specific test suite with authorization\n\n```\nnpm run test:auth -- \u003cpath to suite\u003e\n```\n\n### Auto-fix and format\n\n```\nnpm run lint\n```\n\n```\nnpm run format\n```\n\n## Debugging\n\nTo debug the application in VSCode, press \u003ckbd\u003eF5\u003c/kbd\u003e.\n\nFor more information, visit: [VSCode Debugging](https://code.visualstudio.com/docs/editor/debugging).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevgenywas%2Fnodejs2024q3-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevgenywas%2Fnodejs2024q3-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevgenywas%2Fnodejs2024q3-service/lists"}