tracking prototype

This commit is contained in:
JurajKubrican
2025-08-13 14:22:40 +02:00
parent 6d2e54e7ad
commit 1546b0d0bc
7 changed files with 649 additions and 0 deletions

View File

@@ -50,8 +50,16 @@ var (
func main() {
e.Renderer = NewTemplates()
// Initialize tracking service
trackingService, err := util.NewTrackingService("data/tracking.db")
if err != nil {
e.Logger.Fatal("Failed to initialize tracking service:", err)
}
defer trackingService.Close()
e.Logger.SetLevel(log.DEBUG)
e.Use(middleware.Logger())
e.Use(trackingService.TrackingMiddleware())
if util.IsProd() {
e.Use(middleware.Gzip())
e.Use(middleware.HTTPSRedirect())
@@ -81,6 +89,17 @@ func main() {
e.GET("/", func(c echo.Context) error {
return c.Render(200, "index", newPage(boxes.GetBoxes()))
})
// Tracking API endpoints (protected by bearer auth if needed)
api := e.Group("/api")
if util.IsProd() {
api.Use(util.BearerAuthMiddleware())
}
api.GET("/tracking/stats", trackingService.GetEndpointStats)
api.GET("/tracking/visits", trackingService.GetRecentVisits)
api.GET("/tracking/summary", trackingService.GetTrackingSummary)
api.GET("/tracking/trends", trackingService.GetTimeTrends)
e.GET("/boxes/ws", boxes.HandleBoxesWs)
e.GET("/draw", draw.Page)