How antimatterr/psygateway works
This repository implements an API gateway alongside product and user HTTP services. The principal flow is an API caller reaching the gateway, which matches a configured route, applies its basic authorization check when required, resolves a backend, and proxies the request. The backend services query PostgreSQL and return JSON. The README is empty, and the gateway excerpt omits some implementation details, so the diagram includes only relationships supported by the sampled source and tree.
Main entry points: consul.go Discovery client · main.go Route matching · products/main.go Product service · users/main.go User service
Components 14
API gateway
- Gateway server
main.go - Route configuration
main.go - Route matching
main.go - Basic authorization
main.go - Request proxy
main.go
Backend services
- Product service
services/products/main.go - User service
services/users/main.go
Service discovery
- Discovery client
internal/discovery/consul.go - Consul
Persistence and logging
- Route database
postgres-init/routes.sql - Product data
postgres-init/products.sql - User data
postgres-init/users.sql - Logger
internal/logger/logger.go
Other components
- API caller
Connections 18
- API caller → Gateway server: sends request
- Gateway server → Route matching: dispatches
- Route matching → Route configuration: checks routes
- Route configuration → Route database: loads enabled routes
- Route matching → Basic authorization: checks protected route
- Route matching → Request proxy: dispatches matched route
- Request proxy → Discovery client: resolves target
- Discovery client → Consul: queries healthy services
- Request proxy → Product service: proxies product requests
- Request proxy → User service: proxies user requests
- Product service → Product data: queries products
- User service → User data: queries users
- Product service → Discovery client: registers service
- User service → Discovery client: registers and deregisters
- Discovery client → Consul: registers services
- Gateway server → Logger: logs events
- Product service → Logger: logs events
- User service → Logger: logs events