package main import ( "encoding/json" "log/slog" "net/http" "os" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" ) func main() { logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) slog.SetDefault(logger) r := chi.NewRouter() r.Use(middleware.Logger) r.Use(middleware.Recoverer) // Health check r.Get("/health", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(map[string]string{"status": "ok"}) }) // API routes r.Route("/api/v1", func(r chi.Router) { r.Get("/example", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(map[string]string{ "message": "Hello from {{PROJECT_NAME}}", }) }) }) port := os.Getenv("PORT") if port == "" { port = "8080" } slog.Info("starting server", "port", port) if err := http.ListenAndServe(":"+port, r); err != nil { slog.Error("server failed", "error", err) os.Exit(1) } }