From a3397f54c09323b972d733aa4f4e2a4eba6cebc9 Mon Sep 17 00:00:00 2001 From: Lain Iwakura Date: Wed, 25 Mar 2026 21:56:03 +0300 Subject: feat: staaatus --- server/go.mod | 3 +++ server/main.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 server/go.mod create mode 100644 server/main.go (limited to 'server') diff --git a/server/go.mod b/server/go.mod new file mode 100644 index 0000000..8b76811 --- /dev/null +++ b/server/go.mod @@ -0,0 +1,3 @@ +module blog-server + +go 1.22 diff --git a/server/main.go b/server/main.go new file mode 100644 index 0000000..bffc427 --- /dev/null +++ b/server/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "embed" + "flag" + "io/fs" + "log/slog" + "net/http" // sure, we could use fiber... but for now lets' stick with net/http to keep dependencies to a minimum + "os" +) + +//go:embed static/* +var staticFS embed.FS + +func main() { + addr := flag.String("addr", ":8080", "listen address") + flag.Parse() + + logger := slog.New(slog.NewTextHandler(os.Stdout, nil)) + slog.SetDefault(logger) + + /* strip "static/" prefix so files are served from root */ + subFS, err := fs.Sub(staticFS, "static") + if err != nil { + slog.Error("failed to create sub filesystem", "error", err) + os.Exit(1) + } + + fileServer := http.FileServer(http.FS(subFS)) + http.Handle("/", fileServer) + + slog.Info("starting server", "addr", *addr) + if err := http.ListenAndServe(*addr, nil); err != nil { + slog.Error("server failed", "error", err) + os.Exit(1) + } +} -- cgit v1.3