Skip to content

Latest commit

 

History

History
121 lines (90 loc) · 3.86 KB

ideas.md

File metadata and controls

121 lines (90 loc) · 3.86 KB

Ideas

Features

Feature: ETA

  • 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

Feature: Multi-Timer

  • Add Multi-Timer besides ETA
  • Create an arbitrary number of countdown timers
  • Store recent timers as cards for 1-click recreation

Feature idea: Lap-Timer

  • Add Lap-Timer Feature
  • 1. setup, 2. start, 3. lap button per row, 4. display lap times, 5. display stats

Feature idea: Pomodoro Timer

No use to re-invent the wheel, use Pomofocus instead

UI

  • 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

UI ETA

  • 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

UI Multi-Timer

  • Delete one and all timer buttons
  • Play sound upon timer finished
  • Reset timer button

Tooling

  • 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

Data handling

  • 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 in DataTable.vue )
  • Update of target should trigger update of stats

Refactoring

  • 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

Refactoring ETA

  • Split components InputItemsAndTarget and ActionsBlock into smaller ones
  • Fix broken unit tests

Refactoring Multi-Timer

  • End2End tests
  • Split into smaller component files

Deployment

  • 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"

Usage Stats and Exception Tracking

  • Local Matomo instance for visitor stats
  • Local database for usage stats: ETA & MT per 7 days and total
  • Sentry for exception tracking

Privacy

  • No access to 3rd party services
  • Data only stored on visitor's device
  • Delete all data button on info page