# Daily Timer A desktop application for managing daily standup meetings with time tracking, participant management, and statistics. ## Features - ⏱️ **Timer Display** - Large, visible timer for current speaker with progress bar - 👥 **Participant Management** - Predefined list with configurable time limits per person - 🔄 **Speaking Queue** - Visual queue with ability to reorder, skip, or move speakers - ⏭️ **Skip Function** - Move unprepared participants to end of queue - ✅ **Attendance Tracking** - Mark participants as present/absent before meeting - ⚠️ **Time Warnings** - Visual and audio alerts when time is running out - 📊 **Statistics** - Track meeting duration, overtime, and individual performance - 📈 **History** - View past meetings with detailed breakdowns - 💾 **Export** - Export data in JSON or CSV format - 🔊 **Sound Notifications** - Configurable audio alerts ## Screenshots _(Coming soon)_ ## Requirements - macOS 10.15+ (Catalina or later) - Go 1.21+ - Node.js 18+ - Wails CLI v2 ## Installation ### Install Wails CLI ```bash go install github.com/wailsapp/wails/v2/cmd/wails@latest ``` ### Clone and Build ```bash git clone https://github.com/your-username/daily-timer.git cd daily-timer # Initialize project make init # Development mode make dev # Build for production make build ``` The built application will be in `build/bin/`. ## Usage ### Setup Meeting 1. **Add Participants** - Enter names and set individual time limits 2. **Set Meeting Limit** - Configure total meeting duration (default: 15 minutes) 3. **Arrange Order** - Drag to reorder speaking sequence 4. **Mark Attendance** - Toggle present/absent status ### During Meeting 1. Click **Start Meeting** to begin 2. Timer shows current speaker with countdown 3. Click **Next Speaker** to advance (or press ⌘N) 4. Click **Skip** to move current speaker to end of queue 5. Use **Pause/Resume** for interruptions 6. Click **Stop** to end meeting early ### Keyboard Shortcuts | Key | Action | | ----- | ------------ | | ⌘N | Next Speaker | | ⌘S | Skip Speaker | | Space | Pause/Resume | | ⌘Q | Stop Meeting | ### Statistics - View historical meeting data in the **History** tab - Filter by date range - Export to JSON or CSV for external analysis - Track participant overtime frequency and average speaking time ## Configuration Settings are stored in `~/Library/Application Support/DailyTimer/`: - `daily-timer.db` - SQLite database with all data - `sounds/` - Custom sound files (optional) ### Custom Sounds Place custom MP3 files in the sounds directory: - `warning.mp3` - Plays when time is running low - `timeup.mp3` - Plays when speaker time expires - `meeting_end.mp3` - Plays when meeting ends ## Development ### Project Structure ``` daily-timer/ ├── main.go # Wails application entry point ├── internal/ │ ├── app/ # Application logic and Wails bindings │ ├── models/ # Data models │ ├── storage/ # SQLite database layer │ └── timer/ # Timer logic with events ├── frontend/ │ ├── src/ │ │ ├── App.svelte # Main application │ │ └── components/ # UI components │ └── wailsjs/ # Generated Go bindings ├── wails.json # Wails configuration ├── Makefile # Build commands └── README.md ``` ### Commands ```bash make dev # Start development with hot reload make build # Build production binary make test # Run tests make fmt # Format code make lint # Run linters make clean # Clean build artifacts ``` ## Roadmap - [ ] Drag-and-drop participant reordering - [ ] Telegram integration (send meeting summary) - [ ] Calendar integration (auto-schedule) - [ ] Team templates - [ ] Cloud sync - [ ] Windows/Linux support ## License MIT License - see [LICENSE](LICENSE) for details. ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Run tests and linting 5. Submit a pull request ## Support For issues and feature requests, please use GitHub Issues.