-m "Projekt aufgeräumt: Überflüssige Dateien gelöscht."

This commit is contained in:
jamulix 2025-10-24 11:03:53 +02:00 committed by jamulix (aider)
commit f6b5a58038

View file

@ -1,28 +1,32 @@
# Typewriter Tutor - Tipptrainer
Ein webbasierter Tipptrainer, der Ihnen hilft, das Zehnfingersystem zu erlernen und Ihre Tippgeschwindigkeit zu verbessern.
(Nur ein Übungsprojekt, um die Anwendung von [Aider](https://aider.chat/) auszuprobieren. Die Statistik ist noch buggy.)
## Screenshot
![Screenshot](images/screenshot.jpg)
Ein webbasierter Tipptrainer, der Ihnen hilft, das Zehnfingersystem zu erlernen und Ihre Tippgeschwindigkeit zu verbessern. (Nur ein Übungsprojekt, um die Anwendung von [Aider](https://aider.chat/) zu erlernen. )
## Funktionen
- **Lektionen-basiertes Training**: 20 strukturierte Lektionen von Grundlagen bis zu Programmiertexten
- **Echtzeit-Statistiken**: Anzeige von Tippgeschwindigkeit (WPM) und Genauigkeit
- **Fortschrittsverfolgung**: Persistente Speicherung Ihrer Lernfortschritte
- **Lektionen-basiertes Training**: Strukturierte Lektionen von Grundlagen bis zu Programmiertexten
- **Echtzeit-Statistiken**: Anzeige von Tippgeschwindigkeit (ZPM, WPM) und Fehlerrate
- **Fortschrittsverfolgung**: Persistente Speicherung Ihrer Lernfortschritte in SQLite-Datenbank
- **Detaillierte Statistik-Seite**: Diagramme zur Visualisierung Ihrer Leistung über die Zeit
- **Responsive Design**: Funktioniert auf Desktop und mobilen Geräten
- **Dark/Light Mode**: Anpassbare Oberfläche
- **Flexible Lektionen-Auswahl**: Direkter Zugriff auf beliebige Lektionen
- **Zeilenweises Tippen**: Text wird zeilenweise dargestellt und abgetippt
- **Anti-Cheat-Schutz**: Verhindert Copy-Paste und andere unerlaubte Hilfen
## Technologien
- **Backend**: Python mit Flask Framework
- **Frontend**: HTML, CSS, JavaScript mit Bootstrap
- **Frontend**: HTML, CSS, JavaScript mit Bootstrap 5
- **Datenbank**: SQLite mit SQLAlchemy ORM
- **Datenpersistenz**: JSON-basierte Lektionen
- **Diagramme**: Chart.js für statistische Auswertungen
- **Datenpersistenz**:
- Lektionen: JSON-basierte Lektionen in `data/lessons.json`
- Fortschritt und Statistiken: SQLite-Datenbank in `instance/typewriter.db`
## Datenbank
Die Datenbank (`instance/typewriter.db`) wird automatisch erstellt und mit den Tabellen initialisiert, wenn die Anwendung zum ersten Mal gestartet wird. Die Lektionen werden aus `data/lessons.json` geladen.
## Installation
@ -66,70 +70,57 @@ typewriter/
│ └── js/
│ └── script.js # Client-seitige Logik
├── templates/
│ └── index.html # Haupttemplate
└── instance/
└── database.db # SQLite-Datenbank (wird automatisch erstellt)
│ ├── index.html # Haupttemplate
│ └── statistics.html # Statistik-Seite
├── instance/
│ └── typewriter.db # SQLite-Datenbank (wird automatisch erstellt)
└── README.md
```
## Lektionen-Übersicht
Das Training umfasst 20 Lektionen:
1. **Grundreihe** (asdf jklö)
2. **Kombinationen der Grundreihe**
3. **Leichte Wörter**
4. **Neue Buchstaben** (q w e r t z)
5. **Kurze Wörter**
6. **Einfache Sätze**
7. **Umlaute und ß**
8. **Komplexe Wörter**
9. **Kurze Textpassagen**
10. **Fließtextrealismus**
11. **Sonderzeichen und Zahlen**
12. **Dialoge**
13. **Redewendungen**
14. **Thematische Texte**
15. **Abschlusstext**
16. **Programmierzeichen**
17. **Python Basics**
18. **C-Style Syntax**
19. **HTML / JavaScript**
20. **JSON Parsing**
## Verwendung
1. Starten Sie die Anwendung und öffnen Sie sie im Browser
2. Wählen Sie eine Lektion aus der Seitenleiste
3. Tippen Sie den angezeigten Text in das Eingabefeld
4. Ihre Statistiken (WPM und Genauigkeit) werden in Echtzeit aktualisiert
5. Wechseln Sie zur nächsten Lektion oder beenden Sie die Sitzung
2. Wählen Sie eine Lektion aus der Lektionsleiste
3. Tippen Sie den angezeigten Text zeilenweise in das Eingabefeld
4. Ihre Statistiken (ZPM, WPM und Fehlerrate) werden in Echtzeit aktualisiert
5. Wechseln Sie zur nächsten Lektion oder besuchen Sie die Statistik-Seite
## Zeitmessung und Statistik
Die Zeitmessung beginnt mit dem ersten Tastendruck und läuft kontinuierlich bis zum Abschluss der Lektion. Folgende Metriken werden berechnet:
Die Zeitmessung beginnt mit dem ersten Tastendruck und läuft kontinuierlich. Folgende Metriken werden berechnet:
- **Tastaturanschläge**: Jeder Tastendruck wird gezählt (inklusive Backspace)
- **Korrekte Zeichen**: Zeichen, die exakt mit der Vorlage übereinstimmen
- **Falsche Zeichen**: Differenz zwischen Gesamtanschlägen und korrekten Zeichen
- **Zeichen pro Sekunde**: Korrekte Zeichen / verstrichene Zeit in Sekunden
- **Zeichen pro Minute (ZPM)**: (Korrekte Zeichen / verstrichene Zeit in Sekunden) * 60
- **Fehlerrate**: (Falsche Zeichen * 100) / Korrekte Zeichen
- **Wörter pro Minute (WPM)**: (Korrekte Zeichen / 5) / (verstrichene Zeit in Minuten)
Die Berechnung erfolgt über die gesamte Lektion hinweg und berücksichtigt alle Zeilen.
## Statistik-Seite
Die Anwendung bietet eine detaillierte Statistik-Seite unter `/statistics` mit:
- **Interaktiven Diagrammen**: Zeigt ZPM, Fehlerrate und WPM über die Zeit
- **Lektionsauswahl**: Wählen Sie verschiedene Lektionen zur Analyse aus
- **Historische Daten**: Verfolgen Sie Ihre Fortschritte über mehrere Sitzungen
## Entwickler-Funktionen
- `/debug` - Debug-Informationen
- `/repair_json` - JSON-Reparatur-Endpoint
- `/recreate_lessons` - Lektionen neu erstellen
- `/debug` - Debug-Informationen zur Lektionen-Ladung und Konfiguration
- `/repair_json` - JSON-Reparatur-Endpoint für beschädigte Lektionsdateien
- `/recreate_lessons` - Lektionen neu erstellen (Fallback)
- `/update_progress` - Fortschritt aktualisieren
- `/next_text` - Nächsten Text anfordern
- `/set_lesson` - Lektion setzen
- `/end_session` - Sitzung beenden
- `/save_lesson_statistics` - Lektionsstatistiken speichern
- `/get_lesson_statistics/<int:lesson_index>` - Lektionsstatistiken abrufen
## Screenshot
## Datenbank-Modelle
![Typewriter Tutor Screenshot](https://raw.githubusercontent.com/jamulix/typewriter/main/data/typewriter_screeshot.jpg)
- **Progress**: Speichert den aktuellen Fortschritt (aktuelle Lektion, Position)
- **Statistic**: Allgemeine Tippstatistiken
- **LessonStatistic**: Detaillierte Statistiken pro Lektion mit Zeitstempel
## Lizenz