# timetracker A cross-platform time tracker built with Flutter for the frontend and Rust for the backend logic. Communication is handled via `flutter_rust_bridge`, and data is stored locally on the device using SQLite. The user interface adapts to the native look-and-feel of Android and iOS thanks to `flutter_platform_widgets`. ## Features * **Time Tracking:** Start and stop time tracking entries. * **Tag Management:** * Create new tags. * List all tags. * Edit tag names (via swipe gesture). * Delete tags (via swipe gesture, includes confirmation). Associated time entries will have their tag set to NULL. * **Local Storage:** All data is securely stored in a local SQLite database on the device (managed by Rust). * **Reporting:** * Display time entries filtered by period (Day, Week, Month, Year) and optionally by tag. * Total duration display for the filtered period. * Visualization using charts (`fl_chart`): * **Bar chart:** Distribution of daily time spent per tag for the selected period. * List view for report entries. * **Pull-to-Refresh:** Manually refresh report data. * **Swipe-to-Delete:** Delete individual time entries directly from the report list via swipe gesture (with confirmation). * **Platform-Adaptive UI:** Uses `flutter_platform_widgets` to provide a native appearance on Android (Material Design) and iOS (Cupertino). ## Technologies * **Frontend:** Flutter / Dart * State Management: `provider` * UI Adaptation: `flutter_platform_widgets` * Charts: `fl_chart` * Swipe Actions: `flutter_slidable` * Intl: `intl` * **Backend:** Rust * Database: SQLite (via `rusqlite`) * Error Handling: `anyhow` * Logging: `log` * **Bridge:** `flutter_rust_bridge` * **Build:** Cargo, Flutter Build Tools, Gradle (Android), Xcode (iOS) ## Architecture The app follows a clear separation between UI and logic: `Flutter UI (Widgets)` <-> `Dart Service Layer (TimeTrackingService)` <-> `flutter_rust_bridge (Generated Bindings)` <-> `Rust API (api.rs)` <-> `Rust DB Logic (database.rs)` <-> `SQLite Database` ## Contributing Contributions are welcome! Please create an issue to report bugs or suggest new features. Pull requests are also welcome. ## License [MIT License]