package main import ( "net/http" "git.tijl.dev/tijl/tijl.dev/internal/assets" "git.tijl.dev/tijl/tijl.dev/internal/config" "git.tijl.dev/tijl/tijl.dev/internal/i18n" "git.tijl.dev/tijl/tijl.dev/static" "git.tijl.dev/tijl/tijl.dev/views" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/filesystem" "github.com/gofiber/template/html/v2" "github.com/mikhail-bigun/fiberlogrus" log "github.com/sirupsen/logrus" ) func main() { log.SetLevel(log.DebugLevel) config.Load() assets.Load() i18n.Load() engine := html.NewFileSystem(http.FS(views.Embed), ".html") engine.AddFunc("icon", assets.Svg) app := fiber.New(fiber.Config{ Views: engine, DisableStartupMessage: true, }) app.Use(fiberlogrus.New()) app.Get("/", func(c *fiber.Ctx) error { data := getCommon(c) data["Title"] = i18n.Translate(c, "home") return c.Render("index", data, "layouts/base") }) app.Get("/blog", func(c *fiber.Ctx) error { data := getCommon(c) data["Title"] = i18n.Translate(c, "blog") return c.Render("blog", data, "layouts/base") }) app.Get("/projects", func(c *fiber.Ctx) error { data := getCommon(c) data["Title"] = i18n.Translate(c, "projects") return c.Render("projects", data, "layouts/base") }) app.Get("/about", func(c *fiber.Ctx) error { data := getCommon(c) data["Title"] = i18n.Translate(c, "about") return c.Render("about", data, "layouts/base") }) app.Get("/settings", func(c *fiber.Ctx) error { lang := c.Query("lang") redirectURL := c.Query("redirect") if lang != "" { c.Cookie(&fiber.Cookie{ Name: "language", Value: lang, Secure: false, }) } if redirectURL != "" { return c.Redirect(redirectURL) } return nil }) app.Use("/static", filesystem.New(filesystem.Config{ Root: http.FS(static.Embed), })) app.Use(func(c *fiber.Ctx) error { data := getCommon(c) return c.Render("404", data, "layouts/base") }) log.Fatal(app.Listen(":3000")) } func getCommon(c *fiber.Ctx) fiber.Map { return fiber.Map{ "Path": c.Path(), "Language": i18n.GetLanguage(c), "T": i18n.GetTranslations(i18n.GetLanguage(c)), } }