- App must be fully offline
- Record time by starting a timer with a button
- Timers may (or may not) have descriptions
- Timers may (or may not) have a project
- Timers may be started with a missing description and/or project
- Timers may be started with a description and/or project pre-applied
- Timers must be manually stopped with a button
- Timers may be "resumed" by effectively cloning the project and description and starting from the current time
- Multiple timers may be active at once
- The user may specify a default project to pre-populate all new timers with
- A “dashboard” screen will display:
- a list of the latest completed timers,
- the current running timers,
- an interface to start or create new timers
- Timers may be edited (whether running or not). All data related to each timer may be changed:
- Start time
- End time
- Description
- Project
- Timers may be deleted (whether running or not)
- A confirmation should be presented to the user to confirm the deletion
- Projects can be created with a project name and a colour
- The colour will be pre-populated by the system
- The colour can be set by the user before creating the project
- The project name must never be empty
- Each project can be edited:
- The project name
- The project colour
- Export database using native OS sharing
- Export data as
csv
(orxlsx
?) using native OS sharing- Optionally filtered by:
- Date
- Project
- Optionally grouped by timer descriptions on a daily basis
- Export format should be able to include:
- Timer description
- Timer project
- Timer start time (RFC 3339)
- Timer end time (RFC 3339)
- Timer length in hours
- Export settings should be persisted and re-used as defaults
- Optionally filtered by:
- The list of open-source software should be included
- Starting / stopping timers should be located at the bottom of the screen to facilitate one-handed operation
- An in-app-purchase should be available as a donation towards the development of the app.
- Perhaps tied to the ability to export data (either reports or the database)?
- A reporting screen which gives you the same filtering options as exporting data in a spreadsheet but displays the results locally
- As charts
- As tables
- Ability to import a previously exported database, overwriting what we currently have