30 Days of Vibe Coding - Day 6 - Pomodoro
A terminal-based Pomodoro timer built in Go with Bubble Tea, featuring ASCII art, session tracking, and weekly statistics.
A terminal-based Pomodoro timer built in Go with Bubble Tea, featuring ASCII art, session tracking, and weekly statistics.
Day 6. Time to leave the browser behind — and leave my comfort zone entirely.
Every project so far has been TypeScript, React, Canvas. Languages and frameworks I know. Today I wanted to test something different: what happens when I ask the AI to build with tools I've never touched?
The Prompt
> "Build a terminal Pomodoro timer in Go using Bubble Tea with large ASCII countdown, session tracking with SQLite, daily and weekly stats, task labels, and customizable durations."
I've never written Go. I've never used Bubble Tea. I've never touched Lip Gloss. I couldn't tell you the difference between a goroutine and a channel without looking it up. The entire tech stack in this prompt is foreign to me.
That was the point. Five days of building web games in familiar territory had me wondering: is the AI only good at things I already understand? What if I throw it a stack I can't even review properly?
How It Was Built
Watchfire took the prompt and broke it down the same way it did with the TypeScript projects. The fact that this was Go instead of TypeScript didn't seem to matter. It chose Bubble Tea for the TUI framework, Lip Gloss for styling, SQLite for persistence. No web server, no Electron wrapper, no browser. Just a binary you can run from anywhere.
The project landed as a clean Go module with 11 source files across 6 packages: main, ascii, config, db, stats, timer, and ui. Each package has a clear responsibility. The timer package handles the state machine (idle, running, paused, finished). The UI package renders everything with Bubble Tea. The database package manages SQLite persistence. The stats package aggregates session data for daily and weekly views.
It even came with an install script, a Makefile, and proper CLI flags using a custom config loader that merges a YAML config file with command-line arguments. I wouldn't know how to set any of this up in Go myself.
What I Got
Big ASCII numbers. The countdown display uses custom block-character digits that are 5 lines tall. They're readable from across the room, which is kind of the point of a Pomodoro timer. You should be able to glance at it and know how much time you have left.
...
---
Read the full article →

Add a comment: