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 "content" }}
2<div class="container mt-5">
3 <div class="row">
4 <div class="col">
5 <h1>{{ .Heading }}</h1>
6 </div>
7 </div>
8</div>
9<div class="container">
10 <div class="row">
11 <div class="col-sm-6">
12 {{- template "search_form" .Query }}
13 </div>
14 </div>
15</div>
16<div class="container mt-5">
17 <div class="row">
18 {{- if .Posts }}
19 {{- range .Posts }}
20 <div class="col-12 col-sm-6 col-md-4 mb-5">
21 {{- template "post_card" . }}
22 </div>
23 {{- end }}
24 {{- else if .NoResults }}
25 <div class="col">
26 {{- template "alert" dict "Kind" "warning" "Message" "No results found, please try something else." }}
27 </div>
28 {{- else }}
29 <div class="col">
30 {{- template "alert" dict "Kind" "info" "Message" "Submit a query above to see some results." }}
31 </div>
32 {{- end }}
33 </div>
34
35 {{- if .RandomPosts }}
36 <div class="container mt-5 d-print-none">
37 <div class="row">
38 <div class="col">
39 <div class="section-label mb-1">Random posts</div>
40 <p class="text-muted">If you don't know what to search for check out some of these posts.</p>
41 </div>
42 </div>
43 <div class="row">
44 {{- range .RandomPosts }}
45 <div class="col-12 col-sm-6 col-md-4 mb-5">
46 {{- template "post_card" . }}
47 </div>
48 {{- end }}
49 </div>
50 </div>
51 {{- end }}
52</div>
53{{ end }}