{"id":17178827,"url":"https://github.com/nicolasomar/my-pets-api","last_synced_at":"2025-07-11T03:04:55.490Z","repository":{"id":39713091,"uuid":"323490817","full_name":"NicolasOmar/my-pets-api","owner":"NicolasOmar","description":"GraphQL server based on NodeJs to give back-end support a web client based on React","archived":false,"fork":false,"pushed_at":"2025-06-14T12:23:41.000Z","size":2532,"stargazers_count":3,"open_issues_count":11,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-14T12:25:59.051Z","etag":null,"topics":["api-rest","bcryptjs","cors","eslint","express","husky","jest","jwt","mongodb","mongoose","nodejs","nodemon","prettier","supertest"],"latest_commit_sha":null,"homepage":"https://my-pets-api.up.railway.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NicolasOmar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2020-12-22T01:39:24.000Z","updated_at":"2025-06-04T17:25:07.000Z","dependencies_parsed_at":"2023-09-26T21:11:27.708Z","dependency_job_id":"5ea5711b-5e86-41ac-8227-405229dd6b3d","html_url":"https://github.com/NicolasOmar/my-pets-api","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/NicolasOmar/my-pets-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasOmar%2Fmy-pets-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasOmar%2Fmy-pets-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasOmar%2Fmy-pets-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasOmar%2Fmy-pets-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NicolasOmar","download_url":"https://codeload.github.com/NicolasOmar/my-pets-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasOmar%2Fmy-pets-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264719237,"owners_count":23653541,"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":["api-rest","bcryptjs","cors","eslint","express","husky","jest","jwt","mongodb","mongoose","nodejs","nodemon","prettier","supertest"],"created_at":"2024-10-15T00:09:31.414Z","updated_at":"2025-07-11T03:04:55.209Z","avatar_url":"https://github.com/NicolasOmar.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Pets API\nGraphQL server based on NodeJs to give back-end support a web client based on [React](https://my-pets-prod.netlify.app/).\n\n## Table of contents\n\n- [Status](#status)\n- [Dependencies](#dependencies)\n- [What do I need?](#what-do-i-need)\n- [Setup](#setup)\n- [How to run it](#how-to-run-it)\n- [Folder structure](#folder-structure)\n- [Find out more](#find-out-more)\n- [License](#license)\n\n## Status\n\n![Project version][badge-repo-version]\n[![Code Coverage][badge-code-coverage]][link-code-coverage]\n[![Quality Gate Status][badge-soundcloud-quality]][link-soundcloud-status]\n[![Maintainability Rating][badge-soundcloud-maintanibility]][link-soundcloud-status]\n[![Security Rating][badge-soundcloud-security]][link-soundcloud-status]\n[![Technical Debt][badge-soundcloud-tech-debt]][link-soundcloud-status]\n[![Known Vulnerabilities][badge-snyk-status]][link-snyk-status]\n![GitHub Repo stars][badge-github-repo-stars]\n![GitHub commit activity][badge-github-commits]\n![GitHub last commit][badge-github-last-commit]\n\n[badge-repo-version]: https://img.shields.io/github/package-json/v/nicolasomar/my-pets-api?label=version\u0026logo=npm\u0026color=success\n[badge-code-coverage]: https://img.shields.io/codecov/c/github/nicolasomar/my-pets-api?label=coverage\u0026logo=codecov\n[link-code-coverage]: https://app.codecov.io/gh/NicolasOmar/my-pets-api\n[badge-soundcloud-quality]: https://sonarcloud.io/api/project_badges/measure?project=NicolasOmar_my-pets-api\u0026metric=alert_status\n[badge-soundcloud-maintanibility]: https://sonarcloud.io/api/project_badges/measure?project=NicolasOmar_my-pets-api\u0026metric=sqale_rating\n[badge-soundcloud-security]: https://sonarcloud.io/api/project_badges/measure?project=NicolasOmar_my-pets-api\u0026metric=security_rating\n[badge-soundcloud-tech-debt]: https://sonarcloud.io/api/project_badges/measure?project=NicolasOmar_my-pets-api\u0026metric=sqale_index\n[link-soundcloud-status]: https://sonarcloud.io/summary/new_code?id=NicolasOmar_my-pets-api\n[badge-snyk-status]: https://snyk.io/test/github/nicolasomar/my-pets-api/badge.svg\n[link-snyk-status]: https://snyk.io/test/github/nicolasomar/my-pets-api\n[badge-github-repo-stars]: https://img.shields.io/github/stars/nicolasomar/my-pets-api?label=stars\u0026logo=github\u0026labelColor=535353\u0026style=flat\n[badge-github-commits]: https://img.shields.io/github/commit-activity/m/nicolasomar/my-pets-api?logo=github\n[badge-github-last-commit]: https://img.shields.io/github/last-commit/nicolasomar/my-pets-api?logo=github\n\n## Dependencies\n![express dependency][badge-dependency-express]\n![typescript dependency][badge-dependency-typescript]\n![graphql dependency][badge-dependency-graphql]\n![apollo-server dependency][badge-dependency-apollo-server]\n![nodemon dependency][badge-dependency-nodemon]\n![hbs dependency][badge-dependency-hbs]\n![mongoose dependency][badge-dependency-mongoose]\n![bcryptjs dependency][badge-dependency-bcryptjs]\n![crypto-js dependency][badge-dependency-crypto-js]\n![babel-node dependency][badge-dependency-babel-node]\n![jest dependency][badge-dependency-jest]\n![ts-jest dependency][badge-dependency-ts-jest]\n![eslint dependency][badge-dependency-eslint]\n![prettier dependency][badge-dependency-prettier]\n![lint-staged dependency][badge-dependency-lint-staged]\n![husky dependency][badge-dependency-husky]\n\n[badge-dependency-express]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/express/main?logo=express\n[badge-dependency-typescript]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/dev/typescript/main?logo=typescript\n[badge-dependency-graphql]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/graphql/main?logo=graphql\n[badge-dependency-apollo-server]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/apollo-server-express/main?logo=apollographql\n[badge-dependency-nodemon]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/dev/nodemon/main?logo=nodemon\n[badge-dependency-hbs]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/hbs/main?logo=hbs\n[badge-dependency-mongoose]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/mongoose/main?logo=mongoose\n[badge-dependency-bcryptjs]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/bcryptjs/main\n[badge-dependency-crypto-js]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/crypto-js/main\n[badge-dependency-babel-node]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/@babel/node/main?logo=babel\n[badge-dependency-jest]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/dev/jest/main?logo=jest\n[badge-dependency-ts-jest]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/dev/ts-jest/main?logo=ts-jest\n[badge-dependency-eslint]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/dev/eslint/main?logo=eslint\n[badge-dependency-prettier]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/dev/prettier/main?logo=prettier\n[badge-dependency-lint-staged]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/dev/lint-staged/main?logo=lint-staged\n[badge-dependency-husky]: https://img.shields.io/github/package-json/dependency-version/nicolasomar/my-pets-api/dev/husky/main?logo=husky\n\n## What do I need?\nBefore cloning this repo, I recommend installing the following software:\n- [Node](https://nodejs.org/en/download/) \u003e=12.16.1 to install packages\n- [MongoDB](https://www.mongodb.com/download-center/community) \u003e=4.2.3 to have a local database\n- [Robo 3T](https://robomongo.org/download) to visualize data on your Mongo Database\n\n## Setup\nAfter cloning the repo, go to the created folder and install the node packages.\n```sh\ngit clone https://github.com/NicolasOmar/my-pets-api.git\ncd my-pets-api\nnpm install\n```\n\n## How to run it\nTo run it correctly (as a non-stopping server using local environment variables), I modified the `start` command by adding [nodemon](https://www.npmjs.com/package/nodemon) and [env-cmd](https://www.npmjs.com/package/env-cmd). So just run the following line:\n```sh\nnpm start\n```\nAfter start the server, you can access the GraphQL Plauground through the [local link](http://localhost:4000/graphql).\n\n## Folder structure\nOnce you have cloned the repo, it will show you the following folders:\n- `.github:` [Github Actions](https://github.com/features/actions) files used to run post-merge.\n- `env:` Environment variables.\n- `public:` Contains only a `css` folder for specific home page styling.\n- `scripts:` Location of the `update-version.js` file, responsible of update package's version on each push.\n- `src`\n  - `constants:` JSON files used for static values.\n  - `db:` Connection to the Mongo database trough [Mongoose](https://mongoosejs.com/) as well as its Model declarations.\n  - `functions:` Helper methods related to encryption and data parsing.\n  - `graphql:` Server configuration based on [Apollo GraphQl](https://www.apollographql.com/) connection with its Schemas and Resolver declarations.\n- `templates:` Structure dedicated to show a start page based in [Moustache.js](https://github.com/janl/mustache.js). Shows links of other useful sites related to the project.\n- `tests:` Specific Jest configurations to test using a custom Mongoose connection.\n\n## Find out more\n| [Project Status](https://github.com/users/NicolasOmar/projects/1/views/1) | [React Repo](https://github.com/NicolasOmar/my-pets) |\n| :--- | :--- |\n| Project board for project status tracking | React front-end repository |\n\n## License\n**MIT**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicolasomar%2Fmy-pets-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicolasomar%2Fmy-pets-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicolasomar%2Fmy-pets-api/lists"}