How tmzfranck/books-api-golang works
This repository is a Go HTTP API for managing books, tags, reviews, and user accounts. Clients reach resource controllers through the HTTP router; controllers validate requests and delegate domain operations to use cases, which access persistent data through repositories. User capabilities include registration, login, token refresh and revocation, email verification, and password reset. The tree also shows an in-process worker pool for background email jobs and Redis-backed authentication support. Source excerpts confirm review flows and dependency wiring; other subsystem links reflect the visible layer structure, not inspected implementations.
Main entry points: route.go HTTP routes · app.go Dependency wiring · user_usecase.go User use case · worker.go Job worker pool
Components 24
HTTP delivery
- HTTP routes
internal/delivery/http/route/route.go - Auth middleware
internal/delivery/http/middleware/auth_middleware.go - User controller
internal/delivery/http/user_controller.go - Book controller
internal/delivery/http/book_controller.go - Tag controller
internal/delivery/http/tag_controller.go - Review controller
internal/delivery/http/review_controller.go
Domain operations
- User use case
internal/usecase/user_usecase.go - Book use case
internal/usecase/book_usecase.go - Tag use case
internal/usecase/tag_usecase.go - Review use case
internal/usecase/review_usecase.go - API models
internal/model - Response converters
internal/model/converter
Persistence
- User repository
internal/repository/user_repository.go - Book repository
internal/repository/book_repository.go - Tag repository
internal/repository/tag_repository.go - Review repository
internal/repository/review_repository.go - Domain entities
internal/entity
Runtime services
- SQL database
- Redis
- Job worker pool
internal/jobs/worker.go - Email sender
internal/utils/email.go - Dependency wiring
internal/config/app.go - Web entry point
cmd/web/main.go
Other components
- API client
Connections 26
- API client → HTTP routes: sends requests
- HTTP routes → User controller: dispatches
- HTTP routes → Book controller: dispatches
- HTTP routes → Tag controller: dispatches
- HTTP routes → Review controller: dispatches
- Auth middleware → Redis: checks tokens
- User controller → User use case: invokes
- Book controller → Book use case: invokes
- Tag controller → Tag use case: invokes
- Review controller → Review use case: invokes
- User use case → User repository: uses
- Book use case → Book repository: uses
- Tag use case → Tag repository: uses
- Review use case → Review repository: queries and writes
- Review use case → Response converters: converts results
- Review repository → SQL database: reads and writes
- Review repository → Domain entities: maps records
- Web entry point → Dependency wiring: configures
- Dependency wiring → HTTP routes: registers routes
- Dependency wiring → Job worker pool: injects worker pool
- Web entry point → Job worker pool: starts and stops
- Job worker pool → Email sender: executes jobs
- User use case → Job worker pool: submits mail jobs
- User use case → Redis: uses
- Dependency wiring → SQL database: provides connection
- Dependency wiring → Redis: provides client