Time tracking, Pomodoro productivity, and invoicing β all in one place.
Track your daily tasks, manage work hours, stay focused with the Pomodoro technique, generate professional invoices, and keep full control of your data. Everything runs locally in your browser.
- Highlights
- Features
- Getting Started
- Usage Guide
- Keyboard Shortcuts
- Your Data & Privacy
- Accessibility
- Tech Stack
- Project Structure
- Troubleshooting
- Contributing
- Support
| β±οΈ Time Tracking | Start/stop/pause timers, manual entries, daily & weekly views |
| π Pomodoro Timer | Configurable work/break cycles with task integration |
| π§Ύ Invoicing | Generate professional PDF invoices from your tracked time |
| πΎ Data Management | Export, import, backup, and restore β you own your data |
| π Privacy First | Everything is stored locally in your browser, no server required |
| βΏ Accessible | Full keyboard navigation, screen reader support, reduced-motion |
- Advanced timer β start, stop, pause, and resume timers for any task
- Daily view β see every time entry for a given day at a glance
- Weekly timesheets β automatic weekly summaries and calculations
- Manual entries β add or edit entries with precise start/end times
- Task merging β combine duplicate entries with the same description
- Flexible sorting β chronological or reverse order, with break entries shown or hidden
- Work/break cycles β customizable work, short break, and long break durations
- Auto-start β chain sessions automatically to stay in flow
- Task integration β link Pomodoro sessions to tracked tasks
- Visual progress β real-time phase indicators and completed-set tracking
- PDF export β professional, business-ready invoices from your time data
- Multiple currencies β USD, EUR, and GBP with automatic formatting
- Client & company details β configurable billing information
- Automatic calculations β hours, subtotals, and totals from weekly timesheets
- Flexible export β all data, specific days, or selected weeks as JSON
- Selective import β merge with or replace existing data
- Backup & restore β automatic backups created before every import
- Validation β imported data is checked for integrity and compatibility
- Timezone support β automatic detection plus 400+ manual options
- Week configuration β start your week on Sunday or Monday
- Clock format β 12-hour or 24-hour display
- Guided onboarding β quick setup for new users
- Responsive design β optimized for desktop, tablet, and mobile
- Cross-tab sync β changes update instantly across all open tabs
- Favicon notifications β the browser tab shows active-timer status
- Node.js 18 or higher
- npm or yarn
# Clone the repository
git clone <repository-url>
cd kronos
# Install dependencies
npm install
# Start the development server
npm run devThen open http://localhost:5173 in your browser.
| Command | Description |
|---|---|
npm run dev |
Start the development server |
npm run build |
Build for production (output in dist/) |
npm run preview |
Preview the production build locally |
npm run lint |
Run ESLint to check code quality |
- Enter a task description and click Start (or press Enter).
- The favicon updates to show a timer is running.
- Pause/resume to take breaks without ending the session.
- Click Stop to save the entry.
Use Add Manual Entry for past work, hover an entry to edit or delete it, and select entries with matching descriptions to merge them. Navigate days with the arrow buttons, the calendar picker, or the Today button.
- Open the Pomodoro Timer view from the sidebar.
- Set your work duration (default 25 min), short break (5 min), and long break (15 min).
- Choose how many work sessions precede a long break.
- Click Start β enable auto-start to chain phases automatically, and link sessions to tasks for unified tracking.
- Open the Invoice Generator and fill in your company and client details.
- Set your hourly rate and currency.
- Select the week or date range and review the included entries.
- Add invoice number, due date, and notes, then click Generate PDF to download.
- Export β choose all data, specific days, or selected weeks, then download the JSON file.
- Import β pick Replace, Merge, or Selective mode; a backup is created automatically first.
- Restore β roll back to a previous state if needed.
Configure your timezone, week start, and clock format, tune motion preferences for performance or accessibility, and re-run onboarding any time from the Settings view.
| Key | Action |
|---|---|
| Enter | Start timer with the current task |
| Space | Pause / resume the active timer (when focused) |
| Escape | Close modals and cancel actions |
| Tab | Move between interactive elements |
| Arrow Keys | Navigate calendar dates and menus |
Kronos stores everything locally in your browser using localStorage β no accounts, no servers, no tracking.
- Private by default β your data never leaves your device
- Works offline β no connection needed for core features
- Instant β data loads immediately, no server round-trips
- Cross-tab sync β changes propagate across open tabs in real time
- Resilient β data is validated on load, with automatic backups before major operations
π‘ Tip: Export your data regularly. Since everything lives in your browser, clearing site data will remove it β keep a backup.
Kronos is built to be usable by everyone:
- Full keyboard navigation for every feature
- Screen reader support with comprehensive ARIA labeling
- Reduced-motion preference support
- High-contrast and system-theme compatibility
- Logical focus flow with visible focus indicators
| Package | Version | Purpose |
|---|---|---|
| React | 19.2.0 | UI framework |
| Vite | 7.2.4 | Build tool & dev server |
| Tailwind CSS | 4.1.17 | Utility-first styling |
| date-fns | 4.1.0 | Date manipulation |
| date-fns-tz | 3.2.0 | Timezone handling |
| Framer Motion | 12.23.26 | Animations |
| Lucide React | 0.556.0 | Icons |
| @react-pdf/renderer | 4.3.2 | Invoice PDF generation |
| ESLint | 9.39.1 | Linting |
Kronos uses a modular, scalable component architecture.
src/
βββ App.jsx # Routing, providers, and top-level state
βββ AppLayout.jsx # Sidebar navigation & responsive layout
βββ components/
β βββ DailyTracker # Main time-tracking interface
β βββ PomodoroTimer # Pomodoro technique implementation
β βββ TimesheetTable # Weekly timesheet with calculations
β βββ InvoicePage # PDF invoice generation
β βββ DataImportExport # Data management operations
β βββ Settings # Preferences & configuration
β βββ Onboarding # Guided setup for new users
β βββ ... # DatePicker, modals, progress bars, etc.
βββ context/
β βββ TimezoneContext # Global timezone management
β βββ UserPreferencesContext
β βββ ToastContext # Notification system
β βββ PomodoroContext # Pomodoro state & config
βββ utils/
βββ storage.js # localStorage with validation
βββ dataImportExport.js # Import/export with backup/restore
βββ entryUtils.js # Entry manipulation & sorting
βββ faviconManager.js # Dynamic favicon status
βββ storageEvents.js # Cross-tab synchronization
βββ timezoneUtils.js # Timezone calculations
Timer won't start
- Make sure you've entered a task description.
- Confirm your browser allows
localStorage. - Refresh the page and try again.
Data isn't saving
- Check your browser's
localStoragepermissions. - Clear the cache and reload.
- Export your data regularly as a backup.
Timezone looks wrong
- Verify your system timezone.
- Manually select your timezone in Settings.
- Reload the app after changing it.
Cross-tab sync isn't working
- Ensure both tabs are on the same domain.
- Confirm
localStorageis enabled. - Refresh both tabs to re-establish sync.
Invoice won't generate
- Confirm there are time entries in the selected period.
- Check that client information is filled in.
- Make sure your browser allows PDF downloads.
Supported browsers: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+.
Contributions are welcome!
- Fork the repository and clone your fork.
- Install dependencies:
npm install - Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes, following the existing code style and keeping accessibility intact.
- Commit:
git commit -m "Add amazing feature" - Push:
git push origin feature/amazing-feature - Open a Pull Request with a clear description.
Please test across different browsers and devices, and update documentation for any UI changes.
- Docs β this README and in-app tooltips
- Issues β report bugs and request features on GitHub
- Community β join the discussion in GitHub Issues
When reporting a bug, include your browser and OS, steps to reproduce, expected vs. actual behavior, and any console errors. For feature requests, describe the problem you're solving and how you'd like it to work.
Kronos - Comprehensive time tracking, Pomodoro productivity, invoice generation, and data management - all in one powerful application.
Track your time, boost your productivity, manage your billing, and take control of your work day with Kronos.