rudraanshpatel.in work-in-progress
The site you're reading right now. Hand-written HTML and CSS, no framework, no build step. Hosted on GitHub Pages with a custom domain. The whole thing is small enough to fit on a floppy disk — assuming anyone still owned one.
I started this site three times. The first two attempts were framework-heavy and I lost interest in writing anything on them within a week. This is the third attempt, and the one I've actually been adding to.
A document-first personal website. The homepage is a dense
GCC-style directory — intro paragraph, two content columns
(projects, achievements, now, skills), and a narrow right sidebar
with blue heading bars. Deeper pages (projects, blog, now) live in
their own folders so the URLs stay clean: no .html
extensions anywhere.
The aesthetic is borrowed from gcc.gnu.org and pre-2010 personal sites: warm grey paper, Georgia serif body, classic blue underlined links with a yellow highlighter on hover. The signature visual touch is a chunky Mac OS 8 scrollbar on bounded scroll widgets — like the post list on the blog index.
I gave myself a few rules going in. Most of them held.
- System fonts only (Georgia & Courier New). No web font loads.
- No JavaScript on the homepage. The site works fully without it.
- One stylesheet for the whole site. No CSS-in-JS, no preprocessors, no Tailwind.
- Every page printable.
@media printrules from day one. - No
.htmlin any URL.
Every page is a static index.html in its own folder,
which gives clean URLs without any server-side routing. The
stylesheet lives at the root and is shared across every page, so
a visitor downloads it once and the browser caches it for every
subsequent page they visit.
The only piece of JavaScript on the whole site is the LeetCode redirect at /<number> — documented as its own project. Everything else is plain HTML.
Hand-writing every page means I can't reuse the header or sidebar via a component — if I change one, I change all of them. For a small site this is fine; for a larger one I'd reach for a static-site generator like Eleventy. The break-even point, I'd guess, is somewhere around twenty pages.
The choice of system fonts gives me zero font-loading flash but means visitors on Linux without Georgia installed see a different serif. I think that's a fair price for the speed.
You can do a lot with very little. The hardest part wasn't writing the code — it was committing to one aesthetic and resisting the urge to add a fifth font, a sixth colour, a seventh widget. Every framework I tried earlier had given me too many primitives, and the result felt like everyone else's site.
The deeper lesson: the medium of a personal site is the act of
maintaining it. A site I can edit in any text editor and push
with one command is a site I'll actually keep updating. A site
that needs npm install to render is one I'll
eventually abandon.
A proper /now page. RSS feed for the blog. A few
easter eggs that aren't visible from the homepage. And eventually,
a writeup of every visual decision in a single page that links to
the relevant CSS lines — partly as a design doc for me,
partly as a guide for anyone who wants to fork the repo.