Workers becomes a lean roster (name, employee number, position, type, site, rate) with filters unchanged. Everything currently cluttering the list row -- total hours, cost, the 8-week sparkline, per-employee entry history -- moves to a new worker detail page that doesn't exist yet (today's "detail" is a dialog). Same pattern already used for Suppliers and Vehicles/Equipment this session: lean list, detail page carries depth. Timesheets keeps its flat entries table but gains a genuinely separate upload-status section -- the timesheets document collection already has this data, it's just currently squeezed into a per-row badge instead of being its own thing. The duplicated Import-timesheets button (currently on both pages) moves here only. QR badges: encodes employee_no directly, no new PocketBase field -- every worker already has a valid code the moment they exist, with no generation step. Explicitly a deliberate tradeoff (guessable numbers, no revocation) the user chose for now, pending seeing how the separate timekeeping PWA wants identity handled -- moving to a stored opaque token later is additive, not a rework. Card layout confirmed via the visual companion (centered, QR-forward). Both single-worker and batch-sheet print confirmed in scope. Rendering via the qrcode npm package + the browser's own print dialog (@media print), not a PDF library -- CSS handles real-world card dimensions more reliably than fighting a PDF engine's coordinate system. The timekeeping PWA itself is explicitly out of scope -- a separate project this spec only needs to stay compatible with. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
32 lines
547 B
Text
32 lines
547 B
Text
node_modules/
|
|
.next/
|
|
out/
|
|
build/
|
|
dist/
|
|
*.tsbuildinfo
|
|
next-env.d.ts
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
# Local-only deployment/secret reference files (do not commit)
|
|
cooler.env
|
|
public/sw.js
|
|
public/sw.js.map
|
|
public/workbox-*.js
|
|
public/workbox-*.js.map
|
|
public/swe-worker-*.js
|
|
public/swe-worker-*.js.map
|
|
public/swe-worker-*.js.LICENSE.txt
|
|
.DS_Store
|
|
*.log
|
|
.vscode/
|
|
.idea/
|
|
|
|
# Kilo IDE config (contains MCP bearer tokens)
|
|
kilo.json
|
|
|
|
# Coolify production env template — placeholders only, real values stay local
|
|
.env.coolify.local
|
|
__pycache__/
|
|
|
|
.superpowers/
|