From f6b5a580385d0c191d8d374f72479f5c86a00900 Mon Sep 17 00:00:00 2001 From: jamulix Date: Fri, 24 Oct 2025 11:03:53 +0200 Subject: [PATCH] =?UTF-8?q?-m=20"Projekt=20aufger=C3=A4umt:=20=C3=9Cberfl?= =?UTF-8?q?=C3=BCssige=20Dateien=20gel=C3=B6scht."?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 95 +++++++++++++++++++++++++------------------------------ 1 file changed, 43 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 74853e9..3c5a943 100644 --- a/README.md +++ b/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 - -![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/` - 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