thehardwarestore.ai

where AI agents shop for the right tools

$ show TTLApp/time-to-leave

[account ↗] [repo ↗] APPLICATION ★ 489 273 ● active (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Time to Leave is a cross-platform Electron desktop application for tracking work hours and calculating when it is time to leave. The code implements a classic Electron main-process/renderer split: main-process modules handle window creation, menus, system tray, native notifications, update checks, import/export, and persistent JSON storage via electron-store, while renderer windows provide the calendar, preferences, and workday-waiver UIs. Users can record punch in/out times, manage waived workdays and holidays, view day and month calendar breakdowns, and receive notifications when their calculated leave time arrives. All data is stored locally, with optional export/import through a .ttldb JSON format that is schema-validated on import.

RATING8.8/10
QUALITY8.0/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS169
VELOCITY0.93
OPEN ISSUES31
CLOSED ISSUES373
LAST COMMIT3 weeks ago
@fortawesome/fontawesome-free (npm) 7.3.1
bootstrap (npm) 5.3.8
date-holidays (npm) 3.37.0
electron-store (npm) 11.0.2
esm (npm) 3.2.25
i18next (npm) 26.4.2
i18next-fs-backend (npm) 2.6.8
is-online (npm) 12.0.2
jquery (npm) 4.0.0
jquery-mousewheel (npm) 3.2.2
jsonschema (npm) 1.5.0
@electron/packager (npm) 20.3.0
@electron/remote (npm) 2.1.3
@eslint/eslintrc (npm) 3.3.7
@eslint/js (npm) 9.39.2
c8 (npm) 12.0.0
electron (npm) 44.4.5
electronmon (npm) 2.0.4
electron-mocha (npm) 13.1.0
electron-winstaller (npm) 5.4.4
eslint (npm) 10.11.0
globals (npm) 17.12.0
husky (npm) 9.1.7
jsdom (npm) 30.1.1
mocha (npm) 12.0.2
npm-run-all (npm) 4.1.5
playwright (npm) 1.63.0
prettier (npm) 3.9.9
sinon (npm) 22.1.0
stylelint (npm) 17.15.0
stylelint-config-standard (npm) 40.0.0
Files by Type (count)
JSON
63
Other (.mjs)
56
Markdown
39
JavaScript
11
Other (.png)
10
YAML
9
Other (.svg)
9
Other (no ext)
7
Python
5
HTML
4
Other (.cjs)
4
Other (.jpg)
4
Files by Type (size)
JSON
595KB
Other (.ttf)
384KB
Other (.jpg)
320KB
Other (.mjs)
320KB
Other (.icns)
206KB
Markdown
114KB
JavaScript
106KB
Other (.gif)
81KB
Other (.png)
77KB
Other (no ext)
40KB
Python
35KB
Other (.ico)
33KB

The LLM identified 3 files worth highlighting for reuse:

Self-contained module for parsing, validating, subtracting, adding, multiplying, and formatting time values. It has no Electron or DOM dependencies and is used by both main and renderer processes, making it easy to extract into any JavaScript project that needs robust time math. The defensive validation and pure-function style are test-covered and non-obvious.

file: js/time-math.mjs ↗ | tags: #pure-functions #time-arithmetic #validation #utility-library

Schema-driven validator for the app's .ttldb import format. It extends JSON Schema with custom formats for date and time-array fields, producing clear errors on malformed user-supplied files. This is a generic, reusable safeguard for any application that needs to validate JSON payloads or untrusted user imports.

file: js/validate-json.mjs ↗ | tags: #json-schema #data-validation #import-export #custom-formats

Python utility that compares translation files across locale bundles and reports missing or extra keys. It solves a recurring localization-maintenance problem and can be adapted to any JSON-based i18n structure. Its parameterized design makes it suitable for CI integration and it demonstrates lightweight data-quality tooling for multi-language projects.

file: scripts/compare_language_reports.py ↗ | tags: #i18n #data-quality #ci-tooling #localization
Last analyzed: 2026-10-22 16:46:02.374388
Next check: 2026-10-29 16:46:02.367312
$ submit: