package main import ( "log" "net/http" "os" ) func main() { databaseURL := os.Getenv("DATABASE_URL") if databaseURL == "" { databaseURL = "sqlite://./skeps.db" } rawDB, db, err := openDB(databaseURL) if err != nil { log.Fatalf("database: %v", err) } defer rawDB.Close() a := &api{db: db, hub: newHub()} mux := http.NewServeMux() mux.HandleFunc("POST /api/lists", a.createList) mux.HandleFunc("GET /api/lists/{listId}", a.getList) mux.HandleFunc("GET /api/lists/{listId}/ws", a.listSocket) mux.HandleFunc("GET /api/lists/{listId}/sublists", a.listSublists) mux.HandleFunc("POST /api/lists/{listId}/sublists", a.createSublist) mux.HandleFunc("GET /api/lists/{listId}/items", a.listItems) mux.HandleFunc("POST /api/lists/{listId}/items", a.createItem) mux.HandleFunc("PATCH /api/lists/{listId}/items/{id}", a.updateItem) mux.HandleFunc("DELETE /api/lists/{listId}/items/{id}", a.deleteItem) mux.HandleFunc("GET /healthz", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) }) if staticDir := os.Getenv("STATIC_DIR"); staticDir != "" { mux.Handle("/", spaHandler(staticDir)) } port := os.Getenv("PORT") if port == "" { port = "8080" } log.Printf("skeps backend listening on :%s", port) if err := http.ListenAndServe(":"+port, mux); err != nil { log.Fatal(err) } }