Files
Reduce/backend/main.go
Arkaprabha Chakraborty cfb28b709f fix: remove an unused feat
2026-02-13 01:09:23 +05:30

68 lines
1.6 KiB
Go

package main
import (
"net/http"
"os"
"github.com/joho/godotenv"
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
)
func main() {
godotenv.Load()
defer db.Close()
e := echo.New()
// Frontend URL for CORS
frontendURL := os.Getenv("BASE_URL")
if frontendURL == "" {
frontendURL = "http://localhost:5173"
}
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{frontendURL},
AllowMethods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete},
AllowHeaders: []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept, echo.HeaderAuthorization},
AllowCredentials: true,
}))
// Health
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Backend is running alright.\n")
})
// Auth
e.POST("/auth/register", register)
e.POST("/auth/login", login)
e.POST("/auth/logout", logout)
e.GET("/auth/me", getMe, JWTMiddleware)
// User account management
user := e.Group("/user", JWTMiddleware)
user.GET("/stats", getUserStats)
user.PUT("/password", updatePassword)
user.DELETE("/account", deleteAccount)
// Public link routes (optional auth for shorten)
e.POST("/shorten", shortenURL, OptionalJWTMiddleware)
e.GET("/:code", fetchLURL, OptionalJWTMiddleware)
e.POST("/:code/verify", verifyAndRedirect)
// Authenticated link management
links := e.Group("/links", JWTMiddleware)
links.GET("", listLinks)
links.PUT("/:id", updateLink)
links.DELETE("/:id", deleteLink)
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
e.Logger.Fatal(e.Start(":" + port))
}