feat: Sprint 0 — GoFiber + HTMX + TailwindCSS v4 scaffolding
- Go module: git.tukangketik.id/swanadiva/hostkeeper/v2 - GoFiber v2 server with static, template engine, middleware - HTMX + Alpine.js (downloaded from CDN) - TailwindCSS v4 with custom theme (Lumina System colors) - Custom CSS: dot-grid, glassmorphism, animations, toggle, modal - Layout template (sidebar nav + header + main) - Dashboard page with host list, search, filter, view toggle - Health endpoint: GET /api/health
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
package handler
|
||||
|
||||
import "github.com/gofiber/fiber/v2"
|
||||
|
||||
func Dashboard(c *fiber.Ctx) error {
|
||||
return c.Render("index", fiber.Map{
|
||||
"View": "hosts",
|
||||
"NavItems": []fiber.Map{
|
||||
{"ID": "hosts", "Label": "Hosts", "Icon": "server"},
|
||||
{"ID": "terminal", "Label": "Terminal", "Icon": "terminal"},
|
||||
{"ID": "sftp", "Label": "SFTP", "Icon": "folder-sync"},
|
||||
{"ID": "snippets", "Label": "Snippets", "Icon": "code2"},
|
||||
{"ID": "keychain", "Label": "Keychain", "Icon": "key-round"},
|
||||
{"ID": "settings", "Label": "Settings", "Icon": "settings2"},
|
||||
},
|
||||
"Title": "Hosts",
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package handler
|
||||
|
||||
import "github.com/gofiber/fiber/v2"
|
||||
|
||||
func Health(c *fiber.Ctx) error {
|
||||
return c.JSON(fiber.Map{
|
||||
"status": "ok",
|
||||
"app": "hostkeeper-v2",
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package middleware
|
||||
|
||||
import "github.com/gofiber/fiber/v2"
|
||||
|
||||
func ViewData() fiber.Handler {
|
||||
return func(c *fiber.Ctx) error {
|
||||
return c.Next()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user