- Calculate remaining (waiting) time / estimated time of arrival
- Mode: simple: no target / use case: just calculate the speed of process
- Mode: count-up (target >0) / use case: X of Y done
- Mode: count-down (target =0) / use case: "standing in a queue"
- Using weighted linear regression to empathize the latest data points
- Stats of speed and eta
- Chart of items and speed over time
- Add Multi-Timer besides ETA
- Create an arbitrary number of countdown timers
- Store recent timers as cards for 1-click recreation
- Add Lap-Timer Feature
- 1. setup, 2. start, 3. lap button per row, 4. display lap times, 5. display stats
No use to re-invent the wheel, use Pomofocus instead
- Use local storage to persist data
- Favicon
- Provide PWA and notify user about it
- How-to install PWA version for different browsers/devices
- PWA icon
- Info page
- UX feedback by CT
- Footer in smaller font size or grey color
- Date format based on browser locale setting
- Multi-Language I18n
- isMobile: monitor for changes
- Notification sound when eta is reached
- Tooltip of speed in various units
- Select unit of speed
- ETA intro text
- ETA mode=down as default
- Chart markLine: show avg speed calculated by
StatsTable.vue
- entering of percents should would an % sign shall be ignored
- Support for larger numbers than the JavaScript limit of 1.7e+308 via Big.js
- Chart font size
- Delete one and all timer buttons
- Play sound upon timer finished
- Reset timer button
- Prettier
- ESLint
- CSpell
- Pre-commit hook via Husky and Lint-Staged
- Unit-tests via Vitest
- Reduced build size by including only used icons
- End to end (E2E) tests using Cypress
- Central definition of data types in
types.ts
- Simple mode: Target = undefined vs. -1 ? undefined is correct, -1 would be easier to code
- Store calculated speeds in
data
(not calc inDataTable.vue
) - Update of target should trigger update of stats
- Use TypeScript instead of JavaScript
- Use modern Single-File Components (SFCs) via
<script setup lang="ts">
instead of<script lang="ts">
- isMobile check to helper.ts
- FooterText: replace router import by props
- Split components InputItemsAndTarget and ActionsBlock into smaller ones
- Fix broken unit tests
- End2End tests
- Split into smaller component files
- Only include used icons to reduce file size
- Fonts not fetched from Google but bundled
- Static filename for audio file via
public
dir - Replace old app and deploy to entorb.net/eta/. Move old app to /v1
- Generate a PWA version
- Deploy ETA and Multi-Timer in one app
- Do not load fonts from Google
- Deploy MT as index2.html
- Deploy MT as merged app together with ETA via Vue Router and navigation
- Lazy loading of EtaChart component
- Lazy loading of tabs/routes
- PWA wants screenshots of "form_factor" set to "wide" and "form_factor" other than "wide"
- Local Matomo instance for visitor stats
- Local database for usage stats: ETA & MT per 7 days and total
- Sentry for exception tracking
- No access to 3rd party services
- Data only stored on visitor's device
- Delete all data button on info page