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{{$d := .Data}}{{$c := $d.Ctx}}
3{{template "repohead" (dict "Ctx" $c "Tab" "files")}}
4
5<div class="toolbar">
6 {{template "refswitcher" $d}}
7 <nav class="crumbs">
8 <a href="/{{$c.Repo.Name}}/tree/{{$c.Rev}}">{{$c.Repo.Name}}</a>
9 {{range pathSegs $d.Path}} / <a href="/{{$c.Repo.Name}}/tree/{{$c.Rev}}/{{urlPath .Path}}">{{.Name}}</a>{{end}}
10 </nav>
11</div>
12
13<table class="tree">
14 <tbody>
15 {{if $d.Path}}
16 <tr class="dir"><td class="icon">{{template "icon-up"}}</td><td class="name"><a href="/{{$c.Repo.Name}}/tree/{{$c.Rev}}">..</a></td><td></td></tr>
17 {{end}}
18 {{range $d.Entries}}
19 <tr class="{{if .IsDir}}dir{{else}}file{{end}}">
20 <td class="icon">{{if .IsDir}}{{template "icon-dir"}}{{else if .IsSubmodule}}{{template "icon-sub"}}{{else}}{{template "icon-file"}}{{end}}</td>
21 <td class="name">
22 {{if .IsDir}}
23 <a href="/{{$c.Repo.Name}}/tree/{{$c.Rev}}/{{urlPath .Path}}">{{.Name}}/</a>
24 {{else if .IsSubmodule}}
25 <span class="submodule">{{.Name}} @ {{shortSHA .SHA}}</span>
26 {{else}}
27 <a href="/{{$c.Repo.Name}}/blob/{{$c.Rev}}/{{urlPath .Path}}">{{.Name}}</a>
28 {{end}}
29 </td>
30 <td class="size">{{if not .IsDir}}{{humanBytes .Size}}{{end}}</td>
31 </tr>
32 {{end}}
33 </tbody>
34</table>
35
36{{if $d.Readme}}
37 <article class="readme">
38 <div class="readmehead">{{$d.ReadmeName}}</div>
39 <div class="markdown">{{$d.Readme}}</div>
40 </article>
41{{end}}
42{{end}}