Files
goplt/docs/adr/0006-http-framework.md
0x1d 6a17236474 docs: add implementation plan, ADRs, and task tracking system
- Add comprehensive 8-phase implementation plan (docs/plan.md)
- Add 28 Architecture Decision Records (docs/adr/) covering all phases
- Add task tracking system with 283+ task files (docs/stories/)
- Add task generator script for automated task file creation
- Add reference playbooks and requirements documentation

This commit establishes the complete planning foundation for the Go
Platform implementation, documenting all architectural decisions and
providing detailed task breakdown for Phases 0-8.
2025-11-04 22:05:37 +01:00

1.4 KiB

ADR-0006: HTTP Framework

Status

Accepted

Context

The platform needs an HTTP framework for:

  • REST API endpoints
  • Middleware support (auth, logging, metrics)
  • Request/response handling
  • Route registration from modules
  • Integration with observability tools

Options considered:

  1. gin-gonic/gin - Fast, feature-rich HTTP web framework
  2. gorilla/mux - Lightweight router
  3. go-chi/chi - Lightweight, idiomatic router
  4. net/http (standard library) - No external dependency

Decision

Use gin-gonic/gin (v1.9.1+) as the HTTP framework.

Rationale:

  • Fast performance (comparable to net/http)
  • Rich middleware ecosystem
  • Excellent for REST APIs
  • Easy route grouping (useful for modules)
  • Good OpenTelemetry integration support
  • Widely used and well-documented
  • Recommended in playbook-golang.md

Consequences

Positive

  • High performance
  • Easy middleware chaining
  • Route grouping supports module architecture
  • Good ecosystem support

Negative

  • Additional dependency (though lightweight)
  • Slight learning curve for developers unfamiliar with Gin

Implementation Notes

  • Install: go get github.com/gin-gonic/gin@v1.9.1
  • Create router in internal/server/server.go
  • Use route groups for module isolation: r.Group("/api/v1/blog")
  • Add middleware stack: logging, recovery, metrics, auth (later)
  • Support graceful shutdown via fx lifecycle