Jigar Gor

Writing

Rebuilding jigargor.com as a portfolio: what I kept

This site used to be the home of a streaming channel: a live badge, a counter fed by an overlay, an email list, seasons of lore, and a Worker behind it all. It is now a portfolio. This is a short note on what I kept and what I took out.

What stayed

Static Astro. Every route pre-renders to HTML. There is no client JavaScript on any page, which makes the site fast on a phone and boring to operate. The page you are reading is a file.

Git as the CMS. Case studies and posts are MDX files in src/content, validated at build by a schema. If a case study is missing its problem statement, the build fails instead of shipping a half-written page. The same is true for this post.

Cloudflare Pages, unchanged. Same repository, same npm run build, same dist output, same main branch. The deploy pipeline did not move, so the risky part of a rebuild was never the infrastructure.

One identity file. Name, role, email, and links live in src/data/profile.ts. Anything left as null, like a LinkedIn URL or a resume, hides its link everywhere instead of rendering a dead one.

What went

  • The live layer: no Worker, no Functions, no API routes, no islands.
  • The email list. If I want one back, it is one function and a form.
  • Streaming links, the seasons archive, and the economy pages. Old URLs redirect to the homepage rather than 404.
  • Anything that needed a number I could not stand behind. Empty sections are omitted, not filled in.

The old site is not lost. It lives under the stream-dream-final tag at commit a9451cd, and git checkout brings it back.

Why bother

A portfolio has one job: let someone judge the work in a few minutes. The stream site was built for a different audience and carried machinery that audience needed. Removing it made the remaining site easier to keep correct.

The three case studies, Nash AI, Gentle Stream, and Stateful Indecision, are where to start.