Digital tools for the spaces in between. An independent studio building local-first applications. We build software that feels more human without becoming less powerful.
- Threshold – Flexible time window alarms for life-first scheduling.
- Liminal Notes – Local-first, Markdown-based note-taking.
- Flow – Calm, local-first focus sessions for intentional deep work.
- City Sim 1000 – Low-poly city simulation in the browser.
- SMDU – Terminal disk usage analyser.
- Coherence Chat Exporter – CLI for archiving AI conversations into organised, tagged Markdown across providers.
- Keep Note Converter – Installable Next.js PWA that converts pasted rich text into Google Keep-compatible markup.
This portfolio is built with modern web standards:
- Next.js 16 (App Router, Static Export)
- React 19
- Tailwind CSS 4
- TypeScript
- Metadata routes for
sitemap.xmlandrobots.txt - RSS feed generated during build
nvm use
pnpm install
pnpm devOpen http://localhost:3000 to view locally.
The repo includes a .nvmrc file so local development and GitHub Actions use the same Node.js version (22.21.1).
Environment variables used by the site:
NEXT_PUBLIC_SITE_URLorSITE_URLfor metadata, sitemap, robots, and RSS URLs (defaults tohttps://liminalhq.ca).PAGES_BASE_PATHfor GitHub Pages deployments when the site is served from a subpath.
Automated via GitHub Actions to GitHub Pages. Pushing to main builds and deploys the out/ directory.
The deploy workflow reads the Node.js version from .nvmrc, installs dependencies with pnpm, and builds the static export from out/.
Blog posts live in content/blog as Markdown files with front matter.
- Copy
content/blog/_template.mdto a new file namedYYYY-MM-DD-your-slug.md. - Fill in front matter fields:
titledate(format:YYYY-MM-DD)slug(URL path, for examplewear-os-tauri)excerpttags(string array)draft(trueorfalse)
- Write the article body in standard Markdown below the front matter.
- Run
pnpm buildand confirm the post appears at/blog.
Draft behaviour:
draft: trueposts are hidden in production builds.- Draft posts still appear during local development.
RSS feed:
- Generated at build time to
public/blog/feed.xml. - Published URL:
/blog/feed.xml. - Override site URL by setting
SITE_URLorNEXT_PUBLIC_SITE_URLduring build (default:https://liminalhq.ca).
pnpm lint
pnpm test