Building This Website

#meta #engineering

I rebuilt my website. Here’s how it works.

The Problem

I wanted a simple setup:

The Architecture

Two repositories:

  1. part-of-my-brain - My Obsidian vault (public)
  2. johnjeong - The Astro site that renders it

The vault contains four folders:

The site pulls content via git submodule. When I push to either repo, the site rebuilds.

Content as Markdown

Each content type has a simple frontmatter schema.

Essays:

---
title: "Essay Title"
created_at: 2026-01-02
published: true
tags: [philosophy, tech]
---

Journals have no frontmatter - the date comes from the filename (2026_01_02.md).

Inspirations include the source type:

---
title: "Steve Jobs Stanford Commencement"
created_at: 2026-01-02
type: youtube
youtube_video_id: "UF8uR6Z6KLc"
speaker: "Steve Jobs"
---

Lessons track the author:

---
title: "Traction"
author: "Gabriel Weinberg"
created_at: 2026-01-02
type: book
---

Comments via GitHub

I use Giscus for comments. When someone comments on an essay, it creates a discussion in the vault repo’s GitHub Discussions. No database, no auth system to maintain.

Each content type maps to a discussion category:

Questions

I added a Questions category in GitHub Discussions. The site has a form that submits questions directly there. It’s like a self-hosted AMA.

Why This Works

  1. Obsidian is my CMS - I write where I already take notes
  2. Git is my sync - Version history, backup, collaboration
  3. GitHub is my community layer - Discussions for comments and Q&A
  4. Astro is my renderer - Fast static site, markdown-native

The whole thing is just markdown files and a static site generator. No database, no CMS admin panel, no complexity.