A simple, efficient time tracking application built with Tauri, React, and Rust.
- Multiple Trackers: Create and manage multiple tracking categories
- Pausable Sessions: Stop and resume tracking on the same task
- Session History: View all tracking sessions with duration calculations
- Today Filter: Filter history to show only today's work
- Auto-stop on Exit: Automatically stops all active tracking when closing the app
- Each tracking line can have multiple duration sessions
- Resume previous tasks to continue tracking
- View total time across all sessions
- Individual session start/end times displayed
- SQLite database for persistent storage
- Soft delete functionality
- Clear all data option
- Automatic migration system
- Frontend: React, TypeScript, Ant Design
- Backend: Rust, Tauri
- Database: SQLite with sqlx
- Build: Vite
- Enter a tracker name in the left panel
- Click "Create" to add a new tracker
- Select a tracker from the list
- Enter a task description
- Click "Start" to begin tracking
- Stop: Pause the current tracking session
- Resume: Continue tracking on a stopped task
- Delete: Remove a tracking entry
- Use "All" to view complete tracking history
- Use "Today" to filter only today's sessions
- Each session shows start time, end time, and duration
- Rust (latest stable)
- Node.js / Deno
- Tauri CLI
# Install dependencies
deno install
# Run in development mode
deno task tauri dev
# Run in development mode for Android
deno task tauri android dev
# Build for production
deno task tauri buildMigrations are located in /migrations and run automatically on app initialization.
- Domain-driven design with repository pattern
- Service layer for business logic
- SQLite database with async sqlx queries
- Native window lifecycle management
- TypeScript for type safety
- Ant Design component library
- Nested data structure (Trackers > Lines > Durations)
- Real-time duration updates
TrackerEntry
└── TrackerEntryLine[]
└── TrackerEntryLineDuration[]
MIT