algorembrant's picture
Upload 66 files
ed5e325 verified
package main
import (
"log"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/logger"
"github.com/user/polymarket-trader/internal/adapters/polymarket"
"github.com/user/polymarket-trader/internal/api"
"github.com/user/polymarket-trader/internal/config"
"github.com/user/polymarket-trader/internal/core"
)
func main() {
// Load Config
cfg := config.LoadConfig()
// Initialize Adapters
pmClient := polymarket.NewClient(cfg)
pmWS := polymarket.NewWSClient()
// Start WS connection (in background)
if err := pmWS.Connect(); err != nil {
log.Printf("Warning: Failed to connect to Polymarket WS: %v", err)
}
// Initialize Core Services
copyEngine := core.NewCopyEngine(pmClient, pmWS)
copyEngine.Start()
discoveryService := core.NewTraderDiscoveryService()
// Initialize Handler
h := api.NewHandler(discoveryService, copyEngine)
// Initialize Fiber app
app := fiber.New(fiber.Config{
AppName: "Polymarket Trader Engine",
})
// Middleware
app.Use(logger.New())
app.Use(cors.New())
// Routes
api.SetupRoutes(app, h)
// Health Check
app.Get("/health", func(c *fiber.Ctx) error {
return c.JSON(fiber.Map{
"status": "ok",
"uptime": "running",
"env": cfg.ServerPort,
})
})
// Start Server
log.Printf("Starting server on port %s", cfg.ServerPort)
log.Fatal(app.Listen(":" + cfg.ServerPort))
}