{"id":23611512,"url":"https://github.com/rawsashimi1604/sashimi-gateway","last_synced_at":"2026-04-29T10:34:43.080Z","repository":{"id":187472954,"uuid":"676977279","full_name":"rawsashimi1604/sashimi-gateway","owner":"rawsashimi1604","description":"(WIP) A lightweight API Gateway built in Golang and React Typescript to learn more about API infrastructure and microservices.","archived":false,"fork":false,"pushed_at":"2024-01-16T02:27:40.000Z","size":1631,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-24T10:04:53.224Z","etag":null,"topics":["api","api-gateway","docker-compose","golang","microservices","rest-api","reverse-proxy"],"latest_commit_sha":null,"homepage":"","language":"Go","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/rawsashimi1604.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":"2023-08-10T12:59:15.000Z","updated_at":"2023-09-26T14:23:52.000Z","dependencies_parsed_at":"2024-06-20T20:06:56.859Z","dependency_job_id":null,"html_url":"https://github.com/rawsashimi1604/sashimi-gateway","commit_stats":null,"previous_names":["rawsashimi1604/sashimi-gateway"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rawsashimi1604/sashimi-gateway","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rawsashimi1604%2Fsashimi-gateway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rawsashimi1604%2Fsashimi-gateway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rawsashimi1604%2Fsashimi-gateway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rawsashimi1604%2Fsashimi-gateway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rawsashimi1604","download_url":"https://codeload.github.com/rawsashimi1604/sashimi-gateway/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rawsashimi1604%2Fsashimi-gateway/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32422093,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["api","api-gateway","docker-compose","golang","microservices","rest-api","reverse-proxy"],"created_at":"2024-12-27T16:16:01.408Z","updated_at":"2026-04-29T10:34:43.063Z","avatar_url":"https://github.com/rawsashimi1604.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sashimi API Gateway\n\n\u003cimg width=\"1506\" alt=\"image\" src=\"https://github.com/rawsashimi1604/sashimi-gateway/assets/75880261/ba4e4282-1faa-404d-804a-cdca5ada0fbd\"\u003e\n\n## WORK IN PROGRESS\n\n\u003cp\u003eA Lightweight API Gateway built in Golang to learn more about API infrastructure and microservices\u003c/p\u003e\n\n## Architecture\n\n\u003cimg width=\"773\" alt=\"image\" src=\"https://github.com/rawsashimi1604/sashimi-gateway/assets/75880261/d8f3da11-2636-4b74-b59a-110c2e648642\"\u003e\n## Reverse Proxy\n\u003cimg width=\"1287\" alt=\"image\" src=\"https://github.com/rawsashimi1604/sashimi-gateway/assets/75880261/e90b1b0a-ff5d-440c-84e3-66a113795eab\"\u003e\n\n## Features\n\n- Request Analytics\n- Authentication Provider\n- Rate Limiting\n- Admin API (API Onboarding and offboarding)\n- Reverse Proxy\n- API Health Checks\n- GUI Application\n\n## Functional Requirements\n\n### Request Routing\n\n- The API gateway should be able to route incoming HTTP(S) requests to specific services based on URL paths, HTTP methods, and other request attributes.\n\n### Authentication \u0026 Authorization\n\n- The gateway should be able to validate tokens (e.g., JWT) and decide if a request should proceed.\n\n### Rate Limiting\n\n- To prevent abuse, the gateway should limit the number of requests a client can make in a given time frame. This could be global, per user, per IP, or per service.\n\n### Logging \u0026 Monitoring\n\n- All requests and responses should be logged for auditing and debugging purposes.\n- Integrations with monitoring tools to track response times, error rates, and other important metrics.\n\n### Service Discovery Integration\n\n- As services can be dynamically added or removed, the API gateway should integrate with service discovery mechanisms to know where to route requests.\n\n### Security\n\n- Support for HTTPS with SSL/TLS termination.\n\n### Health Checks\n\n- The gateway should implement periodic health checks to verify the status and availability of integrated API services.\n- The health check mechanism should be configurable, allowing for adjustments to the frequency and conditions of checks.\n\n## To do\n\n- [ ] Requires big infrastructure refactor (code is messy and in a POC state) can consider clean architecture in golang or domain driven design\n- [ ] Split the rev. proxy, cron jobs, admin api into different microservices, write docker-compose to start all containers easily\n- [ ] Introduce redis as caching (lazy loading or write through)\n- [ ] Introduce rate limiting into rev. proxy\n- [ ] Incorporate credentials into manager GUI and test functionality\n- [ ] Write unit tests, integration tests and e2e tests\n- [ ] Write simple script to startup service with configured environment variables OR kubernetes/helm to deploy\n\n## Multiple Golang applications\n\n```\ngo work init\ngo work use ./admin-api ./salmon-api ./tuna-api\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frawsashimi1604%2Fsashimi-gateway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frawsashimi1604%2Fsashimi-gateway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frawsashimi1604%2Fsashimi-gateway/lists"}