-m "Projekt aufgeräumt: Überflüssige Dateien gelöscht."
This commit is contained in:
parent
26a726db39
commit
f6b5a58038
1 changed files with 43 additions and 52 deletions
95
README.md
95
README.md
|
|
@ -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
|
||||
|
||||

|
||||
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
|
||||
|
||||

|
||||
- **Progress**: Speichert den aktuellen Fortschritt (aktuelle Lektion, Position)
|
||||
- **Statistic**: Allgemeine Tippstatistiken
|
||||
- **LessonStatistic**: Detaillierte Statistiken pro Lektion mit Zeitstempel
|
||||
|
||||
## Lizenz
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue