Keeping it minimal
engineeringprocess
The fastest way to kill a side project is to let it grow before it exists. Here are the constraints I lean on to keep things shippable.
Start with the smallest thing that renders
Before wiring up data, routing, or theming, get one page on the screen. A blank page you can see beats a perfect architecture you can't.
Prefer data over abstraction
For a portfolio, projects are just an array:
type Project = {
title: string;
description: string;
tags: string[];
};
const projects: Project[] = [
{ title: "Pulse", description: "A tiny uptime monitor.", tags: ["Go"] },
];No CMS, no database. When I outgrow the array, I'll know exactly what shape I need.
Let the theme be boring
Black and white, one font, generous spacing. Constraints like a two-color palette remove a hundred small decisions and, honestly, tend to look better anyway.
The rule of three
If I can't describe the project in three sentences, it's doing too much. This site is: home, projects, writing. That's the whole spec — and that's why it's done.