package main import ( "net/http" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" ) func main() { // Create a new router r := chi.NewRouter() // Add some middleware for logging and recover r.Use(middleware.Logger) r.Use(middleware.Recoverer) // Register the hello world handler at the root path r.Get("/", helloHandler) // Serve static HTML files from the "static" directory // (e.g., /static/index.html will be accessible at /static/index.html) FileServer(r, "/static", http.Dir("./static")) // Start the HTTP server http.ListenAndServe(":8080", r) } // helloHandler responds with a simple "Hello, World!" message. func helloHandler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, World!")) } // FileServer sets up a http.FileServer handler for serving static files. func FileServer(r chi.Router, publicPath string, root http.FileSystem) { if publicPath == "" { publicPath = "/" } // Ensure the path ends with a slash if publicPath[len(publicPath)-1] != '/' { publicPath += "/" } fs := http.StripPrefix(publicPath, http.FileServer(root)) r.Get(publicPath+"*", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fs.ServeHTTP(w, r) })) }