orchard
mirrorEvery site I host, in one repo, along with the Cloudflare Tunnel and Caddy that front them. It's all Go, Vite, and SQLite, and it runs on a desktop at home with nothing listening on an inbound port.
blogbuncaddycloudflare-tunneldockergogolanghomelabhtml-templatemonorepoself-hostedseosqlitestatic-sitetypstuptime-monitoringviteweb-analytics
1{{ define "main" }}
2<div class="container-fluid px-4 py-4">
3 <div class="page-head">
4 <div>
5 <div class="auth-eyebrow">activity</div>
6 <h1 class="page-title">{{ .Title }}</h1>
7 </div>
8 </div>
9
10 <div class="panel">
11 <div class="feed">
12 {{ range .Events }}
13 <div class="event {{ eventClass .Kind }}">
14 <div class="event-what">
15 {{ eventLabel .Kind }}{{ with .Detail }} <span class="text-muted">({{ . }})</span>{{ end }}
16 <div class="event-where">
17 {{ if .City }}{{ .City }}, {{ end }}{{ if .Country }}{{ .Country }}{{ else }}unknown{{ end }}
18 · {{ .IP }}{{ if .UA }} · {{ browser .UA }}{{ end }}
19 </div>
20 </div>
21 <div class="event-when">{{ when .TS }}</div>
22 </div>
23 {{ else }}
24 <p class="auth-hint mt-0 mb-0">Nothing yet.</p>
25 {{ end }}
26 </div>
27 </div>
28
29 <p class="auth-hint">The last 200 events. Everything here also ships to logging.bythewood.me, and
30 this copy exists so the page still answers when logging is what is down.</p>
31</div>
32{{ end }}