diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/backend/api.go b/backend/api.go new file mode 100644 index 0000000..80b4438 --- /dev/null +++ b/backend/api.go @@ -0,0 +1,15 @@ +package main + +import "net/http" + +type ApiHandler struct { +} + +func NewApiHandler() *ApiHandler { + // TODO + return &ApiHandler{} +} + +func (api *ApiHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + // TODO +} diff --git a/backend/backend.iml b/backend/backend.iml new file mode 100644 index 0000000..eacc75a --- /dev/null +++ b/backend/backend.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/backend/go.mod b/backend/go.mod new file mode 100644 index 0000000..b5e093e --- /dev/null +++ b/backend/go.mod @@ -0,0 +1,3 @@ +module backend + +go 1.25 diff --git a/backend/main.go b/backend/main.go new file mode 100644 index 0000000..74a9a23 --- /dev/null +++ b/backend/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "log" + "net/http" + "os" +) + +func main() { + port := os.Getenv("PORT") + if port == "" { + port = "8080" + } + + staticFolder := os.Getenv("STATIC_FOLDER") + if staticFolder == "" { + staticFolder = "static" + } + + fsHandler := http.FileServer(http.Dir(staticFolder)) + apiHandler := NewApiHandler() + + mux := http.NewServeMux() + mux.Handle("/", fsHandler) + mux.Handle("/api/", apiHandler) + + log.Println("Listening on port", port) + err := http.ListenAndServe(":"+port, mux) + if err != nil { + log.Fatalln(err.Error()) + } +} diff --git a/shell.nix b/shell.nix index 40eb577..5f83469 100644 --- a/shell.nix +++ b/shell.nix @@ -1,5 +1,8 @@ { pkgs ? import {} }: pkgs.mkShell { - nativeBuildInputs = with pkgs.buildPackages; [ nodejs ]; + nativeBuildInputs = with pkgs.buildPackages; [ + go + nodejs + ]; }