How blampe/rreading-glasses works
rreading-glasses is a self-hostable metadata API compatible with Readarr-style clients, with separate G——R—— and Hardcover-backed servers. The principal workflow is a client request to search or retrieve book/author metadata, through HTTP handlers and a controller, to an upstream provider and back as cached metadata; recommendations are another documented capability. The README also highlights new releases and large-author coverage. The entrypoint wiring and selected handler, controller, and provider excerpts support the main links; unsampled storage and route details are not expanded into inferred flows.
Main entry points: rghc/main.go Hardcover server · rggr/main.go G——R—— server · controller.go Metadata controller · handler.go HTTP routes
Components 18
Server entrypoints
- G——R—— server
cmd/rggr/main.go - Hardcover server
cmd/rghc/main.go
Metadata API
- HTTP routes
internal/handler.go - Metadata controller
internal/controller.go
Metadata providers
- G——R—— getter
internal/gr.go - Hardcover getter
internal/hardcover.go - G——R—— GraphQL
gr/generated.go - Hardcover GraphQL
hardcover/generated.go - GraphQL transport
internal/graphql.go - HTTP transport
internal/transport.go
Cache and operations
- Metadata cache
internal/cache.go - Cloudflare cache
internal/cloudflare.go - Persistence layer
internal/persist.go - Postgres store
internal/postgres.go - Metrics
internal/metrics.go
Other components
- Readarr client
- G——R—— service
- Hardcover service
Connections 26
- Readarr client → G——R—— server: requests metadata
README.md - Readarr client → Hardcover server: requests metadata
README.md - G——R—— server → HTTP routes: registers routes
cmd/rggr/main.go - Hardcover server → HTTP routes: registers routes
cmd/rghc/main.go - HTTP routes → Metadata controller: calls
internal/handler.go - Metadata controller → G——R—— getter: fetches metadata
- Metadata controller → Hardcover getter: fetches metadata
- G——R—— server → G——R—— getter: configures provider
cmd/rggr/main.go - Hardcover server → Hardcover getter: configures provider
cmd/rghc/main.go - G——R—— getter → G——R—— GraphQL: queries
- Hardcover getter → Hardcover GraphQL: queries
- G——R—— getter → G——R—— service: fetches metadata
- Hardcover getter → Hardcover service: fetches metadata
- G——R—— server → GraphQL transport: creates client
cmd/rggr/main.go - Hardcover server → GraphQL transport: creates client
cmd/rghc/main.go - Hardcover server → HTTP transport: configures authorization
cmd/rghc/main.go - G——R—— server → Metadata cache: configures cache
cmd/rggr/main.go - Hardcover server → Metadata cache: configures cache
cmd/rghc/main.go - G——R—— server → Metadata controller: creates controller
cmd/rggr/main.go - Hardcover server → Metadata controller: creates controller
cmd/rghc/main.go - Metadata controller → Metadata cache: reads and writes
internal/controller.go - Metadata controller → Persistence layer: persists refresh state
internal/controller.go - Persistence layer → Postgres store: stores metadata
- G——R—— server → Cloudflare cache: configures optionally
cmd/rggr/main.go - Hardcover server → Cloudflare cache: configures optionally
cmd/rghc/main.go - HTTP routes → Metrics: instruments routes
internal/handler.go