package main import ( "log" "net/http" "os" "github.com/writekitapp/writekit/internal/db" "github.com/writekitapp/writekit/internal/server" "github.com/writekitapp/writekit/internal/storage" "github.com/writekitapp/writekit/internal/tenant" ) func main() { database, err := db.Connect("./internal/db/migrations") if err != nil { log.Fatalf("postgres: %v", err) } defer database.Close() dataDir := os.Getenv("DATA_DIR") if dataDir == "" { dataDir = "./data" } pool := tenant.NewPool(dataDir) defer pool.Close() cache := tenant.NewCache() defer cache.Close() var storageClient storage.Client if os.Getenv("R2_ACCOUNT_ID") != "" { storageClient, err = storage.NewR2Client() if err != nil { log.Printf("storage: %v (continuing without storage)", err) } } srv := server.New(database, pool, cache, storageClient) srv.StartAnalyticsSync() port := os.Getenv("PORT") if port == "" { port = "8080" } log.Printf("listening on :%s", port) log.Fatal(http.ListenAndServe(":"+port, srv)) }