How this site works
Every page on this site is a plain Markdown file in the content/ folder. There is no database and no admin panel: write a file, commit, push, and it's live.
Publishing a post
Create a file — or scaffold one with npm run new -- writing "My title" — and add frontmatter at the top:
---
title: The case for boring startups
date: 2026-11-02
summary: One-line description used in lists, RSS and social cards.
tags: [startups, venture-building]
featured: true # show as a tile on the homepage and hub
living: true # mark as a living document that gets updated
updated: 2026-12-01
toc: true # table of contents from ## and ### headings
cover: /images/boring.jpg
draft: true # visible locally, hidden in production
---
The filename becomes the URL. 2026-11-02-the-case-for-boring-startups.md is served at /writing/the-case-for-boring-startups — the date prefix is stripped.
Sections
| Folder | URL | Extra fields |
|---|---|---|
content/writing |
/writing |
toc, living, cover |
content/research |
/research |
authors, venue, pdf, link, code |
content/ideas |
/ideas |
stage (Napkin, Exploring, Validating, Building) |
content/ventures |
/ventures |
role, status, sector, year, website, logo, group, order |
content/pages |
/<name> |
— |
content/data |
/tables/<name> |
JSON data tables |
Living documents and tables
Inspired by sites like LifeArchitect.ai, some pages are meant to be updated over time rather than published once. Add living: true and an updated: date and they show up under Living documents in the Hub.
For structured data, drop a JSON file in content/data/. It becomes a sortable, filterable table — see the example.
Footnotes and media
Footnotes work the way long-form essays need them to.1 Images go in public/images/ and are referenced as /images/name.jpg; the title becomes a caption:

PDFs for research papers go in public/papers/.
Deploying changes
On the server, git pull is enough: the server watches content/ and reloads automatically. Code or config changes need sudo systemctl restart hectorren.
Notes
-
Like this one. Write
[^1]in the text and[^1]: noteanywhere below. ↩