Personal Website Design

2026-06

Firstly, thank you for visiting my corner of the internet, I hope you stay a while and read a few essays. This essay is for anyone who wants to know about the layout and backend for this website. All code can be found on my github page.

This website is custom-built as a collection of static HTML files rather than using a website builder. At its core, it relies on a simple, automated pipeline built with Python that takes raw text and transforms it into the web pages you are reading now.

The Writing Environment

I write my essays as raw text files, typically using LaTeX(via MiniTex and TexStudio). LaTex was a recently new discovery for me. For those unfamiliar, it is a typesetting system which uses plain code in syntax to give you complete flexibility over your document as opposed to drag-and-drop tools in Word. This is particularly useful for math blocks, integrating figures and custom formatting. I am using it in a relatively simple way but the sky is the limit.

The Build Pipeline

To get these raw text files onto the web, I use a custom Python script that triggers a compiler that translates the LaTex syntax into standard web-readable HTML. Next the script injects this content into a HTML template. The template provides minimal CSS styling and calls MathJax which acts as an engine to handle math symbols.

Graph View

As I write, I tag my essays with core topics and sometimes link them to each other. The web of essay inter-connectedness can be seen on the graph view in the Essays tab. This is a complete rip-off from Obsidian’s graph view which I have been using for the past 3 years and highly recommend. During the build process, the pipeline compiles essay metadata into a single json, which can be then used by force-graph to read this data and render an interactive network visualisation. In this view, essays are clustered around their core themes and lines connect related pieces of writing.

Hosting and Analytics

Because the pipeline outputs basic, static HTML, the website requires virtually no computing power to run as there are no databases to query or servers to maintain. I host the site through Porkbun. For tracking viewership, I wanted to avoid invasive cookies. I embedded a tiny tracking code from GoatCounter. It is an open-source, free, privacy-friendly analytics tool for smaller websites. It doesn’t track users across the web or collect personal information, just logs anonymous pageviews so I can see what people are reading.

I hope you enjoyed visiting, I found this very satisfying to build. In the future, I might add more features such as mailing lists and a page for downloading some resources I have created so all of this is subject to change. Why not go back to the Home tab to read a random essay? Or check out the graph view in the Essays tab?