fast fertig

This commit is contained in:
2026-07-26 20:27:24 +02:00
parent 1370ad4ff7
commit c2fbb1b86f
19 changed files with 836 additions and 395 deletions
+50 -21
View File
@@ -1,36 +1,65 @@
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
# Familien-Motorrad-Tracker
## Getting Started
Gemeinsame Verwaltung von Motorrädern, Wartungen, TÜV-/Inspektionsterminen und Fahrten für eine Familie. Die App nutzt Next.js, TypeScript und SQLite und ist für den Betrieb per Docker hinter einem Reverse Proxy vorbereitet.
First, run the development server:
## Lokale Entwicklung
```bash
Voraussetzungen: Node.js 24 und npm.
```powershell
Copy-Item .env.example .env.local
npm ci
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
Vor dem Start in `.env.local` mindestens `ADMIN_PASSWORD`, `ADMIN_NAME` und `AUTH_SECRET` setzen. Die App ist anschließend unter `http://localhost:3000` erreichbar. Datenbank und Uploads liegen standardmäßig in `data\`.
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
Beim ersten Start wird genau dann ein Admin aus den `ADMIN_*`-Werten angelegt, wenn noch kein aktives Konto existiert. Danach meldet man sich mit `ADMIN_NAME` und `ADMIN_PASSWORD` an. Das initiale Passwort sollte direkt unter **Konto** geändert werden.
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
## Standard-Admin-Zugang (aus `.env.example`)
## Learn More
- Passwort: `change-this-password`
- Name: `Familien-Admin`
To learn more about Next.js, take a look at the following resources:
## Docker
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
```powershell
Copy-Item .env.example .env
# Sichere Werte in .env eintragen
docker compose up -d --build
```
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
Die Anwendung ist standardmäßig über Port 3000 erreichbar. `PORT` in `.env` ändert nur den veröffentlichten Host-Port. Für eine Domain sollte nginx, Traefik oder ein anderer Reverse Proxy TLS terminieren und auf diesen Port weiterleiten.
## Deploy on Vercel
Sichere Schlüssel lassen sich beispielsweise so erzeugen:
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
```powershell
node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))"
node -e "console.log(require('node:crypto').randomBytes(32).toString('base64'))"
```
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
Den Hex-Wert für `AUTH_SECRET` und den Base64-Wert für `NEXT_SERVER_ACTIONS_ENCRYPTION_KEY` verwenden.
## Benutzer und Rollen
Es gibt Administratoren und Mitglieder. Jedes Motorrad gehört genau einem Benutzer (Besitzer). Administratoren sehen alle Motorräder, Mitglieder sehen ihre eigenen plus explizit freigegebene Motorräder. Besitzer und Administratoren können Motorräder mit anderen aktiven Benutzern per Benutzername teilen. Konten werden durch Administratoren verwaltet. Motorräder dürfen vom Besitzer oder von Administratoren gelöscht werden. Gelöschte Benutzer können sich nicht mehr anmelden und sind nicht mehr als Fahrer auswählbar; vorhandene Wartungen und Fahrten bleiben mit dem ursprünglichen Namen zur Nachvollziehbarkeit erhalten. Der letzte aktive Administrator kann weder gelöscht noch herabgestuft werden.
## Backups
Alle persistenten Daten liegen im Docker-Volume `moped-data` unter `/app/data`:
- `moped-tracker.sqlite` sowie mögliche `-wal`-/`-shm`-Dateien
- `uploads\` mit Rechnungen und Fotos
Für ein konsistentes Backup den Container kurz stoppen und das komplette Volume sichern. Bei lokaler Entwicklung entsprechend den gesamten Ordner `data\` sichern.
## Qualität
```powershell
npm run lint
npm run build
```
## Sinnvolle nächste Ausbaustufen
E-Mail-Erinnerungen vor Fälligkeiten, Mehrsprachigkeit und PDF-Exporte der Wartungshistorie.