# Personal Site

> My personal portfolio

- HTML version: https://robbiepalmer.me/projects/personal-site
- Status: live
- Started: 2025-11-02
- Source code: https://github.com/Robbie-Palmer/personal-site
- Live demo: https://robbiepalmer.me
- Technologies: TypeScript, Zod, Lucide React, GitHub, React, Next.js, Mise, Tailwind CSS, Turbopack, pnpm, Vitest, CodeRabbit, Terraform, Cloudflare Pages, Claude Code, Husky, GitHub Actions, Terraform Cloud, GitHub Secrets, shadcn/ui, MDX, Shiki, Fuse.js, Tailwind CSS Typography, Renovate, Mermaid, Recharts, Cloudflare DNS, Cloudflare Images, Cloudflare Terraform Provider, Embla Carousel, CodeQL, Shortcut, CLA Assistant, Cloudflare R2, PostHog, Google Gemini, Greptile, Codex, Qodo, Trivy, SonarQube, zizmor, actionlint

# Vision

This site is my personal portfolio. It provides me a space to share ideas, it helps build my network and provides
the tech stack for incubating projects.

It is a personal knowledge graph - inspired by tools like Roam Research and Obsidian,
but with full control over UI/UX, richer relations between content, and no vendor lock-in.
Those tools promised compounding returns from connected thinking but fell short.
I found them too inflexible, too siloed and did not lead to meaningful engagement.

# Problem Statement

I want:

* **A Unified presence**: One place for blog, resume, and projects instead of fragmented profiles across LinkedIn, Substack and GitHub
* **Low context-switching cost**: Self-documenting architecture so I can drop in and out of this codebase without losing momentum
* **Rich content**: A platform that supports long-form writing, diagrams, and interactive content

# User Stories

**For the audience:**

* As a friend, I want the highlights from research on topics like personal finance, so I can benefit from his research obsessions
* As a colleague, I want to understand Robbie's mental models on common engineering challenges, so we can align faster and avoid repeated debates
* As a developer evaluating this stack, I want to see architectural decisions documented, so I can learn from the tradeoffs
* As a hiring manager, I want to see evidence of systematic thinking beyond resume bullets, so I can assess seniority and culture fit

**For the author:**

* I want self-documenting projects, so I can context-switch efficiently when returning to the codebase
* I want a platform that can incubate SaaS ideas, so I have production-ready infrastructure when inspiration strikes
* I want a forcing function to ship end-to-end

# Platform Capabilities

## Knowledge Sharing & Collaboration

The blog serves multiple audiences with different needs:

* **Colleagues**: Engineering patterns, addressing recurring anti-patterns, reducing repeated debates. I can link to a thoroughly researched post instead of trying to re-establish the case from the ground up
* **Friends & family**: Personal finance insights, investing principles, life lessons
* **Public**: Thought leadership on topics I care about. Writing publicly forces an extra level of rigor.

## Content Publishing

* Long-form writing with MDX supporting diagrams, code blocks, and interactive components
* Multi-audience blog serving both technical and non-technical readers
* SEO-optimized for discoverability

## Professional Presence

* Interactive resume with structured experience data and technology breadth
* Project showcase with linked PRDs and [ADRs](/projects/personal-site?tab=adrs) demonstrating technical leadership
* Visual communication and data visualization demos

## Meta-Benefits

* LLM-readable codebase optimized for AI-assisted development workflows
* Self-documenting architecture reducing context-switching cost
* Extensible foundation for future ventures and experiments

# Building Philosophy

This project follows my [building philosophy](/projects?tab=philosophy).
Each ADR references specific principles to explain why certain trade-offs were accepted and others rejected.

# What This Is Not

* **Not a CMS with a GUI**: Content is code, managed via git. This is intentional—it keeps everything in one workflow and makes the site itself a demonstration of development practices
* **Not a finished product**: It's a living platform that evolves with my needs. The backlog is always longer than the changelog
* **Not a template for others to fork**: Though you're welcome to learn from it. The decisions here reflect my specific needs and preferences
* **Not a walled garden**: Content is meant to be shared, referenced, and built upon

# Future Direction

This site is infrastructure to enable future work:

* **SaaS incubator**: The tech stack and deployment pipeline are production-grade. When an idea is worth pursuing, the foundation is already there
* **Expanded project documentation**: More PRDs and ADRs as case studies in technical decision-making
* **Enhanced data visualization**: Richer interactive content and visual communication

## Architecture Decision Records

- [ADR 000: Github Public Repo](https://robbiepalmer.me/projects/personal-site/adrs/000-github-public-repo.md) — Accepted, 2025-10-18
- [ADR 001: Monorepo](https://robbiepalmer.me/projects/personal-site/adrs/001-monorepo.md) — Accepted, 2025-10-18
- [ADR 002: React](https://robbiepalmer.me/projects/personal-site/adrs/002-react.md) — Accepted, 2025-10-18
- [ADR 003: Next.js](https://robbiepalmer.me/projects/personal-site/adrs/003-next-js.md) — Accepted, 2025-10-18
- [ADR 004: Mise En Place](https://robbiepalmer.me/projects/personal-site/adrs/004-mise.md) — Accepted, 2025-10-18
- [ADR 005: Tailwind CSS](https://robbiepalmer.me/projects/personal-site/adrs/005-tailwindcss.md) — Accepted, 2025-10-18
- [ADR 006: Turbopack](https://robbiepalmer.me/projects/personal-site/adrs/006-turbopack.md) — Accepted, 2025-10-18
- [ADR 007: Pnpm](https://robbiepalmer.me/projects/personal-site/adrs/007-pnpm.md) — Accepted, 2025-10-18
- [ADR 008: Vitest](https://robbiepalmer.me/projects/personal-site/adrs/008-vitest.md) — Accepted, 2025-10-18
- [ADR 009: CodeRabbit](https://robbiepalmer.me/projects/personal-site/adrs/009-code-rabbit.md) — Accepted, 2025-10-19
- [ADR 010: Terraform](https://robbiepalmer.me/projects/personal-site/adrs/010-terraform.md) — Accepted, 2025-10-19
- [ADR 011: Cloudflare Pages](https://robbiepalmer.me/projects/personal-site/adrs/011-cloudflare-pages.md) — Accepted, 2025-10-19
- [ADR 012: Claude Code](https://robbiepalmer.me/projects/personal-site/adrs/012-claude-code.md) — Accepted, 2025-10-19
- [ADR 013: Dependabot](https://robbiepalmer.me/projects/personal-site/adrs/013-dependabot.md) — Deprecated, 2025-10-19
- [ADR 014: Husky Precommit](https://robbiepalmer.me/projects/personal-site/adrs/014-husky-precommit.md) — Accepted, 2025-10-19
- [ADR 015: Static Site Generation](https://robbiepalmer.me/projects/personal-site/adrs/015-ssg.md) — Accepted, 2025-10-19
- [ADR 016: GitHub Actions](https://robbiepalmer.me/projects/personal-site/adrs/016-github-actions.md) — Accepted, 2025-10-19
- [ADR 017: Terraform Cloud](https://robbiepalmer.me/projects/personal-site/adrs/017-terraform-cloud.md) — Accepted, 2025-10-19
- [ADR 018: GitHub Secrets](https://robbiepalmer.me/projects/personal-site/adrs/018-github-secrets.md) — Accepted, 2025-10-19
- [ADR 019: Shadcn](https://robbiepalmer.me/projects/personal-site/adrs/019-shadcn.md) — Accepted, 2025-10-19
- [ADR 020: MDX](https://robbiepalmer.me/projects/personal-site/adrs/020-mdx.md) — Accepted, 2025-10-19
- [ADR 021: Shiki](https://robbiepalmer.me/projects/personal-site/adrs/021-shiki.md) — Accepted, 2025-10-19
- [ADR 022: Fuse.js](https://robbiepalmer.me/projects/personal-site/adrs/022-fuse-js.md) — Accepted, 2025-10-26
- [ADR 023: Tailwind CSS Typography](https://robbiepalmer.me/projects/personal-site/adrs/023-typography.md) — Accepted, 2025-10-26
- [ADR 024: Renovate](https://robbiepalmer.me/projects/personal-site/adrs/024-renovate.md) — Accepted, 2025-11-02
- [ADR 025: Mermaid](https://robbiepalmer.me/projects/personal-site/adrs/025-mermaid.md) — Accepted, 2025-11-02
- [ADR 026: Recharts](https://robbiepalmer.me/projects/personal-site/adrs/026-recharts.md) — Accepted, 2025-11-08
- [ADR 027: CCPM](https://robbiepalmer.me/projects/personal-site/adrs/027-ccpm.md) — Deprecated, 2025-11-24
- [ADR 028: Cloudflare DNS](https://robbiepalmer.me/projects/personal-site/adrs/028-cloudflare-dns.md) — Accepted, 2025-11-26
- [ADR 029: Cloudflare Images](https://robbiepalmer.me/projects/personal-site/adrs/029-cloudflare-images.md) — Accepted, 2025-12-14
- [ADR 030: Downgrade Cloudflare Terraform Provider](https://robbiepalmer.me/projects/personal-site/adrs/030-downgrade-cloudflare-tf.md) — Accepted, 2025-11-26
- [ADR 031: Embla Carousel](https://robbiepalmer.me/projects/personal-site/adrs/031-embla-carousel.md) — Accepted, 2025-12-14
- [ADR 032: CodeQL](https://robbiepalmer.me/projects/personal-site/adrs/032-codeql.md) — Accepted, 2025-12-18
- [ADR 033: In-Memory Content Graph](https://robbiepalmer.me/projects/personal-site/adrs/033-content-graph-indexes.md) — Accepted, 2025-12-30
- [ADR 034: Shortcut](https://robbiepalmer.me/projects/personal-site/adrs/034-shortcut.md) — Accepted, 2025-12-28
- [ADR 035: Doppler](https://robbiepalmer.me/projects/personal-site/adrs/035-doppler.md) — Proposed, 2025-12-31
- [ADR 036: Cloudflare Rulesets for Subdomain Routing](https://robbiepalmer.me/projects/personal-site/adrs/036-cloudflare-rulesets.md) — Rejected, 2026-01-11
- [ADR 037: AGPL-3.0 License](https://robbiepalmer.me/projects/personal-site/adrs/037-agpl-license.md) — Accepted, 2026-01-11
- [ADR 038: Content Knowledge Graph Visualization](https://robbiepalmer.me/projects/personal-site/adrs/038-content-graph.md) — Proposed, 2026-02-07
- [ADR 039: Cloudflare R2 Object Storage](https://robbiepalmer.me/projects/personal-site/adrs/039-cloudflare-r2.md) — Accepted, 2026-02-14
- [ADR 040: PostHog Analytics](https://robbiepalmer.me/projects/personal-site/adrs/040-posthog-analytics.md) — Accepted, 2026-02-14
- [ADR 041: Gemini Code Assist](https://robbiepalmer.me/projects/personal-site/adrs/041-gemini-code-assist.md) — Accepted, 2026-06-20
- [ADR 042: Greptile](https://robbiepalmer.me/projects/personal-site/adrs/042-greptile.md) — Accepted, 2026-06-20
- [ADR 043: Codex](https://robbiepalmer.me/projects/personal-site/adrs/043-codex.md) — Accepted, 2026-06-21
- [ADR 044: Codex Code Review](https://robbiepalmer.me/projects/personal-site/adrs/044-codex-code-review.md) — Accepted, 2026-06-21
- [ADR 045: Qodo](https://robbiepalmer.me/projects/personal-site/adrs/045-qodo.md) — Accepted, 2026-06-21
- [ADR 046: Custom Agentic Code Review](https://robbiepalmer.me/projects/personal-site/adrs/046-custom-agentic-code-review.md) — Proposed, 2026-06-21
- [ADR 047: Trivy Security Scanner](https://robbiepalmer.me/projects/personal-site/adrs/047-trivy.md) — Accepted, 2026-06-21
- [ADR 045: SonarQube](https://robbiepalmer.me/projects/personal-site/adrs/048-sonarqube.md) — Accepted, 2026-06-26 (inherited from recipe-site)
- [ADR 049: Zizmor & actionlint (GitHub Actions Security)](https://robbiepalmer.me/projects/personal-site/adrs/049-zizmor.md) — Accepted, 2026-06-27

---

Markdown index of this site: https://robbiepalmer.me/llms.txt
