95beb99cd4a00eadbdab2b5b17fa822dad7a7efd
Zeiterfassung - Neue Tabelle time_entry mit started_at/ended_at/duration_seconds, optional todo_id/bezug, category-Enum (focus/meeting/break/admin/learning/other), description, day_entry_id-Verknüpfung. Partial-Unique-Index erzwingt max. einen aktiven Timer pro User. - tRPC time-Router: now, start (stoppt aktiven automatisch), stop, listToday (Liste + Tagessumme), update, upsertManual (retroaktiv), delete, teamToday (personenübergreifend mit byCategory + aktivem Timer pro User). - TopNav: persistente TimerPill links neben Streak. Quick-Picker mit heutigen ToDos, Kategorie-Auswahl und Freitext-Start. Live-Sekundenzähler. - /heute: TimelineSection mit Edit/Delete pro Eintrag, ToDo-Bindung nachträglich änderbar, Block-nachtragen-Dialog. Pro ToDo-Zeile ▶-Start- und 🕐-Nachtrag-Button. - /puls: TeamTimeSection mit aktiver Timer-Anzeige + Tagessumme + Kategorie-Breakdown pro User (refresh alle 30s, Live-Tick jede Sekunde). Visual - Space Grotesk als Hausschrift (selbst-gehostet, latin + latin-ext) - Keycap-Button-Stil (Gradient + Druckeffekt) für primary/secondary/destructive - Neue Helper-Module: format-duration, time-categories Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ToolCTRL everythingbutwork
Internes Web-Tool zur täglichen Übersicht über alle Projekte und Bereiche. Ergänzt Plane (Tickets) und Outline (Doku) als drittes Werkzeug gemäß ToolCTRL Projektmanagement-Leitfaden v3.0.
Stack
- Frontend: Vite + React 18 + TypeScript + Tailwind (kommt in Story 1.5)
- Backend: Fastify + tRPC v11 + Drizzle (kommt in Story 1.4 + 1.2)
- DB: Postgres 16+ (kommt in Story 1.2)
- Auth: Authentik OIDC (kommt in Story 1.3)
- Hosting: Docker + Caddy auf interner ToolCTRL-Infrastruktur
Verzeichnisstruktur
.
├── apps/
│ ├── web/ # Vite + React SPA
│ └── api/ # Fastify Backend
├── packages/
│ ├── db/ # Drizzle-Schema + Migrationen
│ └── shared/ # Zod-Schemas + Konstanten + Typen
├── _bmad-output/ # Planungs-Artefakte (PRD, Architektur, UX, Epics)
└── CONVENTIONS.md # Bindende Code-Konventionen (Pflicht-Lesen)
Loslegen
pnpm install
pnpm --filter web dev # Frontend auf http://localhost:5173
pnpm --filter api dev # Backend auf http://localhost:3000
pnpm typecheck # Alle Workspaces typecheken
pnpm lint # ESLint
pnpm format # Prettier
Planungs-Artefakte
- PRD — 49 Functional Requirements, 16 NFRs
- Architektur — Stack, Schnitt, Patterns
- UX-Spec — Brand-Tokens, Komponenten, User Journeys
- Epics & Stories — 6 Epics, 32 Stories
- Konventionen — Naming, Struktur, Formate, Errors
Languages
TypeScript
85.1%
HTML
11.1%
Python
2%
CSS
0.8%
Dockerfile
0.4%
Other
0.6%