Entwicklerhandbuch¶
Willkommen zum TurnFix v2.0 Entwicklerhandbuch! Diese Dokumentation richtet sich an Entwickler, die an TurnFix beitragen oder das System erweitern möchten.
📋 Übersicht¶
TurnFix v2.0 ist eine moderne Full-Stack-Webanwendung, die die Legacy Qt/C++-Desktop-Anwendung ersetzt.
Technologie-Stack¶
Backend: - Node.js 18+ - Express.js - TypeScript 5+ - Prisma ORM - PostgreSQL
Frontend: - React 18 - TypeScript 5+ - Tailwind CSS 3 - Vite 5 - Socket.IO Client
Infrastructure: - PM2 (Process Manager) - Socket.IO (Real-time) - Windows Server (primary)
🗂️ Dokumentations-Struktur¶
Architektur¶
Verstehen Sie die System-Architektur:
Features & Implementation¶
Detaillierte Feature-Dokumentationen:
- Point 135: Startgeräte-Verwaltung ⭐ NEU
- Point 133: Bahn-Konzept
- Gender-Unification
- PDF-Export-System
- GymNet XML-Import
- Dynamic Field Mapping
API-Referenz¶
REST API Endpoints:
Best Practices¶
Code-Standards und Patterns:
Testing¶
Test-Strategie und Guidelines:
🚀 Quick Start für Entwickler¶
1. Repository klonen¶
2. Dependencies installieren¶
3. Datenbank einrichten¶
4. Development Server starten¶
→ Detaillierte Anleitung: Setup-Automation
📐 Architektur-Prinzipien¶
Backend-Architektur¶
server/
├── src/
│ ├── routes/ # REST API Endpoints
│ ├── middleware/ # Express Middleware
│ ├── utils/ # Helper Functions
│ ├── db/ # Prisma Client
│ └── index.ts # Server Entry Point
├── prisma/
│ └── schema.prisma # Database Schema (READONLY!)
└── ecosystem.config.js # PM2 Configuration
Wichtig: Datenbank-Schema NIEMALS ändern! (Legacy-Kompatibilität)
Frontend-Architektur¶
client/
├── src/
│ ├── pages/ # Route Components
│ ├── components/ # Reusable UI Components
│ ├── utils/ # Helper Functions
│ ├── i18n/ # Translations (DE/EN)
│ └── types/ # TypeScript Types
└── index.html
Pattern: EventManagementTemplate für konsistente UIs
🎯 Development Guidelines¶
Core Rules¶
- ✅ NIEMALS Datenbank-Schema ändern
- ✅ IMMER Feld-Mapping (camelCase ↔ snake_case)
- ✅ ALLE UI-Texte lokalisieren (DE/EN)
- ✅ ALLE Components mit TypeScript
- ✅ TESTS schreiben für neue Features
Code-Standards¶
// ✅ RICHTIG: Field Mapping
const mapped = {
id: row.int_disziplinenid,
name: row.var_name,
maleAllowed: row.bol_m
};
// ❌ FALSCH: DB-Felder direkt im Client
<td>{row.int_disziplinenid}</td>
→ Vollständige Standards: Code-Standards
🧩 Component-System¶
Standard-Templates¶
- EventManagementTemplate - Basis für Event-Seiten
- UnifiedPageHeader - Konsistente Header
- UnifiedDataView - Table/Card/Grid Views
- UnifiedFilter - Standardisierte Filter
- UnifiedDialog - Modale Dialoge
→ Details: Template-System
🔄 Point-Based Development¶
TurnFix nutzt ein Point-System für Feature-Tracking:
- Point 1-100: Basis-Features (✅ größtenteils erledigt)
- Point 101-135: Erweiterte Features (🚧 in Arbeit)
- Point 136+: Zukünftige Features (⏳ geplant)
Aktueller Stand: 135 Points (86 erledigt, 38.9%)
→ Vollständiger Status: Development Status
🛠️ Tools & Utilities¶
Entwicklungs-Tools¶
# TypeScript Kompilierung prüfen
npm run build
# Linting
npm run lint
# Tests ausführen
npm test
# PM2 Management
pm2 status
pm2 logs turnfix-server
pm2 restart turnfix-server
Debugging¶
→ Mehr Scripts: Development Scripts
📊 Database Guidelines¶
Prisma Best Practices¶
// ✅ RICHTIG: Singleton Pattern
import prisma from '../lib/prisma';
// ❌ FALSCH: Neue Instanz
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
→ Details: Database Best Practices
Legacy-Kompatibilität¶
Regel: Datenbank-Struktur NICHT ändern!
- Felder behalten:
int_id,var_name,bol_flag - Alte Qt/C++-App muss weiterhin funktionieren
- Nur neue Felder hinzufügen (wenn unbedingt nötig)
🌍 Lokalisierung¶
Alle UI-Texte müssen übersetzt werden:
// ✅ RICHTIG
import { useTranslation } from 'react-i18next';
const { t } = useTranslation();
<button>{t('common.save')}</button>
// ❌ FALSCH
<button>Save</button>
Translation-Files:
- client/src/i18n/locales/de.json
- client/src/i18n/locales/en.json
🤝 Contributing¶
Möchten Sie zu TurnFix beitragen?
Pull Request Workflow¶
- Feature Branch erstellen (
feature/point-XXX) - Changes implementieren
- Tests schreiben
- Build erfolgreich (
npm run build) - Commit mit Point-Nummer
- PR erstellen mit Beschreibung
Commit-Message Format¶
[Action] Point XXX: Brief description
Detailed description:
- Change 1
- Change 2
Files modified:
- file1.ts
- file2.tsx
→ Details: Commit Guidelines
📚 Weitere Ressourcen¶
🐛 Troubleshooting¶
Häufige Entwickler-Probleme:
| Problem | Lösung |
|---|---|
| Port 3001 belegt | taskkill /F /PID <pid> oder PM2 restart |
| TypeScript Fehler | npm run build im entsprechenden Ordner |
| Prisma Schema Fehler | NIEMALS Schema ändern! Nur via Prisma CLI |
| Socket.IO nicht verbunden | Server neu starten, Client Cache leeren |
→ Vollständige Liste: Troubleshooting
📞 Support für Entwickler¶
- 💬 Discussions: GitHub Discussions
- 🐛 Issues: GitHub Issues
- 📧 Direct Contact: [Maintainer kontaktieren]
Happy Coding! 🚀