sphexi.com v1
Problem
I wanted a personal site that was dead simple to maintain: write content in Markdown, deploy the file to the server, link to it, and that's it. No static site generator, no build step, no Node dependencies, no CMS. Just a web server serving files.
Approach
Built a single-page application from scratch using vanilla HTML, CSS, and JavaScript. The entire site was one index.html file with a custom Markdown-to-HTML converter written in JS. Content pages were plain .md files served from the same host.
Navigation worked through a mdPage URL parameter containing a base64-encoded URL pointing to the Markdown file to load. On page load, the JS would decode the parameter, fetch the Markdown file, convert it to HTML using regex-based parsing (headings, bold, italic, lists, code blocks, links, images), and inject it into a <div id="output"> element. Internal links were intercepted and re-encoded as base64 parameters to maintain the SPA routing.
The pipeline: HTML/CSS/JS load → window.onLoad fires JS → Check for mdPage in URL → Fetch that URL → Convert MD to HTML → Render to DIV
Outcome
Ran as the main sphexi.com site for several years. It worked exactly as intended for its purpose: zero dependencies, zero build steps, trivially easy to add new content. The entire site could be dropped onto any basic web server and work immediately.
Eventually retired because the SPA architecture meant search engines couldn't index any content, recruiter tools couldn't parse it, and there were no real URLs to link to or share. The v2 rebuild (this site) replaced it with static HTML pages optimized for crawlability and recruiter discoverability.