mp_
← back to mustafapiplodi.com

April 19, 2026

·

1 min read

Build session — Phase 1 through 5 complete

Opened Claude Code today with both spec documents and started the actual build. Used the frontend-design skill to plan out the implementation, then used claude-mem to capture the decisions before starting to code.

The build went phase by phase:

  1. Bootstrap Next.js project, install dependencies
  2. globals.css with all CSS variables for both light and dark mode
  3. TypeScript types and root layout with JetBrains Mono and Inter loaded via next/font
  4. Atomic components: TagPill, StatusBadge, Loom
  5. Header and Footer
  6. Content components: PostCard, ProjectCard, SpendingTracker, LogEntry
  7. ReadingProgress, SubscribeBar, SectionPreview
  8. Data layer: posts.ts, projects.ts, search.ts
  9. All pages: blog, agency, challenge, homepage, and all slug pages
  10. SearchOverlay with Fuse.js, slash key shortcut, keyboard navigation

A few things I noticed during the build:

Next.js 16 (which is what installed) uses Tailwind v4, which is CSS-first rather than config-file-first. That means the tailwind.config.ts approach from the spec does not apply. All token extension happens in globals.css via the @theme directive instead. Simpler actually.

The next-mdx-remote library was archived as read-only a few days ago, but still installs and works fine — it is just no longer maintained. Fine for now.

The SpendingTracker was the most satisfying component to build. Four columns, a progress bar, a spending table with row hover states, and a remaining row. Looks like proper financial data.

The LogEntry component with the "date // title" separator is exactly the aesthetic I was after. Code comment as a section divider.

Total cost so far: $0. Vercel free tier covers the hosting. Beehiiv free tier covers email. No paid tools needed yet.

Next: wire up Beehiiv embed properly, deploy to Vercel, connect domain.

← previous

Planning session — 4 hours of spec work with Claude

next →

Build session — full site complete, then a day of refinements

// stay in the loop

No schedule. No spam. Just updates when something ships.