It was Sunday after church and I finally decided to put some time into doing some digital spring cleaning and consider redesigning my personal site including ruthmvrick's.

In the past 12 months, I picked up quite a few new things, thanks to Claude and work. There were two things in particular that struck me:

  1. The monorepo concept with multiple web apps i.e. Turborepo

  2. MDX - markdown but with JSX!

So I figured, instead of fully relying on platforms like squarespace, shopify or even beehiiv, can I rebuild my site(s) within this structure, save costs and have some more design flexibility and control?

Off I go into brainstorm mode with Claude and scaffolded the plan with tools I'm familiar with:

Turborepo monorepo
├── apps/personal    → shadcn-portfolio base + MDX added
├── apps/ruthmvrk → same base, different theme + sections
└── packages/ui      → shared components between both

Here's the rough shape of what I built out for phase 1:

/
├── apps/
│   └── personal/               ← your personal site (this spec)
│       ├── app/                ← Next.js App Router
│       ├── content/            ← MDX files (all written content)
│       ├── components/         ← site-specific components
│       └── mdx-components.tsx  ← global MDX component registry
├── packages/
│   ├── ui/                     ← shared shadcn + MagicUI components
│   │   ├── components/
│   │   └── package.json
│   ├── config/                 ← shared tsconfig, eslint, tailwind base
│   └── content-utils/          ← shared MDX helpers, types, schemas
├── turbo.json
└── package.json                ← npm workspaces root

I'm probably not the best person to share how good a monorepo setup is, but my focus was having a core setup that is reusable within multiple webapps, that i didnt need to keep repeating and wasting tokens with AI.

Going into build mode - my experience and flow so far.

This is when things get more interesting. For context, before this I used to utilise Notion and Fruition for my personal site which enabled me to update content easily while having it hooked into my domain, all looking professional. But over time, the strengths of Notion as a 'CMS' quickly became a limitation. I wasn't able to add, or change too much of the design.

Fast forward to now with this new setup, I quickly learnt that these things integrated well with Vercel, which solves the 'CMS' concern I had too - which I'd call a 'last-mile-problem'. I'm planning to share more about 'last mile workflows' I've been focussing on recently, but for now let's focus on this bit:

will I ever be able to update content as easy as editing a Notion doc?

Not quite! But as AI gets more capable, I now have an even better workflow.
With the Claude app on mobile connected to GitHub, and GitHub connected to Vercel - all talking to each other - I can have my site and its contents edited all from my phone. Through the app, Claude plans with me and executes it all within a branch, and I just merge into main. I'm not a Vercel ambassador, but this workflow works way better than other hosting platforms I've used. After the initial setup, I didn't need CLI access at all - no terminal, no deploy commands, nothing.

Claude x GitHub x Vercel

Is this workflow faster than editing a Notion doc? Perhaps not, but given Claude's helping me with my writing and acting as my second brain, the speed to execution is definitely better with less distractions!

Updating content and features all via Claude mobile

https://joeltan.com.au is now revamped and updated! Yes, I've still adopted the minimal look/feel, but more to come in phase 2 with magicui.design adoption including rebuilding ruthmvrk's site. 😎

The revamped joeltan.com.au - on the new monorepo stack.

With this new workflow I also have Claude maintaining a journal inside the repo - logging decisions, key learnings, and what's pending after each session. It's not just a changelog; it's context that carries forward. When I come back weeks later (or hand things off), Claude picks up exactly where we left off without me needing to re-explain the whole setup. This same idea powers my second-brain vault - a structured system where raw notes, meeting transcripts, and ideas get synthesised into a living knowledge base Claude can query across sessions. The journal in the repo is essentially that, but scoped to the codebase. Now, as I look into phase 2, Claude already has full context of the learnings, milestones and setup - so it doesn't repeat the same mistakes!

Journaling snippet with Claude.

Thanks for dropping by! If there's anything you wanna know or see more of, let me know. Would appreciate a subscribe!

Reply

Avatar

or to participate

Keep Reading