← All examples

04 / An everyday app

Focus Timer

Give one thing your attention. Start a short timer, pause it and come back when ready.

Try now ↓

Your first minute

  1. Start a 12-minute-30-second session.
  2. Pause when you need a break, then resume.
  3. Reset to begin a new session.

Small on purpose

No alarm, notifications or saved session. Background time follows the browser clock; closing the tab ends the session.

The app needs JavaScript. There is no account or server connection.

Open it. Run it. Change it.

A whole little project.

Source, focused tests, build scripts and a README. MIT licensed. Nothing depends on a private repository.

AFTER EXTRACTING THE SOURCE ZIP

cd focus-timer
bun install --frozen-lockfile
bun run test
bun run typecheck
bun run build
bun run start

Install Bun first. Setup downloads the pinned development compiler; the built app runs locally. Read the README for its local URL.

Verify the download hashes

Compare SHA-256 with shasum -a 256 filename.

Source ZIP
bc380d5b9d504c6e38c8dc102ab8cf0d62f2aa0ba796685d3dcb55e082836b4b
Git bundle
1560522aa16c4a2dfcb0953e4cb6a5eb0cb48b6c2150267ba784b68fedfbdac8

The build story

From an idea
to something you can use.

A timer should measure elapsed time, not count how often the browser updates it.

  1. 01

    PRODUCT · INTENT

    Say what should happen.

    A person approved five small examples that visitors can try, download and learn from. HI keeps the agreed intent in plain sentences.

  2. 02

    DESIGN · EXPERIENCE

    Make the idea visible.

    The gallery and five visual directions were reviewed before implementation. The approved design pairs a clear first action with a usable mobile layout.

  3. 03

    DEVELOPMENT · PLAN & BUILD

    Agree on the rules, then build.

    Pausing holds remaining time. Resuming creates a new deadline. Completion cannot go below zero.

    SpecSync records the contract. A Sol coding agent writes the implementation in an assigned directory. chough records the stage and handoff.

  4. 04

    QA · TEST & REPAIR

    Check what actually happens.

    Tests were written against explicit unimplemented functions first. That failure is a development starting point, not a regression in a working app. Fledge runs the real tests again after implementation.

    8 behavioral tests / 47 assertions passed. An independent agent freshly extracted this source ZIP, installed its pinned dependencies, and passed the documented tests, strict source typecheck and build. Browser interaction was checked separately by the coordinator.

    Browser interaction, accessibility and fresh source extraction are checked separately. A structural SpecSync pass alone cannot prove those behaviors.

  5. 05

    EVERYONE · ACCEPT & RELEASE

    Review the result together.

    The project owner approved the design, scope and finished implementation (site revision d1ad28a3). Merge, publication and deployment are separate decisions.

The actual trail

Read the commits.

This is a project-only export of real development history. Filtering removes unrelated workspace files and redacts author email addresses, so these public commit IDs differ from the originals. Commit times describe saved revisions, not hours of agent effort. The saved Git name is the workspace identity; it does not establish human authorship or review.

  1. 0e48e06b7
    test(examples): add failing behavioral tests before app implementation
  2. 9ef84fff0
    feat(examples): implement five standalone browser games and apps
Open the Git history on your machine
git clone focus-timer.bundle focus-timer-history
cd focus-timer-history
git log --oneline
git show HEAD

The history retains the apps/focus-timer/ project path. The source ZIP starts directly at the project root. No private remote is needed.

A closer look.

Focus Timer running in the browser
Actual browser capture · Ready at 12:30 on independently extracted source build. Source and capture identity are recorded in the verification package.

Make your own small thing

What would you change?

Start with one sentence about what you want. Keep the change small enough to try, explain and check.

Meet the workflow ↗Try another example →