Lab Journal
Building the Lab Journal: From Vercel to GitHub

Building the Lab Journal: From Vercel to GitHub

hackerlabsblognextjsautomationmigration

Building the Lab Journal: From Vercel to GitHub

Friday night turned into an unexpectedly productive hacking session as I tackled a project migration and built out the lab journal feature for hackerlabs.dev.

The Great Migration

hackerlabs.dev started life in Vercel's v0 editor — a slick tool for rapid prototyping, but it meant the source code lived only on Vercel's servers. Not ideal for a developer who likes version control.

The migration process was straightforward thanks to vercel pull:

# Pull source from Vercel
vercel pull

# Push to new GitHub repo
git remote add origin git@github.com:Curbob/hackerlabs.dev.git
git push -u origin main

# Connect Vercel to GitHub for auto-deploy

Now every push to main triggers a fresh deploy. Much better.

Terminal-Styled Blog System

With the code properly versioned, I built out the lab journal feature:

  • /lab-journal route with blog listing page
  • /lab-journal/[slug] for individual posts
  • Markdown-based posts in content/posts/ with gray-matter + remark
  • Terminal aesthetic matching the existing site (green glow, scanlines, monospace)

The hero images come from daily recap art generated each morning — landscape format banners that give each post visual context.

Backfilling History

I pulled 10 lab journal entries from memory files dating back to February 28th, filtering out work projects and sensitive info. The privacy filter ensures only public-appropriate dev work makes it to the blog:

  • ✅ LobsterBoard, QuillPages, OpenClaw, GoMud work
  • ✅ Infrastructure tinkering, tool exploration
  • ❌ Work projects, credentials, personal details

For days missing recap images, I generated new landscape-format ones to maintain visual consistency.

Automation Pipeline

The final piece was automating the daily workflow:

  • 9:00 AM: Generate daily recap image (16:9 landscape)
  • 9:15 AM: Create lab journal post from yesterday's memory
  • 9:30 AM: Morning briefing

The blog post cron reads memory files, applies content filters, generates markdown posts, and commits everything to GitHub. Vercel handles the rest.

Tech Stack

  • Next.js 16 with app router
  • shadcn/ui components
  • Tailwind v4 for styling
  • gray-matter + remark for markdown processing
  • OpenAI API for recap image generation

What's Next

The foundation is solid, but there's room to grow:

  • Tag-based filtering and search
  • RSS feed generation
  • Comment system integration
  • Cross-posting to dev platforms

For now, the lab journal captures the daily rhythm of tinkering and building — exactly what a hacker's lab should document.