81edc206e0cc62cf1794eb227323be3dd2ccbe14
- installDate Schema akzeptiert jetzt YYYY-MM-DD Format (HTML date input) - maintenanceHistorySchema date akzeptiert jetzt YYYY-MM-DD Format - Transform konvertiert Datumsstrings automatisch zu Date-Objekten - API-Routes verwenden validierte Date-Objekte direkt - Alle Formularfelder haben jetzt schwarze Schriftfarbe (text-black) - Optional-Felder werden getrimmt (brand, model, notes)
Fahrrad Verschleißteile Tracker
Eine Single-Page-Application zur Erfassung und Verwaltung von Verschleißteilen an verschiedenen Fahrrädern.
Features
- Verwaltung mehrerer Fahrräder
- Erfassung von Verschleißteilen (Kette, Bremsbeläge, Reifen, etc.)
- Wartungshistorie für jedes Verschleißteil
- Warnsystem bei bevorstehender Wartung
- Statistiken (Gesamtkosten, durchschnittliche Lebensdauer)
- Keine Authentifizierung erforderlich
Technologie-Stack
- Framework: Next.js 14+ (App Router)
- Runtime: Bun
- Datenbank: SQLite (via Prisma)
- Styling: Tailwind CSS
- Validierung: Zod
- Testing: Vitest
Installation
- Dependencies installieren:
bun install
- Datenbank initialisieren:
bunx prisma generate
bunx prisma db push
Entwicklung
Entwicklungsserver starten:
bun run dev
Die Anwendung ist dann unter http://localhost:3000 erreichbar.
Tests
Tests ausführen:
bun run test
Tests mit UI:
bun run test:ui
Datenbank
Prisma Studio öffnen:
bun run db:studio
Projektstruktur
/
├── app/ # Next.js App Router
│ ├── api/ # API Routes
│ ├── components/ # React-Komponenten
│ └── bikes/ # Fahrrad-Detailseiten
├── prisma/
│ └── schema.prisma # Datenbankschema
├── lib/
│ ├── prisma.ts # Prisma Client
│ ├── utils.ts # Hilfsfunktionen
│ └── validations.ts # Zod-Schemas
├── types/ # TypeScript Typen
└── __tests__/ # Test-Dateien
Verschleißteil-Typen
Das Tool unterstützt folgende Verschleißteil-Typen:
- CHAIN (Kette)
- BRAKE_PADS (Bremsbeläge)
- TIRE (Reifen)
- CASSETTE (Ritzel)
- CHAINRING (Kettenblatt)
- DERAILLEUR (Schaltwerk)
- BRAKE_CABLE (Bremszug)
- SHIFT_CABLE (Schaltzug)
- BRAKE_ROTOR (Bremsscheibe)
- PEDAL (Pedale)
- CRANKSET (Kurbelgarnitur)
- BOTTOM_BRACKET (Tretlager)
- HEADSET (Steuersatz)
- WHEEL (Laufrad)
- HUB (Nabe)
- SPOKE (Speiche)
- OTHER (Sonstiges)
Description
Languages
TypeScript
99.5%
CSS
0.3%
JavaScript
0.2%