Stage 1: project skeleton, SQLite, migrations, HTTP server

- go mod init with chi, modernc.org/sqlite, golang.org/x/crypto
- Custom embedded migration runner (no CGO dependency)
- Config from TERDUT_ADDR / TERDUT_DB_PATH env vars
- chi router with /healthz endpoint
- Graceful shutdown on SIGINT/SIGTERM
This commit is contained in:
Niklas Ye
2026-05-20 21:41:40 +02:00
parent 5f458868b0
commit 0387e1e017
7 changed files with 253 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
package api
import (
"database/sql"
"encoding/json"
"net/http"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
)
func NewRouter(db *sql.DB) http.Handler {
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
r.Get("/healthz", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
})
return r
}