Workflow is a beautiful, minimalist desktop application for tracking your work hours. Built with Electron and SQLite, it helps you stay motivated with streak tracking, daily targets, and detailed work session history.
- Timer Management: Start, pause, and adjust your work sessions with ease
- Daily Target: Set and track your daily work hour goals
- Work History: View all past sessions with filtering and search
- Streak Tracking: 🔥 Monitor consecutive days of reaching your daily target
- Session Management: Save, edit, and delete work sessions with custom names
- Modern UI: Clean, dark-mode interface with smooth animations
- Frameless Window: Custom title bar for a native app feel
- Responsive: Optimized mobile-style layout (430x932px)
- Interactive Cards: Hover effects and visual feedback
- Goal Achievement: Sound and visual notifications when daily target is reached
- Congratulations Modal: Celebrate your productivity milestones
- SQLite Database: Fast, local data storage
- Persistent Storage: Data is preserved across app updates
- Settings: Customizable daily targets and notification preferences
- Node.js (v16 or higher)
- npm (comes with Node.js)
-
Clone the repository
git clone https://github.com/fleizean/workflow-timer.git cd workflow-timer -
Install dependencies
npm install
-
Run the application
npm start
To create a distributable executable:
npm run buildThe built application will be in the dist_output/ directory.
workflow-timer/
├── src/
│ ├── pages/ # HTML pages
│ │ ├── index.html # Main timer page
│ │ ├── work-history.html
│ │ └── settings.html
│ ├── renderer/ # Frontend JavaScript
│ │ ├── timer.js
│ │ ├── shared.js
│ │ └── tailwind-config.js
│ ├── styles/ # CSS files
│ │ ├── common.css
│ │ └── titlebar.css
│ └── assets/ # Images and sounds
├── database/
│ └── db.js # SQLite database logic
├── main.js # Electron main process
├── preload.js # IPC bridge
└── package.json
- Electron - Desktop application framework
- better-sqlite3 - Fast SQLite database
- Tailwind CSS - Utility-first CSS framework
- Material Symbols - Icon library
We use ESLint to enforce code style and catch errors. Before submitting a PR, make sure your code passes the linter:
npm run lintnpm start # Run in development mode
npm run build # Build for Windows
npm run build:dir # Build unpacked directory- Click the Play button to start tracking time
- The timer will count up and show your remaining time to reach the daily target
- Click Pause to temporarily stop the timer
- Use Adjust to manually add or remove time
- Click the Save button
- Enter a custom name for your session (e.g., "Frontend Development")
- Confirm to save - the session is added to your history
- Your streak shows consecutive days where you've reached your daily target
- Weekends are included in the streak calculation
- Missing a day resets your streak to 0
If you see an error saying the app is damaged or cannot be opened, run this command in Terminal:
xattr -dr com.apple.quarantine /Applications/Workflow.app- Click on the Logged card on the main screen
- Browse your past sessions grouped by week
- Use filters to find specific sessions
- Edit or delete sessions as needed
- Export data to CSV/JSON
- Statistics dashboard with charts
- Pomodoro timer mode
- Multi-language support
- Custom themes
- Excelsheet sync
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Workflow Team
- Website: fleizean.dev
- Icons by Material Symbols
- Font: Inter by Rasmus Andersson
- Inspired by modern productivity tools
Made with ❤️ and ⏱️ by Workflow Team
