package main import ( "log" "net/http" "os" "path/filepath" "teraclone/internal/routes" "teraclone/internal/service" ) func main() { runServer() } func runServer() { port := os.Getenv("PORT") if port == "" { port = "8080" } dbPath := os.Getenv("TERACLONE_DB_PATH") if dbPath == "" { dbPath = filepath.Join("data", "teraclone.db") } appService, err := service.NewAppService(dbPath) if err != nil { log.Fatal(err) } defer func() { if closeErr := appService.Close(); closeErr != nil { log.Printf("sqlite close error: %v", closeErr) } }() mux := http.NewServeMux() if err := routes.Register(mux, appService); err != nil { log.Fatal(err) } addr := ":" + port log.Printf("server listening on http://localhost%s", addr) if err := http.ListenAndServe(addr, mux); err != nil { log.Fatal(err) } }