No description
Find a file
2025-06-22 13:25:31 +02:00
android initial commit 2025-04-09 21:59:26 +02:00
integration_test initial commit 2025-04-09 21:59:26 +02:00
ios initial commit 2025-04-09 21:59:26 +02:00
lib feat: add pickable daterange to report screen 2025-04-29 20:18:36 +02:00
linux initial commit 2025-04-09 21:59:26 +02:00
macos initial commit 2025-04-09 21:59:26 +02:00
rust feat: add update and delete functionality to tags and improve report screen 2025-04-16 16:08:45 +02:00
rust_builder initial commit 2025-04-09 21:59:26 +02:00
test_driver initial commit 2025-04-09 21:59:26 +02:00
web initial commit 2025-04-09 21:59:26 +02:00
windows initial commit 2025-04-09 21:59:26 +02:00
.gitignore initial commit 2025-04-09 21:59:26 +02:00
.metadata initial commit 2025-04-09 21:59:26 +02:00
analysis_options.yaml initial commit 2025-04-09 21:59:26 +02:00
changelog.md docs: update changelog 2025-04-21 20:20:21 +02:00
flutter_rust_bridge.yaml initial commit 2025-04-09 21:59:26 +02:00
pubspec.lock deps: update dependencies 2025-06-22 13:25:31 +02:00
pubspec.yaml deps: update dependencies 2025-06-22 13:25:31 +02:00
README.md docs: update README 2025-04-21 20:31:56 +02:00
renovate.json Add renovate.json 2025-06-04 14:56:28 +00:00

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]