package httpapi import ( "encoding/json" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" "log/slog" "net/http" ) // NewRouter registers the public HTTP interface independently of server startup. func NewRouter() http.Handler { r := chi.NewRouter() r.Use(middleware.RequestID, middleware.RealIP, middleware.Logger, middleware.Recoverer) r.Get("/health", func(w http.ResponseWriter, r *http.Request) { writeJSON(w, map[string]string{"status": "ok"}) }) r.Route("/api", func(r chi.Router) { r.Get("/test", func(w http.ResponseWriter, r *http.Request) { writeJSON(w, map[string]string{"message": "API connection successful"}) }) }) return r } func writeJSON(w http.ResponseWriter, value any) { w.Header().Set("Content-Type", "application/json") if err := json.NewEncoder(w).Encode(value); err != nil { slog.Error("write response", "error", err) } }