package server import ( "github.com/gin-gonic/gin" "github.com/dhao2001/mygo/internal/app" "github.com/dhao2001/mygo/internal/middleware" ) // NewRouter builds the Gin router and registers API routes. func NewRouter(webApp *app.WebApp) *gin.Engine { router := gin.New() // Request ID must be first — every subsequent middleware and handler // gets access to req_id in the context. router.Use(middleware.RequestID()) router.Use(gin.Logger()) router.Use(gin.Recovery()) v1 := router.Group("/api/v1") setupPublicRoutes(v1, webApp) setupProtectedRoutes(v1, webApp) return router }