mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-19 12:50:11 -05:00
e68f231b91
- REST API v1: add deals, leads, contacts, time-entry-approvals (CRUD + approve/reject/cancel/bulk-approve). New scopes and /info entries. - Standardize API errors: use error_response, forbidden_response, not_found_response in api_v1 (projects + new CRM/approval routes). - Consolidate templates: move root templates/ into app/templates/, remove ChoiceLoader and legacy root files. - Version: README/FEATURES_COMPLETE/CHANGELOG/mobile docs reference setup.py as single source (4.19.0); add [4.19.0] changelog entry. - Docs: SERVICE_LAYER_AND_BASE_CRUD.md, RBAC_PERMISSION_MODEL.md; base_crud_service docstring points to service-layer doc. - Mark projects_refactored_example, timer_refactored, invoices_refactored as REFERENCE ONLY in docstrings.
3.8 KiB
3.8 KiB
Mobile and Desktop Apps
This directory contains documentation for the TimeTracker mobile (Flutter) and desktop (Electron) applications.
Overview
The TimeTracker mobile and desktop apps provide native client applications that connect to the TimeTracker backend via REST API.
Mobile App (Flutter)
Located in mobile/ directory.
Features
- Time tracking with start/stop timer
- Project and task management
- Time entries with calendar view
- Offline support with automatic sync
- Secure token-based authentication
- Background timer updates
Setup
See mobile/README.md for setup instructions.
Build
- Android:
flutter build apkorflutter build appbundle - iOS:
flutter build iosthen archive in Xcode
Desktop App (Electron)
Located in desktop/ directory.
Features
- Time tracking with system tray integration
- Project and task management
- Time entries viewing
- Offline support
- Secure token-based authentication
- Global keyboard shortcuts (planned)
Setup
See desktop/README.md for setup instructions.
Build
- Windows:
npm run build:win - macOS:
npm run build:mac - Linux:
npm run build:linux
API Integration
Both apps use the TimeTracker REST API v1 (/api/v1/). See API Documentation for details.
Authentication
- Mobile app: Sign in with your web username and password; the app obtains an API token in the background for the same basics access as the web app.
- Desktop app: Enter the server URL and either sign in with username/password (if supported) or use an API token from Admin > Security & Access > Api-tokens.
- The app will validate credentials and store the token securely.
Required API Scopes
read:time_entries- View time entrieswrite:time_entries- Create/update time entries and control timerread:projects- View projectsread:tasks- View tasks
API Endpoints Used
GET /api/v1/info- API version and health checkGET /api/v1/timer/status- Get active timer statusPOST /api/v1/timer/start- Start timerPOST /api/v1/timer/stop- Stop timerGET /api/v1/time-entries- List time entriesPOST /api/v1/time-entries- Create time entryPUT /api/v1/time-entries/{id}- Update time entryDELETE /api/v1/time-entries/{id}- Delete time entryGET /api/v1/projects- List projectsGET /api/v1/tasks- List tasks
Offline Support
Both apps support offline operation:
- Local Storage: Time entries, projects, and tasks are cached locally
- Sync Queue: Operations performed offline are queued for sync
- Automatic Sync: When connection is restored, queued operations are processed
- Conflict Resolution: Server data takes precedence on conflict
Development
Mobile App Development
- Install Flutter SDK
- Run
flutter pub getinmobile/directory - Run
flutter runto start development
Desktop App Development
- Install Node.js 18+
- Run
npm installindesktop/directory - Run
npm run devto start development
Distribution
Mobile Apps
- Android: Generate signed APK/AAB and submit to Google Play Store
- iOS: Archive and submit to Apple App Store (requires Apple Developer account)
Desktop Apps
- Windows: NSIS installer created in
dist/directory - macOS: DMG installer (requires code signing for distribution)
- Linux: AppImage and .deb packages
Version Management
App versions should align with the backend version (see setup.py for current version). Update version numbers in:
- Mobile:
mobile/pubspec.yaml - Desktop:
desktop/package.json - Backend:
setup.py
Support
For issues or questions:
- Check the main project README
- Review API documentation
- Check app-specific README files
- Open an issue on GitHub