docs: readme, schnellstart, bebilderte anleitung und changelog 0.1.0
QUICKSTART fuehrt von null zur laufenden Instanz und enthaelt die vollstaendige Nginx-Proxy-Manager-Konfiguration - inklusive der beiden Stellen, an denen es sonst klemmt: client_max_body_size fuer grosse Anleitungs-PDFs und X-Forwarded-For fuer das Rate-Limit. Die Anleitung ist bebildert. Die 16 Screenshots entstehen automatisiert mit `pnpm screenshots` gegen das Produktions-Image im Container, nicht gegen den Dev-Server: der brach unter Last reproduzierbar mit ChunkLoadError ab, und die Bilder zeigen so ohnehin genau das, was nach `docker compose up` zu sehen ist. Nebenbei behoben: in der Mehrfachauswahl verdeckte die Aktionsleiste die letzte Kachelreihe. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+80
-8
@@ -7,14 +7,86 @@ die Versionierung [Semantic Versioning](https://semver.org/lang/de/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.1.0] - 2026-09-07
|
||||
|
||||
Erste lauffaehige Fassung: Phase 1 vollstaendig, im Docker-Stack verifiziert.
|
||||
|
||||
### Hinzugefuegt
|
||||
|
||||
- Projekt-Scaffold: Next.js 15 (App Router, TypeScript strict),
|
||||
Tailwind CSS 4, shadcn/ui, pnpm.
|
||||
- Vollstaendiges Datenmodell in Drizzle ORM mit initialer Migration:
|
||||
Katalog, Besitz, Wunschlisten und die Auth-Tabellen von better-auth.
|
||||
- SQLite-Anbindung mit WAL-Modus, aktivierten Fremdschluesseln und
|
||||
Migrations-Runner (`pnpm db:migrate`).
|
||||
- Projektdokumentation: CLAUDE.md, Roadmap, Changelog, Devlog.
|
||||
**Anmeldung**
|
||||
- Registrierung des ersten Nutzers, der damit Administrator wird; danach ist
|
||||
die Registrierung geschlossen.
|
||||
- Anmeldung per E-Mail und Passwort oder per Passkey (WebAuthn), inklusive
|
||||
Conditional UI, wo der Browser sie unterstuetzt.
|
||||
- Passkey-Verwaltung unter "Konto": beliebig viele Geraete, umbenennen,
|
||||
loeschen.
|
||||
- Rate-Limiting auf den Login-Endpunkten, in der Datenbank abgelegt und damit
|
||||
neustartfest.
|
||||
|
||||
[Unreleased]: https://git.wilde-server.de/florian.wilde/bricktrack/compare/main...HEAD
|
||||
**Katalog**
|
||||
- Set-Katalog mit Kachelansicht, Suche ueber Setnummer, Name und EAN sowie
|
||||
Filtern nach Hersteller, Thema, Jahr und Besitzstatus.
|
||||
- Sets anlegen und bearbeiten, mit Bild-Upload oder Bild-URL.
|
||||
- Set-Detailseite mit Metadaten, Anleitungen, Fotos und Sammlungseintraegen.
|
||||
- Anleitungen als PDF-Upload mit eingebautem pdf.js-Viewer oder als externer
|
||||
Link; mehrere Anleitungen je Set.
|
||||
- Eigene Fotos je Set, am Handy direkt aus der Kamera.
|
||||
|
||||
**Sammlung**
|
||||
- Uebersicht aller besessenen Sets mit Filtern nach Status, Vollstaendigkeit,
|
||||
Standort und Hersteller.
|
||||
- Statistik-Kacheln: Anzahl Sets, Teile gesamt, Wert nach UVP, fehlende Sets,
|
||||
sowie die Aufteilung nach Hersteller.
|
||||
- Sammlungseintraege mit Status, Zustand, Standort, Kaufdatum, Kaufpreis und
|
||||
"geschenkt von".
|
||||
|
||||
**Wunschlisten**
|
||||
- Ansicht "Fehlende Sets" mit Mehrfachauswahl: langes Druecken startet die
|
||||
Auswahl, die Aktionsleiste uebernimmt sie in eine bestehende oder neue
|
||||
Wunschliste. Dubletten und bereits besessene Sets werden uebersprungen und
|
||||
im Ergebnis benannt.
|
||||
- Wunschlisten mit Prioritaet, Reihenfolge, Anlass, Termin und Hinweistext.
|
||||
- Bereich "Aus fehlenden Sets hinzufuegen" auf der Wunschlisten-Seite,
|
||||
vorgefiltert auf Sets, die noch nicht drauf sind.
|
||||
- Oeffentliche Ansicht unter /w/[shareToken] ohne Anmeldung; Besucher
|
||||
reservieren mit ihrem Namen und erhalten einen Storno-Link.
|
||||
- Ueberraschungsmodus: der Besitzer sieht nur "reserviert", nicht von wem.
|
||||
- Erfuellte Wuensche werden automatisch markiert, sobald das Set in der
|
||||
Sammlung landet, und verschwinden aus der oeffentlichen Ansicht.
|
||||
- Share-Token laesst sich neu erzeugen; der alte Link ist danach tot.
|
||||
|
||||
**Stammdaten**
|
||||
- Hersteller, Themen (mit Unterthemen) und Standorte (schachtelbar) verwalten.
|
||||
|
||||
**Betrieb**
|
||||
- Docker-Stack: Multi-Stage-Build mit standalone-Output, non-root Nutzer,
|
||||
Healthcheck unter /api/health, ein Service und ein Bind-Mount auf ./data.
|
||||
- Migrationen laufen bei jedem Containerstart automatisch.
|
||||
- update.sh mit Sicherung, Build, Healthcheck und automatischem Rollback.
|
||||
- Seed-Skript mit 3 Herstellern, 6 Themen, 10 Sets, 4 Sammlungseintraegen und
|
||||
einer Wunschliste.
|
||||
- Dokumentation: Schnellstart inklusive Nginx-Proxy-Manager-Konfiguration,
|
||||
bebilderte Anleitung, README, Roadmap und Devlog.
|
||||
|
||||
### Sicherheit
|
||||
|
||||
- Serverseitige Validierung aller Eingaben mit zod.
|
||||
- Uploads auf PDF, JPEG, PNG und WebP begrenzt, geprueft an den Magic Bytes
|
||||
statt am gemeldeten MIME-Typ; Dateinamen erzeugt immer der Server.
|
||||
- Oeffentliche Wunschlisten-Routen nutzen ausschliesslich den Share-Token und
|
||||
geben nichts ausserhalb der Wunschliste preis; die Seite ist noindex.
|
||||
- Storno- und Einladungs-Token liegen nur als SHA-256-Hash in der Datenbank.
|
||||
- Session-Cookies httpOnly, sameSite=lax und im Betrieb secure.
|
||||
- Anleitungs-PDFs und eigene Fotos sind nur mit Session abrufbar; oeffentlich
|
||||
sind allein die Set-Bilder, die die geteilte Wunschliste braucht.
|
||||
|
||||
### Bekannte Einschraenkungen
|
||||
|
||||
- Der Katalog enthaelt nur, was von Hand angelegt wurde. Der Import ueber
|
||||
Rebrickable kommt in 0.2.0.
|
||||
- Weitere Konten sind noch nicht moeglich; Einladungslinks kommen in 0.2.0.
|
||||
- Unter Windows scheitert `pnpm build` an fehlenden Symlink-Rechten. Der
|
||||
Docker-Build unter Linux ist davon nicht betroffen.
|
||||
|
||||
[Unreleased]: https://git.wilde-server.de/florian.wilde/bricktrack/compare/v0.1.0...HEAD
|
||||
[0.1.0]: https://git.wilde-server.de/florian.wilde/bricktrack/releases/tag/v0.1.0
|
||||
|
||||
Reference in New Issue
Block a user