package app import ( "fmt" "os" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/cors" "github.com/joho/godotenv" "rul.sh/vaulterm/server/app/auth" "rul.sh/vaulterm/server/app/server" "rul.sh/vaulterm/server/db" "rul.sh/vaulterm/server/middleware" "rul.sh/vaulterm/server/utils" ) func NewApp() *fiber.App { // Load deps utils.CheckAndCreateEnvFile() godotenv.Load(utils.GetDataPath(".env")) dbUrl := os.Getenv("DATABASE_URL") if dbUrl == "" { // WAL: _journal_mode=WAL dbPath := utils.GetDataPath("data.db") dbUrl = fmt.Sprintf("file:%s?cache=shared&mode=rwc", dbPath) } db.Init(dbUrl) // Create fiber app app := fiber.New(fiber.Config{ErrorHandler: ErrorHandler}) app.Use(cors.New()) // Server info server.Router(app) // Health check app.Get("/health-check", func(c *fiber.Ctx) error { return c.SendString("OK") }) app.Use(middleware.Auth) auth.Router(app) app.Use(middleware.Protected()) InitRouter(app) return app }