ArchivedDeveloper experience · 2024

Award-winning hackathon build

TermBook

TermBook pairs a terminal prompt with an authenticated web archive for daily journal entries. On the Bitcamp team, I built the web experience around the product: the landing surface, profile view, journal cards, visual system, and documentation.

My role

Frontend and product engineering · Bitcamp team

System map

Open terminal
Daily prompt
Journal entry
Cloud sync
Web archive
Developer experience
Award
1st place / Best Hack
Event
Bitcamp 2024
Surface
Terminal client + web archive
01

Design friction on purpose

The terminal client prompts for a daily entry before the user settles into work and enforces a meaningful minimum length. The intervention is intentionally harder to ignore than another reminder notification.

02

My part of the build

I built the landing and profile experiences, the journal-entry card system, the particle-backed presentation layer, responsive styling, and the documentation surface. That web work turned the CLI's raw entries into something a user could return to and browse.

03

One product across two runtimes

The broader team joined a cross-platform Go client and SQLite-backed service to a Next.js application with GitHub authentication. The web interface gave the terminal habit a durable history without trying to replace the terminal interaction.

Engineering choices

The decisions that shaped it.

The implementation details matter because each one closes a specific failure mode or keeps an important boundary visible.

01

Put the prompt in the workflow

The journal asks for attention when the terminal opens, rather than relying on a separate habit tracker.

02

Make the archive calmer

The web experience focuses on reading prior entries instead of recreating the interruption of the CLI.

03

Split interaction from storage

A cross-platform terminal client handles capture while the authenticated site handles browsing and continuity.

Where it landed

TermBook won first place / Best Hack at Bitcamp 2024. The original live domain is no longer active, so the portfolio links to the surviving source rather than pretending the deployment still exists.

Next case study

gloss

Keep reading