đ SymptoCar â Auto-Symptom-Diagnose-App
SymptoCar ist eine moderne Web-Anwendung zur Diagnose von Auto-Symptomen. Nutzer können Symptome eingeben und erhalten passende Ursachen aus einer umfangreichen Datenbank. Die App bietet vollstÀndige CRUD-FunktionalitÀt, React Hooks, Testing und ein ansprechendes UI - komplett ohne externe Backend-Services.
đ Features & Funktionen
đ Diagnosesystem
- Nutzer geben ein Symptom ein (z.B. âAuto zieht nach linksâ)
- Die App zeigt passende Ursachen aus der lokalen Datenbank
- Intelligente Suche ĂŒber Symptome, Ursachen und Kategorien
đ CRUD-FunktionalitĂ€t
- â
Create: Neue Symptome erstellen
- â
Read: Symptome anzeigen und durchsuchen
- â
Update: Symptome bearbeiten
- â
Delete: Symptome löschen
âïž Modernes Frontend
- Next.js 16 mit App Router
- React 19 mit Hooks (useState, useEffect)
- Tailwind CSS 4 fĂŒr modernes Styling
- Dynamische UI-Komponenten
- Dark Mode Support
- Responsive Design
đ§Ș Testing
- Jest + React Testing Library
- Mindestens zwei TestfÀlle pro Komponente
- Given-When-Then-Struktur
- Positive und negative Szenarien
đš UI/UX
- Tab-Navigation (Diagnose / Symptome verwalten)
- Formularvalidierung mit Fehleranzeige
- Inline-Bearbeitung von Symptomen
- Kategorie-Tags fĂŒr bessere Ăbersicht
đ ïž Installation & Startanleitung
đ„ Projekt klonen
git clone https://github.com/RiartC/CarCheck.git
cd CarCheck/carcheck
đŠ AbhĂ€ngigkeiten installieren
â¶ïž Entwicklungsserver starten
Die App lÀuft unter: http://localhost:3000
đ§Ș Tests ausfĂŒhren
# Alle Tests ausfĂŒhren
npm run test:ci
# Tests im Watch-Modus
npm test
đ Projektstruktur
carcheck/
âââ src/
â âââ app/
â â âââ layout.js # Root Layout
â â âââ page.js # Hauptseite (Home)
â â âââ globals.css # Globale Styles
â â
â âââ components/
â â âââ SymptomForm.jsx # Suchformular fĂŒr Symptome
â â âââ DiagnosisResult.jsx # Anzeige der Diagnoseergebnisse
â â âââ SymptomList.jsx # Liste aller Symptome
â â âââ AddSymptomForm.jsx # Formular zum HinzufĂŒgen neuer Symptome
â â
â âââ lib/
â â âââ symptomsData.js # Lokale Symptom-Datenbank
â â
â âââ tests/
â âââ SymptomForm.test.js # Tests fĂŒr SymptomForm
â âââ DiagnosisResult.test.js # Tests fĂŒr DiagnosisResult
â
âââ public/ # Statische Assets
âââ jest.config.js # Jest Konfiguration
âââ jest.setup.js # Jest Setup
âââ package.json # AbhĂ€ngigkeiten
âââ README.md # Diese Datei
𧩠TestfÀlle (Given-When-Then)
Given: Nutzer gibt âAuto zieht nach linksâ ein
When: Er klickt auf âDiagnose anzeigenâ
Then: Die App ruft die onSearch-Funktion mit dem Symptom auf
Given: Das Eingabefeld ist leer
When: Nutzer klickt auf âDiagnose anzeigenâ
Then: Die App zeigt die Fehlermeldung âBitte ein Symptom eingeben.â an
â
Positiver Test - DiagnosisResult
Given: Suchergebnisse sind vorhanden
When: Komponente wird gerendert
Then: Alle Symptome, Kategorien und Ursachen werden angezeigt
â Negativer Test - DiagnosisResult
Given: Keine Suchergebnisse gefunden
When: Komponente wird gerendert
Then: Meldung âKeine Ergebnisse gefundenâ wird angezeigt
đ„ïž Technologie-Stack
Frontend
- Next.js 16 - React Framework mit App Router
- React 19 - UI Library
- Tailwind CSS 4 - Utility-First CSS Framework
State Management
- React Hooks (useState)
- Lokaler Component State
Datenverwaltung
- Lokale JavaScript-Datenbank (kein Backend erforderlich)
- LocalStorage fĂŒr benutzerdefinierte Symptome (optional erweiterbar)
Testing
- Jest 29 - Test Framework
- React Testing Library 14 - Component Testing
- @testing-library/jest-dom - Custom Jest Matchers
- ESLint - Code Linting
- PostCSS - CSS Processing
đ Deployment
Die App kann einfach ĂŒber Vercel deployed werden:
- Pushe dein Repository zu GitHub
- VerknĂŒpfe das Repository mit Vercel
- Vercel fĂŒhrt automatisch
npm run build aus
- Die App ist verfĂŒgbar unter:
https://your-project.vercel.app
Alternativ kann die App auch auf anderen Plattformen deployed werden:
đ„ Team / Autor:innen
ïżœ Zwischenabgabe - Aktueller Stand
â
Bewertungskriterien - Status
1. GitHub-Repository
â
Repository ist eingereicht und zugÀnglich
- URL: https://github.com/RiartC/CarCheck
- Repository ist öffentlich verfĂŒgbar
- Alle Dateien sind hochgeladen
2. Commit-Historie
â
Mehrere nachvollziehbare Arbeitsschritte
- Initial commit mit Next.js Setup
- Implementierung der Kernkomponenten (SymptomForm, DiagnosisResult, SymptomList, AddSymptomForm)
- Integration der Symptom-Datenbank
- HinzufĂŒgung von Tests (Jest + React Testing Library)
- UI-Verbesserungen mit Tailwind CSS
- Finale Integration aller Features
3. Grundstruktur der App
â
Struktur ist klar erkennbar
carcheck/
âââ src/app/ â Next.js App Router (Seiten)
âââ src/components/ â React Komponenten
âââ src/lib/ â Business Logic & Daten
âââ src/tests/ â Jest Tests
4. Kernfunktionen umgesetzt
â
Folgende Funktionen sind vollstÀndig implementiert:
CRUD-FunktionalitÀt:
- â
Create: Neue Symptome ĂŒber
AddSymptomForm.jsx hinzufĂŒgen
- â
Read: Symptome anzeigen und durchsuchen ĂŒber
SymptomForm.jsx und DiagnosisResult.jsx
- â
Update: Symptome inline bearbeiten in
SymptomList.jsx
- â
Delete: Symptome löschen in
SymptomList.jsx
State Management:
- React Hooks (useState, useEffect) in allen Komponenten implementiert
- Zentrale Datenverwaltung ĂŒber
symptomsData.js
Diagnose-Logik:
- Intelligente Suche nach Symptomen, Ursachen und Kategorien
- Filterung und Anzeige relevanter Ergebnisse
5. App-FunktionalitÀt
â
App lÀsst sich starten und funktioniert
- Entwicklungsserver startet ohne Fehler
- Alle Seiten sind erreichbar (Home, Disclaimer)
- Navigation zwischen den Tabs funktioniert
- Formulare sind funktional und validieren Eingaben
- CRUD-Operationen funktionieren einwandfrei
6. Code-Struktur
â
Code ist ĂŒbersichtlich und sinnvoll organisiert
- Komponenten: Jede Komponente hat eine klare Verantwortlichkeit
SymptomForm.jsx â Symptom-Eingabe
DiagnosisResult.jsx â Ergebnisanzeige
SymptomList.jsx â Symptom-Verwaltung
AddSymptomForm.jsx â Neue Symptome erstellen
- Lib-Ordner: Business Logic getrennt von UI
- Tests: Dedizierter Test-Ordner mit strukturierten Tests
- Konsistente Namenskonventionen: camelCase fĂŒr Variablen, PascalCase fĂŒr Komponenten
7. UI/Layout-Konzept
â
Modernes UI-Konzept ist sichtbar
- Tailwind CSS 4: DurchgĂ€ngig fĂŒr Styling verwendet
- Responsive Design: Funktioniert auf Desktop und Mobile
- Dark Mode: Dunkles Theme implementiert
- Komponenten-Design:
- Formulare mit Validierung und Fehleranzeige
- Tab-Navigation zwischen Diagnose und Verwaltung
- Kategorie-Tags fĂŒr bessere Ăbersicht
- Inline-Bearbeitung mit Edit/Delete-Buttons
- Ansprechende Farbgebung (GrĂŒntöne, gute Kontraste)
8. Dokumentation
â
Beschreibt klar den aktuellen Stand
- VollstÀndiges README mit allen Funktionen
- Installation und Setup detailliert beschrieben
- Projektstruktur dokumentiert
- TestfÀlle mit Given-When-Then erklÀrt
- Technologie-Stack aufgelistet
9. Weitere Planung
â
Realistisch und nachvollziehbar
Kurzfristig (nÀchste 2 Wochen):
Mittelfristig (bis Endabgabe):
Optional (bei Zeit):
đ Rahmenbedingungen
1.5.1 Allgemeine Anforderungen
â
Iteratives Projekt mit Zwischenabgaben
â
Ăffentliche Versionierung im GitHub-Repository
1.5.2 Funktionale Anforderungen
â
CRUD-FunktionalitÀt (Create, Read, Update, Delete)
â
State-Management mit React Hooks
â
Lokale Datenverwaltung (keine externe Datenbank erforderlich)
â
Mindestens zwei Tests mit Jest + RTL
1.5.3 Technische Anforderungen
â
Framework: Next.js 16
â
Styling mit Tailwind CSS
â
Deployment ĂŒber Vercel
â
GitHub mit Branch-Nutzung und saubarer Commit-Historie
â
README mit klar definierten Abschnitten
1.5.4 TestfÀlle
â
Struktur: Given â When â Then
â
Positive & negative Szenarien
â
Mindestens 2 TestfÀlle pro Hauptkomponente
đ Erweiterungsmöglichkeiten
- đ€ KI-gestĂŒtzte Diagnose mit OpenAI oder lokalen Modellen
- đ Diagnose-Historie pro Nutzer mit LocalStorage
- đ·ïž Erweiterte Kategorien (Motor, Elektronik, Fahrwerk, etc.)
- đž Foto-Upload zur visuellen Problemanalyse
- đ Mehrsprachigkeit (i18n)
- đŸ Persistente Speicherung mit IndexedDB
- đ± Progressive Web App (PWA) fĂŒr Offline-Nutzung
- đ Wartungserinnerungen basierend auf Kilometern/Zeit
- đ ïž Werkstatt-Finder Integration
đ Lizenz
Dieses Projekt wurde fĂŒr Bildungszwecke erstellt.
đ€ BeitrĂ€ge
Contributions sind willkommen! Bitte erstelle einen Pull Request oder öffne ein Issue.
Viel Erfolg bei der Auto-Diagnose! đđš