eTime 3.0
From an organically grown application to a maintainable enterprise platform: new architecture, new business features and a consistently modern, multilingual experience.
★ Highlights
AI assistant
Configurable per company, keys encrypted in the database, one active provider per company.
Internal chat
Ephemeral 1:1 chat with a “Who’s online?“ list for admins, managers and employees.
Performance dashboard
Dedicated, pre-computed data model with its own cron for fast analytics.
Account carry-over
Remaining leave (all account types) and overtime into the next year – with approval.
Requests & workflows
Special leave, time correction and end time with two-step manager/HR approval.
9 languages
New: Bulgarian, Dutch, Polish, Portuguese – including emails & docs.
New UI
“Shell“ design system, new landing page and interactive docs with a live tour.
Mobile app
Android app with offline tracking & sync, SSO and iCal calendar subscription.
Operational safety
Maintenance mode, edit lock, change log, DB clone and migration system.
+ New features
Time tracking & accounts
- Second-precise start/end times with tooltip; night-shift logic with a next-day prompt.
- Time-correction and end-time requests with approval; breaks per daily grid.
- Unified overtime balance (actual/target + absences + bookings), rounded per day.
Leave
- Multiple leave-account types per company; carry-over to the next year (double-transfer safe).
- Special leave with mandatory documents and manager/HR approval; cover & annual planner.
Reporting & export
- Payroll data (times + holidays/absences as continued pay + target + weekend).
- Time sheet (XLSX + fixed CSV payroll format), Credit360 and working-hours-act check.
Platform & self-service
- AI assistant, chat, iCal subscription, security self-service (password/2FA).
- Partner program/lead acquisition, company network (switch company without logging in again).
↑ Improvements
- Date/time centralised via DateService (personal > company > language).
- Prices centralised via PriceService – no more hard-coded prices.
- Tables with automatic, content-based column width.
- Mobile: scrollable menu, usable input fields, edge-to-edge insets, pull-to-refresh.
▢ User interface
- New Shell design system incl. per-user UI colour theme and personal date format.
- New marketing landing page as the home page for logged-out visitors.
- Interactive documentation with an animated live tour.
- Many new screens: account carry-over, activity mapping, type management, prices, dashboard, migration and more.
⚙ Administration
- Migration page, DB clone (main → demo/docs) and data integrity check.
- Maintenance mode, edit lock, change log per role.
- Company AI, HR fields, working-hours-act limits, billing exemption; reminder crons.
⇄ API
- Central
AjaxRouter: uniform CSRF/auth/error handling, responses as{ok,data}/{ok,error}. - 22 new endpoint groups, mobile sync API, OpenID/SSO and signed URLs.
▤ Database
- New migration system (50 migrations,
DB_VERSION). - Central
configtable replaces various columns; new tables for chat, leave, edit lock, carry, AI and more. - Collation set to
utf8mb4_unicode_ci; extensions for network, iCal, HR, working-hours act, date format.
🔒 Security
- Custom Crypt encryption, central Auth class with role/kiosk logic & cross-tenant protection.
- Central CSRF check, output escaping, CSV/formula-injection protection.
- SSO (Google/Microsoft/Apple), Turnstile, brute-force protection, MD5→bcrypt upgrade.
✓ Bug fixes
- Regional company holiday is recognised company-wide again.
- Overtime grand total = sum of the per-day rounded values.
- SAP order import: correct UTF-8 special characters; various mobile fixes.
{ } Technical changes
- Architecture: monolith (
inc/*.inc+ singletons) → MVC with controllers, templates and services. - Email: Symfony Mailer with 9-language templates; languages from
.incto.js. - Legal texts consolidated in
legal.json; new test suite for calculation/security cores.
⚠ Breaking changes
- Old
inc/*.incpages and singleton classes have been removed. - DB migrations are mandatory; configuration via
etime.env+configtable. - Email via Symfony Mailer; AJAX contract changed (
{ok,data}/{ok,error}, paramf). - Language files
.inc→.js; marketing/legal pages renamed/merged.