v2.1.0: Copy Previous Week, Bulk Approve, Overtime Tracking

Features:
- Copy Previous Week: one-tap to duplicate last week's entries
- Bulk Approve/Reject: multi-select + batch actions for admin reviews
- Overtime Tracking: admin report tab + employee real-time OT warnings
- Homeowner filter on reports
- Homeowner edit/search/address fields
- Employee role management + deactivate/reactivate
- Reopen locked timesheets

Fixes:
- Timezone bug (UTC vs local date parsing)
- CORS, approve 400, PDF download, auto-save errors
- History page crash, rate limiting
This commit is contained in:
BizzleBot
2026-02-15 21:43:31 +00:00
parent a7c138add1
commit efafbea297
12 changed files with 758 additions and 52 deletions
+24 -7
View File
@@ -25,11 +25,15 @@
- **🔐 JWT authentication** — Secure login with access/refresh tokens + rate limiting
- **📅 Weekly timesheets** — Monday–Sunday pay period with auto-save
- **🏠 Multiple homeowners per day** — Track work at different job sites
- **📋 Copy Previous Week** — One tap to duplicate last week's entries as a template
- **✅ Submit → Approve workflow** — Employees submit, admins approve or reject
- **⚡ Bulk Approve/Reject** — Select all + approve 40 timesheets in one click
- **⏱️ Overtime Tracking** — Real-time OT warnings for employees, admin reports with per-employee weekly breakdown
- **📄 PDF generation** — Professional server-side PDF export
- **📧 Email integration** — Send timesheets via email with SMTP
- **👥 Admin panel** — Manage employees, homeowners, review timesheets
- **📊 Reporting** — Filter by employee, date range, status with summary stats
- **📊 Reporting** — Filter by employee, homeowner, date range, status
- **🏡 Homeowner management** — Add, edit, search, activate/deactivate with address fields
- **🌙 Dark mode** — System-aware with manual toggle
- **🐳 One-command deploy** — Single `docker compose up` for the entire stack
@@ -40,26 +44,39 @@
<table>
<tr>
<td align="center"><strong>Timesheet Entry</strong></td>
<td align="center"><strong>Entry Form</strong></td>
<td align="center"><strong>Copy Previous Week</strong></td>
<td align="center"><strong>Dark Mode</strong></td>
</tr>
<tr>
<td><img src="docs/screenshots/02-timesheet-mobile.png" width="250" /></td>
<td><img src="docs/screenshots/03-entry-form-mobile.png" width="250" /></td>
<td><img src="docs/screenshots/08-timesheet-copy-week.png" width="250" /></td>
<td><img src="docs/screenshots/07-dark-mode-mobile.png" width="250" /></td>
</tr>
</table>
<table>
<tr>
<td align="center"><strong>Admin Panel</strong></td>
<td align="center"><strong>Bulk Approve</strong></td>
<td align="center"><strong>Overtime Tracking</strong></td>
<td align="center"><strong>Reports & Filters</strong></td>
<td align="center"><strong>History</strong></td>
</tr>
<tr>
<td><img src="docs/screenshots/05-admin-mobile.png" width="250" /></td>
<td><img src="docs/screenshots/06-admin-reports-mobile.png" width="250" /></td>
<td><img src="docs/screenshots/09-admin-bulk-approve.png" width="250" /></td>
<td><img src="docs/screenshots/10-admin-overtime.png" width="250" /></td>
<td><img src="docs/screenshots/12-admin-reports-filters.png" width="250" /></td>
</tr>
</table>
<table>
<tr>
<td align="center"><strong>Homeowner Management</strong></td>
<td align="center"><strong>History</strong></td>
<td align="center"><strong>Entry Form</strong></td>
</tr>
<tr>
<td><img src="docs/screenshots/11-admin-homeowners.png" width="250" /></td>
<td><img src="docs/screenshots/04-history-mobile.png" width="250" /></td>
<td><img src="docs/screenshots/03-entry-form-mobile.png" width="250" /></td>
</tr>
</table>