{"id":22436989,"url":"https://github.com/entorb/eta-vue","last_synced_at":"2026-04-02T03:04:31.315Z","repository":{"id":202648270,"uuid":"706782840","full_name":"entorb/eta-vue","owner":"entorb","description":"ETA (estimated time of arrival) and MultiTimer, written in Vue.js","archived":false,"fork":false,"pushed_at":"2026-03-12T06:35:33.000Z","size":453,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-12T12:57:53.751Z","etag":null,"topics":["echarts","estimated-time-of-arrival","eta","mdi","multitimer","pwa","stopwatch","typescript","vite","vitest","vue","vue-router","vue3","vuetify","weighted-least-squares","weighted-linear-regression"],"latest_commit_sha":null,"homepage":"https://entorb.net/eta/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/entorb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2023-10-18T15:53:13.000Z","updated_at":"2026-03-12T06:35:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"5da2db28-409f-4c2a-8053-4eac50b44b7b","html_url":"https://github.com/entorb/eta-vue","commit_stats":null,"previous_names":["entorb/eta-vue"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/entorb/eta-vue","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Feta-vue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Feta-vue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Feta-vue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Feta-vue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/entorb","download_url":"https://codeload.github.com/entorb/eta-vue/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Feta-vue/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31294832,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T01:43:37.129Z","status":"online","status_checked_at":"2026-04-02T02:00:08.535Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["echarts","estimated-time-of-arrival","eta","mdi","multitimer","pwa","stopwatch","typescript","vite","vitest","vue","vue-router","vue3","vuetify","weighted-least-squares","weighted-linear-regression"],"created_at":"2024-12-06T00:10:33.907Z","updated_at":"2026-04-02T03:04:31.295Z","avatar_url":"https://github.com/entorb.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ETA (Estimated Time of Arrival) and Multi-Timer\n\n**ETA:** Calculate remaining (waiting) time / estimated time of arrival.\n\n**Multi-Timer:** Set and manage multiple countdown timers.\n\nHosted at [entorb.net/eta/](https://entorb.net/eta/). [Feedback](https://entorb.net/contact.php?origin=eta) is highly appreciated.\n\nThis project is a complete rewrite of [github.com/entorb/eta](https://github.com/entorb/eta/) using state of the art tech-stack. It is my first project in [Vue.js](https://vuejs.org) and several tools have been explored, see below.\n\n## ETA Use Cases\n\n- Standing in a queue / waiting room / ...\n- Estimate the time for a process/work to finish\n- Homework sessions\n- Lawn mowing / tractor driving / ...\n- Book reading finish time\n- Idle-Games\n\n[Weighted linear regression](https://en.wikipedia.org/wiki/Weighted_least_squares) is applied to calculate the speed with an emphasis on the latest data points\n\n## Multi-Timer Use Cases\n\n- Boiling eggs and cooking tea in parallel\n- Idle-Games\n\n## Documentation\n\n- [docs/ideas.md](https://github.com/entorb/eta-vue/blob/main/docs/ideas.md) shows open and completed feature ideas\n- [docs/tools.md](https://github.com/entorb/eta-vue/blob/main/docs/tools.md) details how to set up the tools\n- [docs/vue-how-to.md](https://github.com/entorb/eta-vue/blob/main/docs/vue-how-to.md) outlines the Vue.js tech-stack and provides links to documentation and how-tos\n- [docs/issus.md](https://github.com/entorb/eta-vue/blob/main/docs/issues.md) lists problems and obstacles, faced during development\n\n## Build and Run this Project Locally\n\nInstall npm packages: `pnpm install`\n\nRun live-updated dev-instance: `pnpm run dev`\n\nBuild and run: `pnpm run run`\n\nLive preview of changes: `pnpm run dev` (via `vite --host`)\n\n## Check code after changes\n\n### Format and unit tests\n\n```sh\npnpm run check\n# this runs: format lint spell test-once\n\n# to run unit test only, generating coverage report in coverage\\lcov-report\\index.html\npnpm run test-once\n\n# or run this to permanently retest upon file changes\npnpm run test\n```\n\n### Cypress E2E tests\n\n```sh\npnpm run build\npnpm run preview\npnpm run cy:open\n```\n\nNow in Cypress navigate to \"E2E Testing\" -\u003e \"Firefox\" -\u003e \"Start E2E Testing in Firefox\"\n\n## Update\n\n```sh\n# update single package\npnpm up vite\n# update all dependencies\npnpm up\n```\n\n## Support tools used for this project\n\n- [Prettier](https://prettier.io) code formatter\n- [ESLint](https://eslint.org) code linter\n- [CSpell](https://cspell.org) code spell checker\n- [Vitest](https://vitest.dev) unit tests\n- [Cypress](https://www.cypress.io) E2E tests\n- [Matomo](https://matomo.org) visitor stats (locally hosted instance)\n- [SonarQube](https://sonarcloud.io/project/overview?id=entorb_eta-vue)\n\nsee [docs/tools.md](https://github.com/entorb/eta-vue/blob/main/docs/tools.md)\n\n## known issues\n\neslint throws\n\n```sh\n[MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of eslint.config.js is not specified and it doesn't parse as CommonJS.\nReparsing as ES module because module syntax was detected. This incurs a performance overhead.\nTo eliminate this warning, add \"type\": \"module\" to /Users/torben/GitHub/eta-vue/package.json.\n(Use `node --trace-warnings ...` to show where the warning was created)\n```\n\nbut setting `\"type\": \"module\"` in `package.json` prevents Cypress to start.\n\n## Credits\n\n- notification sound `481151__matrixxx__cow-bells-01.mp3` is from [freesound.org](https://freesound.org/people/MATRIXXX_/sounds/481151/)\n- favicon is `timer-outline` from [MDI](https://pictogrammers.com/library/mdi/icon/timer-outline/) and converted via [favicon.io](https://favicon.io/favicon-converter/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentorb%2Feta-vue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fentorb%2Feta-vue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentorb%2Feta-vue/lists"}