Skip to main content

My Build In Public Site - JamieWatters.work - Progress

Published: November 20, 20253 min read
#Build in Public#Jamie Watters#Soloprenuer

Build Update - November 19, 2025

🐛 Fixed: Blog Posts Finally Showing Real Content

Shipped a critical fix today that had me scratching my head. Every blog post was showing placeholder text instead of the actual markdown content I wrote in the admin panel.

The Problem 🔍 Posts were stored correctly in the database with full markdown content, but the blog page (/journey/[slug]/page.tsx) was hardcoded to display a placeholder message. Classic case of "TODO" comments that never got done.

The Fix ✅ One line change: const contentToRender = post.content || placeholderContent;

That's it. Now the page checks if real content exists in the database and uses it. Falls back to placeholder only for legacy posts with no content.

Time to Fix: ~15 minutes Time to Deploy: 3 minutes (auto-deploy via GitHub push) Impact: Every blog post now displays properly on production

🏗️ Designed: Daily Progress System

The bigger win today was designing a solution to a workflow problem that's been bugging me.

The Problem 🤔 The daily update generator was pulling every completed task from project-plan.md - not just today's work. This meant "daily" updates showed weeks worth of tasks. Not useful.

Why This Happened: No date filtering exists in the current system. It just extracts all [x] checkboxes and calls it a day. There's literally a TODO comment in the code: "Future enhancement: Filter based on Git commit dates."

The Solution We Designed 💡

Instead of complex Git history parsing, we're implementing a simple daily progress file system:

/progress/
  2025-11-19.md
  2025-11-20.md
  ...

Each file contains:

  • ✅ Completed milestones (human-curated, not raw checkboxes)
  • 🐛 Issues encountered with root cause analysis
  • 📊 Impact summary
  • 🎯 Next steps

The Innovation: Building a new /dailyreport slash command that:

  1. Reads today's entries from progress.md
  2. Extracts completed work + issues resolved
  3. Groups into meaningful milestones
  4. Creates/updates the daily progress file
  5. Runs multiple times per day (idempotent)

Why This Is Better:

  • Human-curated milestones vs raw task lists
  • Includes learnings from issues (builds credibility)
  • Easy to review before publishing
  • Works with existing progress tracking
  • Simple implementation (no Git parsing needed)

📝 Created: AGENT-11 Command Specification

Wrote a comprehensive prompt for building the /dailyreport command. It specifies:

  • File structure and naming conventions
  • Markdown template with sections
  • Date parsing logic from progress.md
  • Idempotent update behavior
  • Content guidelines (what to include/exclude)
  • Integration with daily update generator

Template Preview:

# Progress Report - November 19, 2025

## Project: JamieWatters Portfolio

### ✅ Completed
- Fixed blog post content display bug
- Designed daily progress file system
- Created /dailyreport command specification

### 🐛 Issues & Learnings
#### Issue: Blog posts showing placeholder text
- **Root Cause**: Hardcoded placeholder in page component
- **Fix**: Use post.content from database with fallback
- **Prevention**: Remove TODO comments after implementation
- **Time Impact**: 15 minutes

---

## Impact Summary
Shipped critical blog fix and designed scalable daily update system that will make build-in-public posting 10x easier.

## Next Steps
- Implement /dailyreport command in AGENT-11
- Update daily update generator to read from /progress/ files
- Test end-to-end workflow

🎯 What's Next

Immediate:

  1. Build the /dailyreport command
  2. Update daily update generator to consume progress files
  3. Test with tomorrow's actual work

Why This Matters: Building in public only works if the process is sustainable. Manually crafting daily updates was taking 30+ minutes. This system will cut that to 5 minutes while improving quality.

The best tools are the ones you build to scratch your own itch.


📊 By the Numbers

  • Files Changed: 1
  • Lines Modified: 6
  • Deployment Time: 3 minutes
  • Issues Fixed: 1
  • Systems Designed: 1
  • Prompt Engineering: 1 comprehensive spec
  • Time Saved (Future): ~25 minutes per daily update

💭 Reflection

Today was a reminder that sometimes the best solution isn't the most technically complex one. I could have spent hours parsing Git history and implementing date filtering algorithms. Instead, we designed a simple file-based system that's easier to understand, maintain, and use.

The lesson: Don't over-engineer. Solve the real problem, not the imaginary one.

Also, there's something satisfying about fixing a bug in 15 minutes that's been annoying you for weeks. Sometimes you just need to stop and actually look at the code.


Stack: Next.js, TypeScript, Prisma, PostgreSQL Tools: Claude Code, AGENT-11 framework Vibes: Productive 🚀

Share this post