How turahe/blog-api works
This is a contracts-first Go REST backend for a multi-role blog platform. The principal workflow is a client request routed through HTTP middleware and domain handlers into a core service, which validates domain rules and uses persistence or external adapters; responses return through the HTTP layer. Major branches include identity and RBAC, content and media, comments, privacy-conscious analytics, audit/activity, and newsletter/notification delivery. The README documents capabilities beyond the sampled implementation; those branches are represented at their supported module paths, without assuming uninspected call wiring.
Main entry points: handlers HTTP Handlers · relay.go Outbox Relay · router.go HTTP Router · persistence Repositories
Components 24
HTTP API
- HTTP Router
internal/adapters/inbound/http/router.go - HTTP Handlers
internal/adapters/inbound/http/handlers - Route Registration
internal/adapters/inbound/routes
Identity Governance
- Authentication
internal/core/auth/service - User Profiles
internal/core/user/service - RBAC
internal/core/rbac/service - Impersonation
internal/core/impersonation/service
Content Community
- Posts Revisions SEO
internal/core/post/service - Categories Tags
internal/core/category/service - Comments Moderation
internal/core/comment/service - Media Transforms
internal/core/media/service - Newsletter
internal/core/newsletter/service
Analytics Audit
- Analytics
internal/core/analytics/service - Consent Privacy
internal/core/consent/service - Audit Activity
internal/core/audit/service
Runtime Integrations
- Notifications
internal/core/notification/service - Application Wiring
internal/bootstrap/app.go - Repositories
internal/adapters/outbound/persistence - PostgreSQL
internal/platform/database - Object Storage
internal/adapters/outbound/storage/s3.go - Outbox Relay
internal/adapters/outbound/outbox/relay.go - Async Consumers
cmd/worker.go
Other components
- API Client
- Message Broker
Connections 24
- API Client → HTTP Router: sends requests
- HTTP Router → Route Registration: dispatches routes
- Route Registration → HTTP Handlers: registers handlers
- HTTP Handlers → Authentication: invokes
- HTTP Handlers → User Profiles: invokes
- HTTP Handlers → RBAC: invokes
- HTTP Handlers → Impersonation: invokes
- HTTP Handlers → Posts Revisions SEO: invokes
- HTTP Handlers → Categories Tags: invokes
- HTTP Handlers → Comments Moderation: invokes
- HTTP Handlers → Media Transforms: invokes
- HTTP Handlers → Newsletter: invokes
- HTTP Handlers → Analytics: invokes
- HTTP Handlers → Consent Privacy: invokes
- HTTP Handlers → Audit Activity: invokes
- HTTP Handlers → Notifications: invokes
- Application Wiring → HTTP Router: builds server
- Application Wiring → Repositories: wires services
- Repositories → PostgreSQL: reads and writes
- Media Transforms → Object Storage: stores originals
- Outbox Relay → Repositories: reads outbox
- Async Consumers → Outbox Relay: runs relay
- Outbox Relay → Message Broker: publishes events
- Async Consumers → Message Broker: consumes messages