A minimalist web app implementing the "Third Time" productivity method.
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