feat(#280,#281): Archiv-Liste mit Suche/Filter (web + mobile) #315

Merged
admin-mrrm merged 1 commit from feat/280-281-archiv-liste into main 2026-05-16 16:20:23 +02:00
Owner

Closes #280
Closes #281

Was

  • DocumentsResource im api-client: list, getOne, listTags, listCorrespondents, listDocumentTypes (mit Zod-Schemas)
  • Web /archiv (TanStack Router):
    • Suchleiste, debounced 300ms
    • Filter-Chips für Tags (multi), Korrespondent (single), Dokumenttyp (single)
    • Liste mit Titel, Korrespondent, Datum
    • Pagination (Page-Modus, 25 pro Seite)
    • Search-State in URL (?query=…&tags=…&correspondent=…&page=…)
  • Mobile (drawer)/archiv (Expo Router):
    • Selbe Logik, mobile-spezifisch: horizontal-scrollende Filter-Chip-Reihen, Pull-to-Refresh über FlatList
  • DocumentsApiProvider in apps/web/src/app.tsx + apps/mobile/app/_layout.tsx
  • Navigation: "Archiv" im Web-Layout-Menü und Mobile-Drawer
  • Detail-Klick: Stub für #282 / #283

Tests

  • api: 333 tests green
  • web: 57 tests green, lint clean
  • mobile: 49 tests green
  • typecheck überall clean

Manuelles QA-Plan

  • /archiv aufrufen → Liste mit Default-Sortierung (-created) lädt
  • Suchbegriff eingeben → debounced 300ms → Liste filtert
  • Tag-Chips Multi-Select → Liste reagiert
  • Korrespondent/Typ Single-Select toggelt
  • Pagination ← / → funktioniert; Buttons disabled an Rändern
  • Mobile: Pull-to-Refresh aktualisiert
Closes #280 Closes #281 ## Was - `DocumentsResource` im api-client: list, getOne, listTags, listCorrespondents, listDocumentTypes (mit Zod-Schemas) - **Web** `/archiv` (TanStack Router): - Suchleiste, debounced 300ms - Filter-Chips für Tags (multi), Korrespondent (single), Dokumenttyp (single) - Liste mit Titel, Korrespondent, Datum - Pagination (Page-Modus, 25 pro Seite) - Search-State in URL (?query=…&tags=…&correspondent=…&page=…) - **Mobile** `(drawer)/archiv` (Expo Router): - Selbe Logik, mobile-spezifisch: horizontal-scrollende Filter-Chip-Reihen, Pull-to-Refresh über FlatList - DocumentsApiProvider in `apps/web/src/app.tsx` + `apps/mobile/app/_layout.tsx` - Navigation: "Archiv" im Web-Layout-Menü und Mobile-Drawer - Detail-Klick: Stub für #282 / #283 ## Tests - ✅ api: 333 tests green - ✅ web: 57 tests green, lint clean - ✅ mobile: 49 tests green - typecheck überall clean ## Manuelles QA-Plan - [ ] /archiv aufrufen → Liste mit Default-Sortierung (-created) lädt - [ ] Suchbegriff eingeben → debounced 300ms → Liste filtert - [ ] Tag-Chips Multi-Select → Liste reagiert - [ ] Korrespondent/Typ Single-Select toggelt - [ ] Pagination ← / → funktioniert; Buttons disabled an Rändern - [ ] Mobile: Pull-to-Refresh aktualisiert
feat(#280,#281): Archiv-Liste mit Suche/Filter (web + mobile)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
f5b7ce3201
- api-client: DocumentsResource mit list/getOne/listTags/listCorrespondents/
  listDocumentTypes; Zod-Schemas für Paperless-Entitäten
- Web: TanStack-Route /archiv mit debounced Suche, Tag/Korrespondent/Typ-
  Filter-Chips, Pagination und Liste (Titel/Korrespondent/Datum)
- Mobile: Expo-Route (drawer)/archiv mit Suche, horizontal scrollbaren
  Filter-Chips, Pull-to-Refresh und Pagination
- DocumentsApiProvider in beiden App-Layouts gewired
- "Archiv" im Web-Nav und Mobile-Drawer
- Detail-Klick stub für #282 / #283
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!315
No description provided.