{"id":15697999,"url":"https://github.com/ulisesgascon/simple-api","last_synced_at":"2025-05-07T02:21:44.662Z","repository":{"id":143569846,"uuid":"616068013","full_name":"UlisesGascon/simple-api","owner":"UlisesGascon","description":"A very simple HTTP API to build fast prototypes","archived":false,"fork":false,"pushed_at":"2024-10-20T14:44:35.000Z","size":2151,"stargazers_count":8,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T13:53:26.114Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@ulisesgascon/simple-api","language":"JavaScript","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/UlisesGascon.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}},"created_at":"2023-03-19T14:21:33.000Z","updated_at":"2025-03-25T06:19:46.000Z","dependencies_parsed_at":"2024-10-24T02:57:25.010Z","dependency_job_id":"74f0a201-c481-404c-ad53-3b4d647d78f4","html_url":"https://github.com/UlisesGascon/simple-api","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UlisesGascon%2Fsimple-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UlisesGascon%2Fsimple-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UlisesGascon%2Fsimple-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UlisesGascon%2Fsimple-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UlisesGascon","download_url":"https://codeload.github.com/UlisesGascon/simple-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246419132,"owners_count":20774026,"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":[],"created_at":"2024-10-03T19:22:31.826Z","updated_at":"2025-03-31T23:30:42.003Z","avatar_url":"https://github.com/UlisesGascon.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ch1 align=\"center\"\u003e\n  @ulisesgascon/simple-api\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A very simple HTTP API to build fast prototypes\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.org/package/@ulisesgascon/simple-api\"\u003e\u003cimg src=\"https://badgen.net/npm/v/@ulisesgascon/simple-api\" alt=\"npm version\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.org/package/@ulisesgascon/simple-api\"\u003e\u003cimg src=\"https://badgen.net/npm/license/@ulisesgascon/simple-api\" alt=\"license\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.org/package/@ulisesgascon/simple-api\"\u003e\u003cimg src=\"https://badgen.net/npm/dt/@ulisesgascon/simple-api\" alt=\"downloads\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://snyk.io/test/github/ulisesgascon/@ulisesgascon/simple-api\"\u003e\u003cimg src=\"https://snyk.io/test/github/ulisesgascon/@ulisesgascon/simple-api/badge.svg\" alt=\"Known Vulnerabilities\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://deps.dev/project/github/ulisesgascon%2Fsimple-api\"\u003e\u003cimg \n  src=\"https://api.securityscorecards.dev/projects/github.com/UlisesGascon/simple-api/badge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# About\n\nA very simple HTTP API to build fast prototypes\n\n## ❤️ Awesome Features:\n\n- Typical Sample API with all the expected things (cors, fast response, immutability, etc..) 🚩\n- Basic JSON storage without external dependencies or third party solutions 🔥\n- Great testing coverage 🧪\n- Easy to customize ⚙️\n- Great Documentation with Swagger 📚\n- Available as Npx, module, docker image and more... with a single command 📦\n\n## Available Routes\n\nImportant:\n\n- By running `npm run sample:generate` you will regenerate a new TODOs dataset\n- The server allows CRUD Operations but this operations are not affecting the dataset at all\n\nEndpoints:\n\n- `GET /__/health` check health\n- `GET /__/docs` Swagger documentation for all the available endpoints\n- `GET /v1/todo` List all TODOS\n- `POST /v1/todo` Create a TODO\n- `GET /v1/todo/{id}` Get a specific TODO\n- `PUT /v1/todo/{id}` Update a specific TODO\n- `PATCH /v1/todo/{id}` PAtch a specific TODO property\n- `DELETE /v1/todo/{id}` Delete a specific TODO\n\n**PRO TIP** Run simple-api and check the Swagger docs with payload details and great UI 🍿\n\n# Usage\n\n## Command line 🪄\n\nUsing Node.js's `npx` to start a simple api in local:\n\n```bash\nnpx @ulisesgascon/simple-api\n```\n\nYou can specify the port:\n\n```bash\nnpx @ulisesgascon/simple-api 3000\n```\n\n## Module 📦\n\nUsing `@ulisesgascon/simple-api` in your project:\n\n```js\nconst appInitialization = require('@UlisesGascon/simple-api')\n\n;(async () =\u003e {\n  const app = await appInitialization()\n\n  app.listen(3000, () =\u003e console.log(`Server listening on port 3000!`))\n})()\n```\n\nYou can use `app` to extend the routes as it is the [Typical express application](https://expressjs.com/en/4x/api.html#app)\n\n**PRO TIP** By default Swagger validator will be disabled as adding new routes can be complicated, but you can enable it:\n\n```js\nconst appInitialization = require('@UlisesGascon/simple-api')\n\n;(async () =\u003e {\n  const app = await appInitialization({\n    swaggerEnabled: true\n  })\n\n  app.listen(3000, () =\u003e console.log(`Server listening on port 3000!`))\n})()\n```\n\n## Docker Version 🐳\n\nUse Docker Hub:\n\n```bash\n# Pull the image from Docker Hub:\ndocker pull ulisesgascon/simple-api:latest\n\n# Run container:\ndocker run -p 3000:3000 ulisesgascon/simple-api:latest\n```\n\nTo build and run the container locally:\n\n```bash\n# Clone Repo:\ngit clone https://github.com/ulisesgascon/simple-api.git\n\n# Change to repo's cloned directory:\ncd simple-api\n\n# Build Image locally:\ndocker build --no-cache -t ulisesgascon/simple-api:latest .\n\n# Run container:\ndocker run -p 3000:3000  ulisesgascon/simple-api:latest\n```\n\n# Development 🚀\n\n## Clone\n\n```bash\ngit clone https://github.com/UlisesGascon/simple-api.git\ncd simple-api\n```\n\n## Install\n\n```bash\nnvm use\nnpm i\n```\n\n## Start\n\n```bash\n# Regular\nnpm run start\n\n# prettier logs:\nnpm run dev\n```\n\n## Test\n\n```bash\nnpm run test:coverage\n```\n\n## Linting\n\n```bash\nnpm run lint\nnpm run lint:fix\n```\n\n## Formatting\n\n```bash\nnpm run format\nnpm run format:fix\n```\n\n## Contributing\n\nPlease consult [CONTRIBUTING](https://github.com/UlisesGascon/.github/blob/main/contributing.md) for guidelines on contributing to this project.\n\n## Author\n\n**@ulisesgascon/simple-api** © [Ulises Gascón](https://github.com/ulisesgascon), Released under the [MIT](./LICENSE) License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulisesgascon%2Fsimple-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fulisesgascon%2Fsimple-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulisesgascon%2Fsimple-api/lists"}