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="code-background"></div>
3<h1 class="code-heading">Code</h1>
4<p class="code-paragraph">
5 Outside of work I build self-hosted tools, personal websites, and whatever
6 else catches my interest. Side projects are where I experiment with new
7 technology and stay sharp since at work I stick to stable, mature frameworks.
8 There is plenty more to see on
9 <a href="https://github.com/overshard" rel="noopener noreferrer" target="_blank">my GitHub account</a>.
10</p>
11
12{{- /*
13 Three sections rather than one grid. Most of what is below is a read-only
14 snapshot now, and letting those cards sit at full strength beside the things
15 actually running would overstate all of them. The count uses the same zero
16 padded numbering as the sidebar.
17*/ -}}
18
19{{- with .Live }}
20<div class="code-sectionHead">
21 <h2 class="code-sectionTitle">Live</h2>
22 <span class="code-sectionRule"></span>
23 <span class="code-sectionCount">{{ printf "%03d" (len .) }}</span>
24</div>
25<p class="code-sectionNote code-sectionNote-live">
26 Eleven sites, one repo, one desktop at home. Every one of these is answering
27 requests right now.
28</p>
29<div class="code-projects">
30 {{- range . }}
31 <div class="code-project code-project-live" style="{{ .Delay }}">
32 <h3 class="code-projectHeading">{{ .Name }}</h3>
33 <div class="code-tags">
34 {{- range .Tech }}
35 <span class="code-tag">{{ . }}</span>
36 {{- end }}
37 </div>
38 <p class="code-projectParagraph">{{ .Description }}</p>
39 {{- if .Commit }}
40 <pre class="code-projectCommit">{{ .Commit }}</pre>
41 {{- end }}
42 <div class="code-projectButtons">
43 <a class="code-projectButton" href="{{ .Visit }}" rel="noopener noreferrer" target="_blank">Visit</a>
44 <a class="code-projectButton code-projectButton-secondary" href="{{ .Source }}" rel="noopener noreferrer" target="_blank">
45 {{ template "githubMark" }}
46 Source
47 </a>
48 </div>
49 </div>
50 {{- end }}
51</div>
52{{- end }}
53
54{{- with .Active }}
55<div class="code-sectionHead">
56 <h2 class="code-sectionTitle">Active</h2>
57 <span class="code-sectionRule"></span>
58 <span class="code-sectionCount">{{ printf "%03d" (len .) }}</span>
59</div>
60<div class="code-projects">
61 {{- range . }}
62 <div class="code-project" style="{{ .Delay }}">
63 <h3 class="code-projectHeading">{{ .Name }}</h3>
64 <div class="code-tags">
65 {{- range .Tech }}
66 <span class="code-tag">{{ . }}</span>
67 {{- end }}
68 </div>
69 <p class="code-projectParagraph">{{ .Description }}</p>
70 {{- if .Commit }}
71 <pre class="code-projectCommit">{{ .Commit }}</pre>
72 {{- end }}
73 <a class="code-projectButton" href="{{ .URL }}" rel="noopener noreferrer" target="_blank">
74 {{ template "githubMark" }}
75 GitHub
76 </a>
77 </div>
78 {{- end }}
79</div>
80{{- end }}
81
82{{- with .Archived }}
83<div class="code-sectionHead code-sectionHead-archived">
84 <h2 class="code-sectionTitle">Archived</h2>
85 <span class="code-sectionRule"></span>
86 <span class="code-sectionCount">{{ printf "%03d" (len .) }}</span>
87</div>
88<p class="code-sectionNote">
89 Read-only snapshots. Some of these still run, rebuilt in a language they did
90 not start in, and some are switched off for good.
91</p>
92<div class="code-projects code-projects-archived">
93 {{- range . }}
94 <div class="code-project code-project-archived" style="{{ .Delay }}">
95 <h3 class="code-projectHeading">{{ .Name }}</h3>
96 <div class="code-tags">
97 <span class="code-tag code-tag-archived">Archived</span>
98 {{- range .Tech }}
99 <span class="code-tag">{{ . }}</span>
100 {{- end }}
101 </div>
102 <p class="code-projectParagraph">{{ .Description }}</p>
103 <a class="code-projectButton" href="{{ .URL }}" rel="noopener noreferrer" target="_blank">
104 {{ template "githubMark" }}
105 GitHub
106 </a>
107 </div>
108 {{- end }}
109</div>
110{{- end }}
111{{ end }}
112
113{{- define "githubMark" -}}
114<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16" aria-hidden="true">
115 <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z" />
116</svg>
117{{- end -}}