vibecoder
workshop · not a course

Build something real.
Local. 72 hours. Yours.

This is a builder's workshop, not a funnel. You'll find a starter kit for shipping local-first apps, a trail journal of what actually worked, and build artifacts from real sessions.

What this is

01 / Starter Kit

A zip with env setup, folder structure, working boilerplate, and day-by-day checklists. Paid, one-time.

02 / Trail Journal

Short posts about what I built, what failed, and what surprised me. No theory — just build notes.

03 / Artifacts

Screenshots, snippets, and demos from real sessions. Proof that the stuff works before you buy anything.

72-hour paths

View all →

What you'll have shipped locally after 72 hours

  • A working local web server running on your own machine
  • A SQLite or JSON database with real data
  • A UI you built yourself — not from a template
  • An artifacts folder with screenshots of what you made
  • A terminal workflow you can repeat

Latest artifacts

View all →
Inventory search: live filtering as you type
ScreenshotNov 8, 2024

Inventory search: live filtering as you type

The search bar in the Household Inventory app. SQLite FTS5 powers it — results appear below 200ms on a Raspberry Pi 4 with ~800 items.

SQLiteHTMXPython
Code Snippet
Code SnippetNov 5, 2024

FastAPI + SQLite CRUD boilerplate

A minimal FastAPI app with SQLite via aiosqlite. Includes a working /items endpoint with GET, POST, PATCH, DELETE. No ORM — raw SQL with parameter binding.

FastAPISQLitePython
Build Note
Build NoteNov 3, 2024

Why SQLite FTS5 is enough for local search

I spent an afternoon convinced I needed Elasticsearch for full-text search. Then I tried FTS5. It handles 10,000+ rows instantly, is included in Python's stdlib, and requires zero configuration. Stop sleeping on it.

SQLitesearchopinion
Automation agent log dashboard
DemoOct 25, 2024

Automation agent log dashboard

Simple Jinja2 + Tailwind dashboard showing task history, last run time, and success/failure status. Built in about 3 hours on Day 2 of the agent build.

PythonJinja2Tailwind
Telegram bot notification from Python agent
ScreenshotOct 22, 2024

Telegram bot notification from Python agent

Daily briefing message arriving in Telegram from the local automation agent. Took about 40 minutes to set up end-to-end including bot token and chat ID.

PythonTelegramAPScheduler
App running on phone via LAN share
ScreenshotOct 18, 2024

App running on phone via LAN share

The recipe manager loading on a phone browser via the local IP. No tunnels, no ngrok, no cloud — just 0.0.0.0 binding and the LAN IP.

Node.jsLANmobile

Trail journal

All posts →
·3 min read

Day 1 of the Inventory Brain: What actually got done

I planned to build a beautiful app. I ended up with a working database, one API endpoint, and a form that submits without breaking. That's it. That's the win.

inventoryday-1SQLiteFastAPI
·3 min read

What 'local first' actually means for a side project

Local first doesn't mean offline-only or anti-cloud. It means your app works on your machine before you spend a dollar on infrastructure. Here's why that constraint is productive.

local-firstprocessphilosophy
·4 min read

72 hours: what actually ships vs. what you plan to ship

A post-mortem on my first 72-hour build attempt. What I planned, what I cut, what surprised me, and what I'd do differently.

72-hoursprocesspost-mortem

ready to build?

Start with the kit. Ship in 72 hours.

One payment. No subscription. You get the files, the checklists, and the setup that actually works.

Get the Starter Kit