4f6aff32ab
continuous-integration/drone/push Build is passing
- API Key Middleware für alle /api/ Endpoints (X-API-Key, Bearer, Query) - API Key Management Routes (generate, revoke, status) - MCP Tools erweitert: 12 Tools (war 3) inkl. bulk ops, dashboard, search - Audit Logging für alle API/MCP Aktionen - docs/API-REFERENCE.md - vollständige API Dokumentation - docs/ARCHITECTURE.md - Architektur-Übersicht - Vorbereitung für NotiBot-Integration
159 lines
4.3 KiB
Markdown
159 lines
4.3 KiB
Markdown
# TaskFlow Architektur
|
|
|
|
**Stand:** 2026-02-03
|
|
|
|
---
|
|
|
|
## Stack
|
|
|
|
| Schicht | Technologie |
|
|
|---|---|
|
|
| **Frontend** | React 18, TypeScript, Tailwind CSS, shadcn/ui, Vite |
|
|
| **Backend** | Express.js, TypeScript, Node.js |
|
|
| **Datenbank** | PostgreSQL 15, Drizzle ORM |
|
|
| **State** | TanStack Query (Client), Express Session (Server) |
|
|
| **Auth** | Passport.js (Local Strategy), API Key, 2FA (Email OTP) |
|
|
| **Build** | Vite (Frontend), ESBuild (Server Bundle) |
|
|
| **Deployment** | Docker, Docker Compose |
|
|
|
|
---
|
|
|
|
## Verzeichnisstruktur
|
|
|
|
```
|
|
/opt/task-manager/
|
|
├── client/ # React Frontend
|
|
│ └── src/
|
|
│ ├── components/ # UI-Komponenten
|
|
│ │ ├── adhd/ # ADHD-Mode Features
|
|
│ │ ├── admin/ # Admin-Panel
|
|
│ │ └── gamification/ # Gamification UI
|
|
│ ├── pages/ # Seitenkomponenten
|
|
│ ├── hooks/ # Custom React Hooks
|
|
│ └── lib/ # Utilities, API Client
|
|
├── server/ # Express Backend
|
|
│ ├── index.ts # Server Entry Point
|
|
│ ├── routes.ts # API Routes (~2400 Zeilen)
|
|
│ ├── storage.ts # Storage Interface + Implementierungen
|
|
│ ├── auth.ts # Passport Auth + Session
|
|
│ ├── api-key-auth.ts # API Key Middleware [NEU]
|
|
│ ├── mcp.ts # MCP Server (JSON-RPC)
|
|
│ ├── ai.ts # AI Service (Chat, Scheduling)
|
|
│ ├── gamification.ts # XP, Levels, Streaks
|
|
│ ├── email.ts # SMTP Email Service
|
|
│ ├── push.ts # Web Push Notifications
|
|
│ ├── db.ts # Database Connection
|
|
│ └── services/
|
|
│ └── recurrence.ts # Recurring Tasks
|
|
├── shared/ # Shared Types
|
|
│ ├── schema.ts # Drizzle DB Schema + Zod
|
|
│ └── gamification.ts # XP/Level Constants
|
|
├── docs/ # Dokumentation
|
|
│ ├── ARCHITECTURE.md # Diese Datei
|
|
│ ├── API-REFERENCE.md # API Dokumentation
|
|
│ └── REFACTORING-REVIEW.md # Code Review
|
|
├── docker-compose.yml
|
|
├── Dockerfile
|
|
└── package.json
|
|
```
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
### Core
|
|
- Task CRUD mit Labels, Prioritäten, Due-Dates
|
|
- Kalender-Ansicht (Drag & Drop)
|
|
- Kanban Board (Traditional, Weekly, Monthly)
|
|
- Subtasks / Parent-Child Beziehungen
|
|
- Time Tracking mit Timer
|
|
- Task Sharing (User-to-User, Label Sharing)
|
|
|
|
### Gamification
|
|
- XP-System mit Levels
|
|
- Tägliche Streaks
|
|
- Rewards Shop
|
|
- Leaderboard
|
|
- Daily Challenges
|
|
|
|
### ADHD Mode
|
|
- Quick Win List (kurze Tasks zuerst)
|
|
- Single Task View (Fokus-Modus)
|
|
- Energy Check-In (Low/Medium/High)
|
|
- Break Reminders
|
|
- Hyperfocus Guard
|
|
- Visual Timer
|
|
- Body Doubling Sessions
|
|
|
|
### AI Integration
|
|
- Chat mit Kontext (Tasks, User-Profil)
|
|
- Auto-Scheduling (AI plant Task-Termine)
|
|
- Task Completion Analysis
|
|
- Task Breakdown (AI teilt große Tasks auf)
|
|
- Configurable Provider (OpenAI, Ollama, etc.)
|
|
|
|
### Communication
|
|
- Email (Passwort-Reset, 2FA, Routinen)
|
|
- Web Push Notifications
|
|
- MCP Server (für AI-Tools)
|
|
|
|
### Admin
|
|
- User Management (erstellen, deaktivieren, löschen)
|
|
- System Settings (SMTP, AI, Registration)
|
|
- Audit Logs
|
|
- XP Reset
|
|
|
|
---
|
|
|
|
## Datenmodell (Wichtigste Tabellen)
|
|
|
|
```
|
|
users ──┬── tasks ──── labels
|
|
│ └── sharedTasks
|
|
├── conversations ── messages
|
|
├── xpEvents
|
|
├── userRewards ── rewards
|
|
├── focusSessions
|
|
├── dailyChallenges
|
|
├── breakLogs
|
|
├── energyLogs
|
|
└── auditLogs
|
|
```
|
|
|
|
---
|
|
|
|
## Auth-Flow
|
|
|
|
```
|
|
Browser Request
|
|
│
|
|
├── Hat Session Cookie? → Passport Session Auth → req.user
|
|
│
|
|
├── Hat X-API-Key / Bearer? → API Key Middleware → req.user
|
|
│
|
|
└── Keins von beiden → 401 Unauthorized
|
|
```
|
|
|
|
---
|
|
|
|
## Deployment
|
|
|
|
### Lokal (Development)
|
|
```bash
|
|
cd /opt/task-manager
|
|
npm run dev # Vite + Express auf Port 5001
|
|
```
|
|
|
|
### Docker (Production)
|
|
```bash
|
|
docker-compose up -d # PostgreSQL + App auf Port 5000
|
|
```
|
|
|
|
### Live
|
|
- **URL:** https://task.nothaft.cloud
|
|
- Reverse Proxy davor (vermutlich Caddy/Nginx)
|
|
|
|
---
|
|
|
|
*Letzte Aktualisierung: 2026-02-03*
|