feat: add handlers to serve template and styles

This commit is contained in:
Stevan Freeborn
2025-11-15 09:00:06 -06:00
parent b42c63532f
commit 03cbe49a30
10 changed files with 225 additions and 2 deletions
+54
View File
@@ -0,0 +1,54 @@
/* CSS Resets */
* {
margin: 0;
padding: 0;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
button {
background: none;
border: none;
outline: none;
cursor: pointer;
}
a {
text-decoration: none;
color: inherit;
}
ul {
list-style-type: none;
}
img {
max-width: 100%;
display: block;
}
table {
width: 100%;
border-collapse: collapse;
}
/* Site Styles */
:root {
font-size: 16px;
}
html,
body {
height: 100%;
}
+13
View File
@@ -0,0 +1,13 @@
// Package assets contains embedded static assets for the application.
package assets
import (
"embed"
)
var (
//go:embed "templates/*"
Templates embed.FS
//go:embed "css/*"
CSS embed.FS
)
+12
View File
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Stevan's Links</title>
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<h1 class="red">Stevan's Links</h1>
</body>
</html>
+24
View File
@@ -0,0 +1,24 @@
// Package handlers provides HTTP handlers for the web application.
package handlers
import (
"net/http"
"text/template"
"github.com/StevanFreeborn/links.stevanfreeborn.com/internal/assets"
)
func Index(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFS(assets.Templates, "templates/index.gohtml")
if err != nil {
http.Error(w, "Unable to load template", http.StatusInternalServerError)
return
}
t.Execute(w, nil)
}
func CSS(w http.ResponseWriter, r *http.Request) {
http.ServeFileFS(w, r, assets.CSS, r.URL.Path)
}
+16
View File
@@ -0,0 +1,16 @@
// Package middleware provides HTTP middleware for the web application.
package middleware
import (
"log"
"net/http"
"time"
)
func Logging(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
next.ServeHTTP(w, r)
log.Printf("%s %s %s", r.Method, r.RequestURI, time.Since(start))
})
}