PageSourceSearch

https://cawoodm.github.io/

html cawoodm.github.io collected 2026-10-03 08:45:38 UTC 9,213 bytes, 215 lines download raw bytes

1<!doctype html>
2<html lang="en">
3  <head>
4    <meta charset="utf-8" />
5    <meta name="viewport" content="width=device-width, initial-scale=1" />
6    <title>Marc Cawood</title>
7    <meta
8      name="description"
9      content="Personal projects by Marc Cawood — local-first browser apps, wikis, and games."
10    />
11    <link rel="icon" href="favicon.svg" type="image/svg+xml" />
12    <link rel="alternate icon" href="favicon.ico" />
13    <link rel="stylesheet" href="css/style.css" />
14  </head>
15  <body>
16    <header class="site-header">
17      <div class="wrap">
18        <a class="brand" href="/">Marc <span>Cawood</span></a>
19        <nav>
20          <a href="//github.com/cawoodm" title="GitHub" aria-label="GitHub">
21            <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
22              <path
23                d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"
24              />
25            </svg>
26            <span class="sr-only">GitHub</span>
27          </a>
28          <a
29            href="//www.linkedin.com/in/marc-cawood-83923283/"
30            title="LinkedIn"
31            aria-label="LinkedIn"
32          >
33            <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
34              <path
35                d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.446-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zM7.119 20.452H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"
36              />
37            </svg>
38            <span class="sr-only">LinkedIn</span>
39          </a>
40        </nav>
41      </div>
42    </header>
43
44    <main class="wrap">
45      <section class="hero">
46        <p class="eyebrow">Full-stack developer &amp; tinkerer</p>
47        <h1>I build small tools that run entirely in your browser.</h1>
48        <p class="lead">
49          No servers, no signup, no lock-in — local-first apps, wikis, and the
50          occasional game.
51        </p>
52      </section>
53
54      <section class="projects">
55        <div class="section-heading">
56          <h2>Recent projects</h2>
57        </div>
58
59        <div class="grid">
60          <article class="card" style="--accent: #4fd1a3">
61            <div class="card-icon"><img src="icons/twikki.svg" alt="" /></div>
62            <h3><a href="twikki/">TWikki</a></h3>
63            <p class="tag">Offline-first wiki</p>
64            <p class="desc">
65              A cloud-native, extensible wiki inspired by TiddlyWiki —
66              auto-saves to your browser and syncs across devices via GitHub.
67            </p>
68            <a class="card-link" href="twikki/">Demo →</a>
69            <a
70              class="card-github"
71              href="//github.com/cawoodm/twikki"
72              target="_blank"
73              rel="noopener"
74              title="View source on GitHub"
75              aria-label="View source on GitHub"
76            ></a>
77          </article>
78
79          <article class="card" style="--accent: #f0a13a">
80            <div class="card-icon"><img src="icons/cmsfree.svg" alt="" /></div>
81            <h3><a href="cmsfree-example/">CMSFree</a></h3>
82            <p class="tag">Backend-less CMS</p>
83            <p class="desc">
84              Edit a static site right in the browser and publish plain HTML —
85              no server, no database. This is a live example site built with it.
86            </p>
87            <a class="card-link" href="cmsfree-example/">Demo →</a>
88            <a
89              class="card-github"
90              href="//github.com/cawoodm/cmsfree"
91              target="_blank"
92              rel="noopener"
93              title="View source on GitHub"
94              aria-label="View source on GitHub"
95            ></a>
96          </article>
97
98          <article class="card" style="--accent: #3bc274">
99            <div class="card-icon"><img src="icons/fintool.svg" alt="" /></div>
100            <h3><a href="fintool/">FinTool</a></h3>
101            <p class="tag">Personal finance</p>
102            <p class="desc">
103              Drop in CSVs of income, categories and payments to get charts,
104              tables, and a chat tab that talks to your own data via Claude.
105            </p>
106            <a class="card-link" href="fintool/">Demo →</a>
107            <a
108              class="card-github"
109              href="//github.com/cawoodm/fintool"
110              target="_blank"
111              rel="noopener"
112              title="View source on GitHub"
113              aria-label="View source on GitHub"
114            ></a>
115          </article>
116
117          <article class="card" style="--accent: #3ba3d6">
118            <div class="card-icon">
119              <img src="icons/easydbaccess.svg" alt="" />
120            </div>
121            <h3><a href="easydbaccess/">easyDBAccess</a></h3>
122            <p class="tag">In-browser database</p>
123            <p class="desc">
124              Drag in a CSV or JSON file and get a real, sortable, filterable
125              table — windowed, plugin-extensible, and synced via a Gist or your
126              own tiny server.
127            </p>
128            <a class="card-link" href="easydbaccess/">Demo →</a>
129            <a
130              class="card-github"
131              href="//github.com/cawoodm/easydbaccess"
132              target="_blank"
133              rel="noopener"
134              title="View source on GitHub"
135              aria-label="View source on GitHub"
136            ></a>
137          </article>
138
139          <article class="card" style="--accent: #9a7ae0">
140            <div class="card-icon">
141              <img src="icons/minnidbmax.svg" alt="" />
142            </div>
143            <h3><a href="minnidbmax/">MinniDBMax</a></h3>
144            <p class="tag">In-browser database</p>
145            <p class="desc">
146              The original windowed in-browser database with CSV/JSON import and
147              export — now succeeded by easyDBAccess.
148            </p>
149            <a class="card-link" href="minnidbmax/">Demo →</a>
150            <a
151              class="card-github"
152              href="//github.com/cawoodm/minnidbmax"
153              target="_blank"
154              rel="noopener"
155              title="View source on GitHub"
156              aria-label="View source on GitHub"
157            ></a>
158          </article>
159
160          <article class="card" style="--accent: #e8536f">
161            <div class="card-icon">
161<img src="icons/expenses.svg" alt="" /></div>
162            <h3><a href="expenses/">Goal Tracker</a></h3>
163            <p class="tag">Finance goals</p>
164            <p class="desc">
165              An Ionic app for tracking savings goals alongside everyday
166              expenses, side by side.
167            </p>
168            <a class="card-link" href="expenses/">Demo →</a>
169            <a
170              class="card-github"
171              href="//github.com/cawoodm/goal-tracker"
172              target="_blank"
173              rel="noopener"
174              title="View source on GitHub"
175              aria-label="View source on GitHub"
176            ></a>
177          </article>
178        </div>
179      </section>
180
181      <section class="archive">
182        <div class="section-heading">
183          <h2>Games</h2>
184        </div>
185        <ul class="archive-list">
186          <li><a href="//github.com/cawoodm/mineblast">Mineblast</a></li>
187          <li><a href="rockdodger/">Rock Dodger</a></li>
188          <li><a href="applebees/">Apple-Beeezz</a></li>
189          <li><a href="tie-flighter/">Tie Flighter</a></li>
190          <li><a href="get-lost/">Get LOST Hombre!</a></li>
191          <li><a href="tennis/">Pong Tennis</a></li>
192          <li><a href="solitaire/">Solitaire</a></li>
193          <li><a href="js13k2018/">JS13K 2018 — Offline Pizza</a></li>
194        </ul>
195      </section>
196
197      <section class="archive">
198        <div class="section-heading">
199          <h2>Archived &amp; legacy</h2>
200        </div>
201        <ul class="archive-list">
202          <li><a href="//github.com/cawoodm/powowshell">PowowShell</a></li>
203          <li><a href="tiddlywiki.html">TiddlyWiki demo</a></li>
204          <li><a href="fish-reader/">Fish Reader</a></li>
205          <li><a href="canvas-particles/">Canvas Particles</a></li>
206        </ul>
207      </section>
208    </main>
209
210    <footer class="site-footer wrap">
211      <span>&copy; 2026 Marc Cawood</span>
212      <a href="//github.com/cawoodm">github.com/cawoodm</a>
213    </footer>
214  </body>
215</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.