Files
Dash/webfs.go
T
arsam b2371bbb8b Import source: webfs
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
2026-09-18 23:20:27 +03:30

33 lines
662 B
Go

package main
import (
"embed"
"io/fs"
"net/http"
"path"
"strings"
)
// The built frontend is compiled into the binary, so deployment is one file.
//
//go:embed all:web/dist
var webFS embed.FS
func webHandler() http.Handler {
dist, err := fs.Sub(webFS, "web/dist")
if err != nil {
panic(err)
}
fileServer := http.FileServer(http.FS(dist))
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
p := strings.TrimPrefix(path.Clean(r.URL.Path), "/")
if p != "" {
if _, err := fs.Stat(dist, p); err != nil {
// SPA fallback: unknown paths serve the app shell.
r.URL.Path = "/"
}
}
fileServer.ServeHTTP(w, r)
})
}