package main import ( "log" "net/http" "os" ) func main() { dbPath := os.Getenv("DB_PATH") if dbPath == "" { dbPath = "./timetracking.db" } db := InitDB(dbPath) defer db.Close() app := &App{DB: db} // Public routes http.HandleFunc("/api/login", CORS(app.LoginHandler)) // Protected routes http.HandleFunc("/api/schedules", CORS(AuthMiddleware(app.GetSchedulesHandler))) http.HandleFunc("/api/time-entries", CORS(AuthMiddleware(app.CreateTimeEntryHandler))) http.HandleFunc("/api/my-time-entries", CORS(AuthMiddleware(app.GetMyTimeEntriesHandler))) // Admin routes http.HandleFunc("/api/admin/schedules", CORS(AdminMiddleware(app.CreateScheduleHandler))) http.HandleFunc("/api/admin/schedules/delete", CORS(AdminMiddleware(app.DeleteScheduleHandler))) http.HandleFunc("/api/admin/users", CORS(AdminMiddleware(app.CreateUserHandler))) http.HandleFunc("/api/admin/users/list", CORS(AdminMiddleware(app.GetUsersHandler))) http.HandleFunc("/api/admin/time-entries", CORS(AdminMiddleware(app.GetAllTimeEntriesHandler))) // Serve frontend fs := http.FileServer(http.Dir("./static")) http.Handle("/", fs) port := os.Getenv("PORT") if port == "" { port = "8080" } log.Printf("Server starting on port %s", port) log.Fatal(http.ListenAndServe(":"+port, nil)) }