Public
LikethirdTimer
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v22View latest version
A minimalist web app implementing the "Third Time" productivity method.
- Work for as long or short as you like, until you want or need to break
- Break for up to one-third of the time you've just worked
- Save unused break time for later
- Handle interruptions and big breaks (meals)
- Flexible work/break timing
- Break time banking system
- Interruption handling
- Big break support for meals
- Clean, distraction-free interface with flat design
- Consistent rounded corners throughout the UI
- Customizable break fractions (1/2, 1/3, 1/4, 1/5, 1/6)
- Group timers: share a passphrase to see each other's timer status anonymously
- Click "Start Working" to begin a work session
- Click "Take Break" when you want to stop working
- The app calculates your earned break time (work time ÷ 3)
- Take your break and click "Resume Work" when ready
- Any unused break time is saved for later
Enter a shared passphrase in the footer to join a group. Members see each other's timer mode (Working / Breaking / Idle) and elapsed time — no names or IDs are shared. Group state is polled every 10 seconds.
src/
├── backend/
│ ├── index.ts # Hono API server + static files
│ └── database/
│ ├── migrations.ts # SQLite schema migrations
│ └── queries.ts # DB query functions
├── frontend/
│ ├── components/ # React components
│ │ ├── GroupTimerCard.tsx # Group member timer card
│ │ └── Footer.tsx # Footer with group passphrase UI
│ ├── favicon.http.tsx # Favicon
│ ├── index.html # Main app interface
│ ├── index.tsx # React app entry point
│ ├── style.css # Styling
│ └── utils/ # Utility functions
│ ├── timer-actions.ts # Timer actions
│ ├── state-persistence.ts # Backend state sync
│ ├── passphrase.ts # Passphrase localStorage helper
│ ├── group-api.ts # Group members API fetch
│ └── user-id.ts # Daily user ID generation
└── shared/
├── types.ts # Shared TypeScript types
└── utils.tsx # Shared utility functions