{"id":20886264,"url":"https://github.com/axe-api/bookstore","last_synced_at":"2026-01-05T21:05:27.432Z","repository":{"id":195242508,"uuid":"627044156","full_name":"axe-api/bookstore","owner":"axe-api","description":"Bookstore API is just an example how to build an API by Axe API Framework","archived":false,"fork":false,"pushed_at":"2024-06-03T20:43:47.000Z","size":1741,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-29T12:38:17.801Z","etag":null,"topics":["api","axe-api","rest-api"],"latest_commit_sha":null,"homepage":"https://bookstore.axe-api.com/docs","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/axe-api.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-04-12T17:06:33.000Z","updated_at":"2023-12-15T19:11:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"7b05163a-15c5-421d-b7d1-937506c2225e","html_url":"https://github.com/axe-api/bookstore","commit_stats":{"total_commits":74,"total_committers":2,"mean_commits":37.0,"dds":0.4054054054054054,"last_synced_commit":"935c83dcf07cc2c6fada309b0a78fccd6d2df4a5"},"previous_names":["axe-api/bookstore"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axe-api%2Fbookstore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axe-api%2Fbookstore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axe-api%2Fbookstore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axe-api%2Fbookstore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/axe-api","download_url":"https://codeload.github.com/axe-api/bookstore/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244960349,"owners_count":20538789,"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","axe-api","rest-api"],"created_at":"2024-11-18T08:16:20.579Z","updated_at":"2026-01-05T21:05:21.993Z","avatar_url":"https://github.com/axe-api.png","language":"TypeScript","readme":"# Axe API\n\nThis is an [Axe API](https://axe-api.com/) project.\n\n## Usage\n\n```\n$ npm install\n$ npm run start:dev\n```\n\n## Benchmark\n\n#### Custom endpoint\n\n- No Axe API magic.\n- Roting a custom `http` handler function directly.\n- Fetching the same user.\n- No cache\n\n```bash\nscenarios: (100.00%) 1 scenario, 50 max VUs, 2m30s max duration (incl. graceful stop):\n           * default: Up to 50 looping VUs for 2m0s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)\n\n\n     ✓ status is 200\n\n     checks.........................: 100.00% ✓ 91514      ✗ 0\n     data_received..................: 57 MB   475 kB/s\n     data_sent......................: 3.5 MB  29 kB/s\n     http_req_blocked...............: avg=33.39µs  min=0s      med=0s      max=348.08ms p(90)=1µs     p(95)=1µs\n     http_req_connecting............: avg=10.18µs  min=0s      med=0s      max=28.71ms  p(90)=0s      p(95)=0s\n   ✓ http_req_duration..............: avg=53.27ms  min=31.09ms med=49.41ms max=2.48s    p(90)=68.39ms p(95)=79.73ms\n       { expected_response:true }...: avg=53.27ms  min=31.09ms med=49.41ms max=2.48s    p(90)=68.39ms p(95)=79.73ms\n     http_req_failed................: 0.00%   ✓ 0          ✗ 91514\n     http_req_receiving.............: avg=144.91µs min=6µs     med=30µs    max=72.61ms  p(90)=107µs   p(95)=595µs\n     http_req_sending...............: avg=38.24µs  min=7µs     med=31µs    max=7.55ms   p(90)=66µs    p(95)=85µs\n     http_req_tls_handshaking.......: avg=22.56µs  min=0s      med=0s      max=329.35ms p(90)=0s      p(95)=0s\n     http_req_waiting...............: avg=53.09ms  min=30.94ms med=49.23ms max=2.48s    p(90)=68.21ms p(95)=79.46ms\n     http_reqs......................: 91514   762.357662/s\n     iteration_duration.............: avg=53.43ms  min=31.18ms med=49.55ms max=2.48s    p(90)=68.56ms p(95)=80.11ms\n     iterations.....................: 91514   762.357662/s\n     vus............................: 26      min=2        max=50\n     vus_max........................: 50      min=50       max=50\n\n\nrunning (2m00.0s), 00/50 VUs, 91514 complete and 0 interrupted iterations\ndefault ✓ [======================================] 00/50 VUs  2m0s\n```\n\n#### `SHOW` handler without cache\n\n```bash\nscenarios: (100.00%) 1 scenario, 50 max VUs, 2m30s max duration (incl. graceful stop):\n           * default: Up to 50 looping VUs for 2m0s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)\n\n\n     ✓ status is 200\n\n     checks.........................: 100.00% ✓ 73529      ✗ 0\n     data_received..................: 43 MB   357 kB/s\n     data_sent......................: 2.8 MB  23 kB/s\n     http_req_blocked...............: avg=36.45µs min=0s      med=0s      max=118.2ms  p(90)=1µs     p(95)=1µs\n     http_req_connecting............: avg=12.87µs min=0s      med=0s      max=24.9ms   p(90)=0s      p(95)=0s\n   ✓ http_req_duration..............: avg=66.33ms min=32.53ms med=61.91ms max=6.61s    p(90)=90.4ms  p(95)=111.92ms\n       { expected_response:true }...: avg=66.33ms min=32.53ms med=61.91ms max=6.61s    p(90)=90.4ms  p(95)=111.92ms\n     http_req_failed................: 0.00%   ✓ 0          ✗ 73529\n     http_req_receiving.............: avg=127.2µs min=6µs     med=33µs    max=65.85ms  p(90)=101µs   p(95)=516µs\n     http_req_sending...............: avg=40.61µs min=7µs     med=33µs    max=5.33ms   p(90)=70µs    p(95)=89µs\n     http_req_tls_handshaking.......: avg=22.54µs min=0s      med=0s      max=100.79ms p(90)=0s      p(95)=0s\n     http_req_waiting...............: avg=66.17ms min=32.47ms med=61.74ms max=6.61s    p(90)=90.19ms p(95)=111.72ms\n     http_reqs......................: 73529   612.483888/s\n     iteration_duration.............: avg=66.51ms min=32.6ms  med=62.07ms max=6.61s    p(90)=90.68ms p(95)=112.27ms\n     iterations.....................: 73529   612.483888/s\n     vus............................: 26      min=2        max=50\n     vus_max........................: 50      min=50       max=50\n\n\nrunning (2m00.1s), 00/50 VUs, 73529 complete and 0 interrupted iterations\ndefault ✓ [======================================] 00/50 VUs  2m0s\n```\n\n#### `SHOW` handler with cache\n\n- Axe API handles the request.\n- Fetching the same user.\n- Auto-cache is ON\n\n```bash\nscenarios: (100.00%) 1 scenario, 50 max VUs, 2m30s max duration (incl. graceful stop):\n           * default: Up to 50 looping VUs for 2m0s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)\n\n\n     ✓ status is 200\n\n     checks.........................: 100.00% ✓ 107344     ✗ 0\n     data_received..................: 63 MB   514 kB/s\n     data_sent......................: 4.1 MB  34 kB/s\n     http_req_blocked...............: avg=25.52µs  min=0s      med=0s      max=76.97ms p(90)=1µs     p(95)=1µs\n     http_req_connecting............: avg=9.17µs   min=0s      med=0s      max=45.8ms  p(90)=0s      p(95)=0s\n   ✓ http_req_duration..............: avg=45.4ms   min=30.79ms med=41.3ms  max=16.72s  p(90)=53.96ms p(95)=71.4ms\n       { expected_response:true }...: avg=45.4ms   min=30.79ms med=41.3ms  max=16.72s  p(90)=53.96ms p(95)=71.4ms\n     http_req_failed................: 0.00%   ✓ 0          ✗ 107344\n     http_req_receiving.............: avg=151.31µs min=6µs     med=38µs    max=75.46ms p(90)=114µs   p(95)=609µs\n     http_req_sending...............: avg=44.25µs  min=6µs     med=36µs    max=14.39ms p(90)=69µs    p(95)=88µs\n     http_req_tls_handshaking.......: avg=15.7µs   min=0s      med=0s      max=44.87ms p(90)=0s      p(95)=0s\n     http_req_waiting...............: avg=45.2ms   min=30.67ms med=41.13ms max=16.72s  p(90)=53.68ms p(95)=70.76ms\n     http_reqs......................: 107344  878.506958/s\n     iteration_duration.............: avg=45.58ms  min=31ms    med=41.46ms max=16.72s  p(90)=54.17ms p(95)=72.1ms\n     iterations.....................: 107344  878.506958/s\n     vus............................: 1       min=1        max=50\n     vus_max........................: 50      min=50       max=50\n\n\nrunning (2m02.2s), 00/50 VUs, 107344 complete and 0 interrupted iterations\ndefault ✓ [======================================] 00/50 VUs  2m0s\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxe-api%2Fbookstore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxe-api%2Fbookstore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxe-api%2Fbookstore/lists"}