ashwani.dev
Back to blogs

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.