package main import ( "embed" "fmt" "net/http" "github.com/gin-gonic/gin" ) //go:embed static/* templates/* var fs embed.FS func main() { router := gin.Default() router.LoadHTMLGlob("templates/*") router.StaticFS("/public", http.FS(fs)) router.GET("/", getTasksListHandler) router.POST("/", upsertTaskHandler) router.Run() } func getTasksListHandler(c *gin.Context) { tasksList := getTasks() tasks := tasksList.getSortedTasks() c.HTML(http.StatusOK, "index.tmpl", gin.H{ "tasks": tasks, }) } func upsertTaskHandler(c *gin.Context) { taskPayload := TaskPayload{} if err := c.ShouldBind(&taskPayload); err != nil { fmt.Println(err) c.String(http.StatusBadRequest, "Invalid payload") } else { id := taskPayload.Id if id != 0 { updateTask(id, taskPayload) } else { addTask(taskPayload) } getTasksListHandler(c) } }