GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - ttncode/boost-focus-timer: A calm, keyboard-friendly focus timer with to-dos, habits, goals and session history. Web app or browser extension; data stays in your browser.

BranchesTags
Open more actions menu

Latest commit

 

History

46 Commits
46 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
desktop
desktop
 
 
docs/screenshots
docs/screenshots
 
 
extension
extension
 
 
public
public
 
 
scripts
scripts
 
 
src
src
 
 
tests-e2e
tests-e2e
 
 
tests
tests
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.nvmrc
.nvmrc
 
 
AGENTS.md
AGENTS.md
 
 
CLAUDE.md
CLAUDE.md
 
 
README.md
README.md
 
 
eslint.config.mjs
eslint.config.mjs
 
 
next.config.ts
next.config.ts
 
 
package-lock.json
package-lock.json
 
 
package.json
package.json
 
 
postcss.config.mjs
postcss.config.mjs
 
 
tsconfig.json
tsconfig.json
 
 

Repository files navigation

Boost Focus Timer icon: a pixel-art coffee cup

Boost Focus Timer

A calm, keyboard-friendly focus timer with to-dos, habits, goals and session history. Runs as a Windows desktop app, a web app or a browser extension, and keeps every bit of data on your own device.

CI Node 24+ Next.js 16 Data stays local

A focus session in progress: a pixel-art coffee cup half full as the countdown runs, with Pause, Done and Reset buttons

What you get

  • Focus timer with pause, resume, breaks, extend-on-complete and goal history (press ↑/↓ in the goal field).
  • Notifications when a focus session or break runs out. The app asks for permission with Chrome's own prompt the first time you open it; Menu → Settings → Notifications shows the current state and asks again if you dismissed the prompt. If nothing appears, allow notifications for your browser in your system settings and turn off Do Not Disturb / Focus.
  • Sound themes: Classic (default), Glass, Wood, Singing bowl, Soft, Aurora or Silent, each covering start, finish, break, back to work, pause, resume, the coffee refill and button taps. Preview and pick them in Menu → Settings → Sounds. All sounds are synthesized in the browser.
  • Pixel-art progress animations — a coffee cup that fills, a battery that charges, a rocket that lifts off — plus an auto-shuffle option.
  • To-dos with time estimates, notes, drag-and-drop ordering, a backlog and archive; start a focus session straight from a to-do.
  • Habits with 7- and 30-day grids and notes per day.
  • Goals with target dates, comments and archive.
  • Focus summary: daily focus chart, metrics, week-over-week comparison, time by tag and an editable session log.
  • Boost: a private feed of notes, links, images and videos to keep yourself motivated.
  • Configurable keyboard shortcuts for every main action, with an in-app editor (Ctrl+/).
  • No account, no server, no tracking. Everything is stored in localStorage on the device you use.
Choose an animation Plan the day See your progress
Animation picker with Coffee Cup, Battery and Rocket cards To-do list with time estimates, totals and a backlog drop zone Focus summary with a daily focus bar chart and metric cards

Quick start

Requirements: Node.js 24 or newer (see .nvmrc) and npm.

git clone https://github.com/ttncode/boost-focus-timer.git
cd boost-focus-timer
npm ci
npm run dev

Open http://localhost:3000. To serve an optimized build instead, run npm run build && npm start.

Install the Windows desktop app

  1. Download Boost.Focus.Timer_<version>_x64-setup.exe from Releases.
  2. Run it. Windows may warn about an unknown publisher the first time, because the installer is not code-signed: click More info, then Run anyway. It installs for your account only, so no admin rights are needed.
  3. The app opens, adds an icon to the system tray and starts with Windows from then on.

Click the tray icon to bring it back. Closing the window (X) only hides it, so a running session and its notification carry on; to quit, right-click the tray icon → Quit. Turn off Start with Windows in the same menu if you don't want it at sign-in.

To update, right-click the tray icon → Check for updates. The app asks before installing, and does not install while a session is running.

The desktop app starts with empty data; it cannot read what the browser extension or web app stored. To move or back up your data, use Menu → Settings → Export data and Import data.

Install as a browser extension

The extension is the same app packaged for Chromium-based browsers (Chrome, Edge, Brave, Opera).

npm run build:extension

This writes an unpacked extension to dist/extension/ and a zip to dist/boost-focus-timer-extension-<version>.zip.

  1. Open chrome://extensions (or edge://extensions) and turn on Developer mode.
  2. Click Load unpacked and select dist/extension.
  3. Click the toolbar icon to open the timer in its own popup window (a compact layout of the same app) with a taskbar icon; it remembers its size and position. Use the ⤢ button in its top bar, or Alt+Enter, to open the full page in a tab; an existing tab is focused instead of opening a second one.
  4. Optional: assign a global shortcut for Open Boost Focus Timer at chrome://extensions/shortcuts.

A session keeps running when the popup closes: reopening it continues the countdown, and the extension shows the "Focus session complete" / "Break is over" notification even while the popup is closed (the end chime only plays if the app is open). Popup and full page share the same data, which lives in the extension's own storage, separate from the web app's. Firefox is not supported yet.

Keyboard shortcuts

Press Ctrl+/ to open the shortcut list. Click a key to change it, press the new combination, Esc to cancel or Backspace to remove it. Reset All to Default restores everything. Assigning a combination that is already in use moves it to the new action.

Group Action Default
Navigate Focus · To-Dos · Habits · Goals · Boost Alt+1 … Alt+5
Focus summary Alt+H
About Me · Tags Alt+P · Alt+T
Open / close menu Alt+M
Back (Tags page) Alt+Shift+B
Focus timer Start / pause / resume Alt+S
Switch focus / break Alt+B
End or complete session Alt+X
Edit focus goal · Choose animation Alt+G · Alt+A
Add tag Alt+Shift+T
Reset session · Extend finished session Alt+R · Alt+Shift+E
Edit minutes Alt+I
Auto-shuffle animations on/off · Next animation Alt+Shift+A · Alt+Shift+C
Lists New item on the current page Alt+N
Post to Boost · Attach media Ctrl+Enter · Alt+U
Public / private post Alt+Shift+V
Show / hide archived · Show / hide backlog Alt+Shift+H · Alt+Shift+K
Switch 7 / 30 days (Habits) Alt+Shift+D
Previous · next period Alt+Shift+← · Alt+Shift+→
Next chart range (Focus summary) Alt+Shift+P
App Edit display name Alt+Shift+N
Save page (About Me) Ctrl+S
Sounds · Notifications Alt+Shift+S · Alt+Shift+O
Show or hide the shortcut list Ctrl+/

Shortcuts without Ctrl, Alt or Meta are ignored while you type in a field. Hover a button to see its current shortcut. On Linux, Chrome reserves Alt+1…8 for switching tabs; rebind those if they clash.

Keyboard Shortcuts panel listing grouped actions with editable key chips

Your data

All records — sessions, tags, to-dos, habits, goals, posts and settings — are kept in this browser's localStorage under keys starting with bft:.

  • Nothing is uploaded, and there is no sync between browsers or devices.
  • Clearing site data for the app (or removing the extension) deletes everything.
  • Images or videos attached to Boost posts are shown for the current session only; after a reload the post keeps its text.

Development

Command What it does
npm run dev Start the dev server on port 3000
npm run lint ESLint
npm run typecheck TypeScript, no emit
npm test Unit tests with Node's built-in test runner (tests/)
npm run build Production build (standalone server output)
npm run build:extension Static export packaged as a Manifest V3 extension
npm run icons Regenerate the app and extension icons from the pixel grid in scripts/generate-icons.mjs
npm run check Lint, typecheck, test and build — the same gate CI runs

Project layout:

src/app/               Next.js routes, root layout, icons and web manifest
src/components/        The app: shell, focus timer, pages, Boost feed, hotkeys
src/components/lib/    localStorage data layer (local-db) and session helpers
extension/             Extension service worker
scripts/               Icon generator and extension build
tests/                 Unit tests

Built with Next.js 16, React 19, TypeScript, Tailwind CSS 4, dnd-kit and Recharts.

Status

Personal project, used daily by its author. The coffee-cup animation frames in public/animations/coffee-cup/ are third-party artwork kept for private, personal use only; do not redistribute them. Not affiliated with any company or product of a similar name. There is no open-source license yet, so all rights are reserved; ask before reusing the code.

About

A calm, keyboard-friendly focus timer with to-dos, habits, goals and session history. Web app or browser extension; data stays in your browser.

Topics

browser-extensionchrome-extensionfocus-timerhabit-trackerkeyboard-shortcutslocal-firstmanifest-v3nextjspomodoroproductivityreacttailwindcsstodo-apptypescript

Resources

Readme
Activity

Stars

1 star

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.