{"id":17862905,"url":"https://github.com/dheavy/github-api-proxy","last_synced_at":"2026-07-02T12:39:18.001Z","repository":{"id":148062949,"uuid":"508694415","full_name":"dheavy/github-api-proxy","owner":"dheavy","description":"Simple demonstration of a Docker-based, Github API proxy for users search","archived":false,"fork":false,"pushed_at":"2022-06-29T13:20:29.000Z","size":123,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-30T08:50:49.599Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/dheavy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2022-06-29T13:04:09.000Z","updated_at":"2022-06-29T13:04:33.000Z","dependencies_parsed_at":"2023-03-31T17:03:59.924Z","dependency_job_id":null,"html_url":"https://github.com/dheavy/github-api-proxy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dheavy/github-api-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheavy%2Fgithub-api-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheavy%2Fgithub-api-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheavy%2Fgithub-api-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheavy%2Fgithub-api-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dheavy","download_url":"https://codeload.github.com/dheavy/github-api-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dheavy%2Fgithub-api-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35048062,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-28T08:56:46.941Z","updated_at":"2026-07-02T12:39:17.981Z","avatar_url":"https://github.com/dheavy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Github User Search API Proxy\n\nA simple demonstration of a Docker-based, Github API proxy for users search.\n\n## Description\n\nRuns a Docker container with an Express app, serving a simple search API at http://0.0.0.0:8080.\n\nIt proxies the search API for `users` and `repos` entities only, and will return the result of a valid [search query for a user](https://docs.github.com/en/rest/reference/search#search-users), and a subset of resulting users' repos (the 5 last updated).\n\n\u003e The results are paginated and yield objects 5 by 5 in order to save calls on the API rate limit.\n\n### Proxy API usage\n\nYou need to call the `/search` endpoint with a `q` query variable, like this:\n\n```\nhttp://0.0.0.0:8080/search?q=\u003cUSER_QUERY\u003e\n```\n\nAny search query valid for users in the Github API will work:\n\n```\nhttp://0.0.0.0:8080/search?q=tom+repos:\u003e42+followers:\u003e1000\n\n// Returns results for users with the name \"tom\", restricted to users\n// with more than 42 repositories and over 1,000 followers\n```\n\n### API call results\n\nResults are very similar to that of GitHub's Open API specs, with two liberties taken.\n\nFirst, in case of an error, the payload will add an `errors` array with human readable message for convenience (i.e. to display on a form in a UI).\n\n```\n// error result\n{\n    data: {...},\n    errors: [\"An error occurred...\"]\n}\n```\n\nSecond, the `users` and `repos` are returned as separate attributes in the result object, to respect as much as possible the API specs of each entities as defined by Github, avoiding surprises when strongly typing or parsing their content.\n\n```\n// successful result =\u003e two distinct attributes in `data`\n{\n    data: {\n        users: {},\n        repositories: {},\n        ...\n    }\n}\n```\n\n### API rate limit\n\nThe Github API has a [rate limit](https://docs.github.com/en/rest/rate-limit) in place.\n\nWhen you hit that limit through the Proxy API, you will receive a `429 (Too Many Request)` error code.\n\nTo significantly raise the rate limit for the API:\n\n* Create a `.env` file mirrored from the existing `.env.example` in the repo (`cp .env.example .env`)\n* Create a **Personal Access Token** on Github by [clicking here](https://github.com/settings/tokens/new)\n* Set that token as value of the `PERSONAL_ACCESS_TOKEN` variable in the `.env` file you just created\n\n## Getting Started\n\n### Dependencies\n\n* Docker ([install from here](https://docs.docker.com/get-docker/))\n\n### Executing program\n\n* `cd` into the project directory\n* Run `docker-compose up -d`\n* Start making search request to http://0.0.0.0:8080\n\n## Authors\n\nDavy Braun ([https://github.com/dheavy](https://github.com/dheavy))\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE.md file for details\n\n## Acknowledgments\n\n[Ginetta](http://ginetta.net/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdheavy%2Fgithub-api-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdheavy%2Fgithub-api-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdheavy%2Fgithub-api-proxy/lists"}