How abdulabdullah/go-guard works
Go-Guard is an HTTP API gateway: it loads and validates configuration, assembles request middleware and route handlers, then proxies matching requests to configured upstreams. The README documents route matching, prefix handling, method restrictions, JWT authentication, token-bucket limiting, CORS, request IDs, recovery, logging, and Prometheus metrics. Source excerpts confirm the server assembly, proxy routing, limiter, and several middleware behaviors; some route-handler wiring is only partially sampled, so uncertain internal sequencing is omitted.
Main entry points: main.go HTTP server · metrics.go Prometheus metrics · proxy.go Route handler · ratelimit.go Rate-limit middleware
Components 18
Gateway runtime
- HTTP server
cmd/server/main.go - Configuration
config/config.go - Health probes
cmd/server/main.go
Routing and proxy
- Route dispatcher
pkg/proxy/proxy.go - Route handler
pkg/proxy/proxy.go
Request controls
- Rate-limit middleware
pkg/middleware/ratelimit.go - Token-bucket limiter
pkg/limiter/limiter.go - JWT authentication
pkg/middleware/jwt.go - CORS middleware
pkg/middleware/cors.go - Request ID
pkg/middleware/request_id.go - Panic recovery
pkg/middleware/recovery.go
Observability
- Structured logger
pkg/middleware/logger.go - Metrics middleware
pkg/middleware/metrics.go - Prometheus metrics
pkg/middleware/metrics.go
Other components
- API client
- Upstream services
- Metrics scraper
- Log output
Connections 25
- API client → HTTP server: sends requests
- HTTP server → Configuration: loads config
- HTTP server → Route dispatcher: initializes router
- HTTP server → Health probes: registers probes
- HTTP server → Rate-limit middleware: wraps handler
- HTTP server → Metrics middleware: wraps handler
- HTTP server → Structured logger: wraps handler
- HTTP server → CORS middleware: wraps handler
- HTTP server → Request ID: wraps handler
- HTTP server → Panic recovery: wraps handler
- HTTP server → Token-bucket limiter: creates limiter
- HTTP server → Prometheus metrics: creates metrics
- Route dispatcher → Route handler: dispatches match
- Route handler → Upstream services: proxies request
- Route handler → JWT authentication: applies auth
- Route handler → Token-bucket limiter: uses route limiter
- Rate-limit middleware → Token-bucket limiter: checks allowance
- Rate-limit middleware → Prometheus metrics: records blocks
- JWT authentication → Prometheus metrics: records denials
- Panic recovery → Prometheus metrics: records panics
- Metrics middleware → Prometheus metrics: records requests
- Route handler → Prometheus metrics: records upstream time
- Metrics scraper → Prometheus metrics: scrapes endpoint
- Structured logger → Log output: writes logs
- Health probes → API client: returns status