felt/cmd/leaf/main.go
Mikkel Georgsen af13732b2b feat(01-01): initialize Go module, dependency tree, and project scaffold
- Go module at github.com/felt-app/felt with go-libsql pinned to commit hash
- Full directory structure per research recommendations (cmd/leaf, internal/*, frontend/)
- Makefile with build, run, run-dev, test, frontend, all, clean targets
- LibSQL database with WAL mode, foreign keys, and embedded migration runner
- SvelteKit SPA stub served via go:embed
- Package stubs for all internal packages (server, nats, store, auth, clock, etc.)
- go build and go vet pass cleanly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 03:34:44 +01:00

51 lines
1.3 KiB
Go

package main
import (
"flag"
"fmt"
"log"
"os"
"github.com/felt-app/felt/internal/store"
)
func main() {
dataDir := flag.String("data-dir", "./data", "Data directory for database and files")
addr := flag.String("addr", ":8080", "HTTP listen address")
devMode := flag.Bool("dev", false, "Enable development mode (applies dev seed data)")
flag.Parse()
log.SetFlags(log.LstdFlags | log.Lmsgprefix)
log.SetPrefix("felt: ")
log.Printf("starting (data-dir=%s, addr=%s, dev=%v)", *dataDir, *addr, *devMode)
// Open database (runs migrations automatically)
db, err := store.Open(*dataDir, *devMode)
if err != nil {
log.Fatalf("failed to open database: %v", err)
}
defer db.Close()
// Check first-run setup status
needsSetup, err := db.NeedsSetup()
if err != nil {
log.Fatalf("failed to check setup status: %v", err)
}
if needsSetup {
log.Printf("no operators found - first-run setup required")
log.Printf("POST /api/v1/setup to create first admin operator")
}
// Verify database is working
var one int
if err := db.QueryRow("SELECT 1").Scan(&one); err != nil {
log.Fatalf("database health check failed: %v", err)
}
log.Printf("database ready")
// Placeholder for HTTP server (will be implemented in Plan A)
_ = addr
fmt.Fprintf(os.Stderr, "felt: ready (database operational, HTTP server not yet implemented)\n")
}