Driving Planner
Eine Full-Stack-Web-App für Fahrschüler und Fahrschulen. Man findet Fahrschulen in der Nähe (Geocoding über OpenStreetMap), meldet sich für Programme an, erfasst gefahrene Kilometer, Termine und Aufgaben und bewertet Fahrschulen, während Fahrschulen ihre eigene Seite verwalten. Ein Vue-3-Frontend mit PrimeVue, Pinia und Deutsch/Englisch spricht mit einer Express-REST-API mit SQLite, JWT und Swagger-Doku, gestartet mit Docker Compose.
- Sprache
- TypeScript
- Jahr
- 2026
- Team
- 3 Personen
- Stack
- Vue
- TypeScript
- PrimeVue
- Pinia
- Express
- SQLite
- JWT
- Docker
Router, Service und Repository je Feature: Fahrschulen, Programme, Anmeldungen, Kilometerlog, Termine, Aufgaben, Bewertungen, Benutzer, Auth
- Docker Compose
- Swagger
- Jest
Funktionen
- Fahrschulen in der Nähe finden, sortiert nach ihrer Entfernung vom eigenen Wohnort.
- Sich für Programme einer Fahrschule anmelden und die Ausbildung verfolgen.
- Gefahrene Kilometer, Fahrstunden und andere Termine sowie Aufgaben eintragen.
- Fahrschulen bewerten und kommentieren.
- Fahrschulen verwalten ihre eigene Seite.
- Oberfläche auf Englisch und Deutsch, mit Profilbildern.
So ist es gebaut
Das Frontend ist eine Vue-3-Single-Page-App mit PrimeVue-Komponenten, Pinia-Stores, Vue Router und vue-i18n für Englisch und Deutsch. Es spricht mit einer REST-API auf Basis von Express 5, geschrieben in TypeScript.
Das Backend ist nach Features gegliedert (Fahrschulen, Programme, Anmeldungen, Kilometerlog, Termine, Aufgaben, Bewertungen, Benutzer, Auth), jedes mit Router, Service und Repository. Die Daten liegen über better-sqlite3 in SQLite, gekapselt in einer kleinen Unit-of-Work-Klasse, die jede Änderung in einer Transaktion ausführt. Passwörter werden mit bcrypt gehasht, Anfragen per JWT authentifiziert, und Swagger dokumentiert jeden Endpunkt.
Fahrschulen ohne Koordinaten werden im Hintergrund über Nominatim von OpenStreetMap geokodiert, mit einer Anfrage pro Sekunde, wie es die Nutzungsbedingungen verlangen. Docker Compose startet den ganzen Stack, zum Entwickeln mit Hot Reload oder als Release, und Jest-Tests decken die wichtigsten Router ab.