summaryrefslogtreecommitdiff
path: root/server/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/main.go')
-rw-r--r--server/main.go37
1 files changed, 37 insertions, 0 deletions
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)
+ }
+}