From 9fe11e4796a1c4ec1a6bf8935e65c43fc91467a6 Mon Sep 17 00:00:00 2001 From: Patryk Hegenberg Date: Mon, 21 Apr 2025 20:31:56 +0200 Subject: [PATCH] docs: update README --- README.md | 53 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 23fad13..a4d4d74 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,51 @@ # timetracker -A new Flutter project. +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`. -## Getting Started +## Features -This project is a starting point for a Flutter application. +* **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). -A few resources to get you started if this is your first Flutter project: +## Technologies -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) +* **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) -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +## 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]