peachy-go/desktop/routes/app.go

61 lines
1.5 KiB
Go
Raw Normal View History

2024-11-05 12:17:27 +00:00
package routes
import (
"log/slog"
"net/http"
"git.codemonkeysoftware.net/b/peachy-go/desktop/components"
"git.codemonkeysoftware.net/b/peachy-go/desktop/pages"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/go-chi/httplog/v2"
)
/*
Create a new chi router, configure it and return it.
*/
2024-11-15 18:55:31 +00:00
func NewChiRouter(port string) *chi.Mux {
2024-11-05 12:17:27 +00:00
r := chi.NewRouter()
logger := httplog.NewLogger("app-logger", httplog.Options{
LogLevel: slog.LevelInfo,
Concise: true,
})
// Use the logger and recoverer middleware.
r.Use(httplog.RequestLogger(logger))
r.Use(middleware.Recoverer)
/*
// ULTRA IMPORTANT : This middleware is used to prevent caching of the pages.
// Sometimes, HX requests may be cached by the browser, which may cause unexpected behavior.
r.Use(func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Cache-Control", "no-store")
next.ServeHTTP(w, r)
})
})
*/
r.Handle("/static/*", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
2024-11-15 18:55:31 +00:00
r.Get("/splash", func(w http.ResponseWriter, r *http.Request) {
slog.Info("we splashin")
HXRender(w, r, pages.Splash)
})
2024-11-05 12:17:27 +00:00
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
2024-11-15 18:55:31 +00:00
slog.Info("we homies")
2024-11-05 12:17:27 +00:00
HXRender(w, r, pages.HomePage)
})
r.Get("/hello", func(w http.ResponseWriter, r *http.Request) {
HXRender(w, r, components.HelloWorld)
})
2024-11-15 18:55:31 +00:00
go http.ListenAndServe(":"+port, r)
2024-11-05 12:17:27 +00:00
return r
}