|
|
@@ -2,231 +2,238 @@
|
|
|
|
|
|
Bijgewerkt: 2026-08-04. Zie `CLAUDE.md` voor werkinstructies/conventies.
|
|
|
Elke openstaande taak hieronder is zelfstandig te begrijpen zonder de
|
|
|
-chat gelezen te hebben waarin hij ontstond. Volgorde binnen elke
|
|
|
-prioriteit = geschatte ernst/impact, hoogste eerst. Eigenaar-tag per
|
|
|
-taak: **[Claude]** (zelfstandig/via browser-automation te doen),
|
|
|
-**[Bob]** (sneller/simpeler voor hem zelf — meestal builder-UI met een
|
|
|
-bekend fragiele dialoog, zie `CLAUDE.md`), **[Bob — bezig]** (al
|
|
|
-geclaimd).
|
|
|
-
|
|
|
-**2026-08-04 documentatie-correctie:** 2 taken die hier als open
|
|
|
-stonden bleken al gefixt (git-bevestigd, commits van 2026-08-02) —
|
|
|
-verwijderd: "Hello Worlddd"-debugtekst en de Event→Horeca
|
|
|
-overflow-bug. Ook bleek er **nergens in de app een werkend
|
|
|
-`hasError`-patroon** te bestaan om te kopiëren (zie `CLAUDE.md`,
|
|
|
-Domein/architectuurcontext) — de foutafhandelings-taken hieronder gaan
|
|
|
-dus uit van een nieuw te ontwerpen patroon, niet een bestaand te
|
|
|
-repliceren patroon.
|
|
|
-
|
|
|
-## Sessie-indeling (suggestie voor tokenefficiëntie)
|
|
|
-
|
|
|
-Groepeer bij het oppakken bij voorkeur per FlutterFlow-paginagebied:
|
|
|
-- **Nu opgepakt:** Home-slider empty-state (bleek uiteindelijk
|
|
|
- [Bob, 10 sec] — zie P0 #1) + Foutafhandeling Horeca-overzicht
|
|
|
- ([Claude], nog te onderzoeken — zie P0 #2).
|
|
|
-- **Volgende sessie, Login/favorieten-afronding:** lege-lijst
|
|
|
- empty-state favorietenpagina + hartje-op-gemeente (ná designantwoord)
|
|
|
- + favorieten-sync-verificatie.
|
|
|
-- **Volgende sessie, laatste image-crash + Flexible-wrap:**
|
|
|
- EvenementHorecagelegenheid-carousel [Bob] + sliderkaartje-datumregel
|
|
|
- [Claude] — klein, kan samen met opruimwerk in dezelfde pagina's.
|
|
|
-- **Volgende sessie, toegankelijkheid:** alle 5 punten onder
|
|
|
- "Toegankelijkheid & navigatie" samen — klein en gelijksoortig.
|
|
|
-- **Volgende sessie, opschonen:** lib/kanweg + dubbel menu + EventWidget-route.
|
|
|
+chat gelezen te hebben waarin hij ontstond.
|
|
|
+
|
|
|
+**Formaat van elke taak:** `**P0-1 · Eigenaar: ...**` als eerste regel
|
|
|
+— een stabiel nummer (verandert niet als andere taken worden
|
|
|
+afgerond/verwijderd) + wie 'm oppakt. Volgorde binnen elke prioriteit
|
|
|
+= geschatte ernst/impact, hoogste eerst.
|
|
|
+
|
|
|
+**Eigenaar-waarden:**
|
|
|
+- **Bob** — sneller/simpeler voor hem zelf (meestal builder-UI met een
|
|
|
+ bekend fragiele dialoog, zie `CLAUDE.md`).
|
|
|
+- **Claude** — zelfstandig/via browser-automation te doen, nog
|
|
|
+ onbeklaimd.
|
|
|
+- **Claude — bezig (sessie <kenmerk>)** / **Bob — bezig** — een
|
|
|
+ sessie/persoon is hier *nu* actief mee bezig.
|
|
|
+- **Onbepaald** — nog geen eigenaar gekozen.
|
|
|
+
|
|
|
+**⚠️ Voorkom dubbel werk:** Bob start elke taak in een nieuwe, aparte
|
|
|
+chat — er kunnen dus meerdere sessies tegelijk actief zijn op
|
|
|
+hetzelfde project. **Voordat je een taak oppakt: check of de
|
|
|
+Eigenaar-regel al "— bezig" zegt.** Zo ja: niet zelfstandig ook gaan
|
|
|
+zitten werken aan hetzelfde bestand/component — vraag Bob eerst wie
|
|
|
+'m afmaakt (dit gebeurde op 2026-08-04: twee sessies pakten
|
|
|
+onafhankelijk P0-2 op; Bob moest scheidsrechteren). Zet zelf "— bezig"
|
|
|
+in de Eigenaar-regel zodra je serieus aan een taak begint, en haal het
|
|
|
+weer weg (of verwijder de taak, zie hieronder) zodra je stopt.
|
|
|
+
|
|
|
+**Afronden:** een volledig afgeronde taak wordt **verwijderd** uit
|
|
|
+deze lijst (niet gearchiveerd). Bij gedeeltelijke voortgang: taak laten
|
|
|
+staan met bijgewerkte inhoud die alleen het resterende werk beschrijft.
|
|
|
|
|
|
## Status: actief bij Bob (geen Claude-actie nodig, ter info)
|
|
|
|
|
|
-- **FavorietenAgenda 403-fout** [Bob — bezig]: Bob troubleshoot dit
|
|
|
- zelf. FlutterFlow-requests komen bij nginx binnen met een lege
|
|
|
- Cookie-header; zijn eigen browser/curl (via dezelfde Cloudflare-edge)
|
|
|
- sturen de sessie-cookie wél mee. Cloudflare Cache Rule voor `SSESS*`
|
|
|
- staat al goed (bypass, eerste regel). Werkhypothese: Cloudflare Bot
|
|
|
- Management behandelt FlutterFlow's server-side traffic anders op
|
|
|
- basis van IP-reputatie/TLS-fingerprint. Niet opnieuw diagnosticeren
|
|
|
- zonder navraag — check eerst of Bob al verder is.
|
|
|
+- **FavorietenAgenda 403-fout** — **Eigenaar: Bob — bezig.** Bob
|
|
|
+ troubleshoot dit zelf. FlutterFlow-requests komen bij nginx binnen
|
|
|
+ met een lege Cookie-header; zijn eigen browser/curl (via dezelfde
|
|
|
+ Cloudflare-edge) sturen de sessie-cookie wél mee. Cloudflare Cache
|
|
|
+ Rule voor `SSESS*` staat al goed (bypass, eerste regel).
|
|
|
+ Werkhypothese: Cloudflare Bot Management behandelt FlutterFlow's
|
|
|
+ server-side traffic anders op basis van IP-reputatie/
|
|
|
+ TLS-fingerprint. Niet opnieuw diagnosticeren zonder navraag — check
|
|
|
+ eerst of Bob al verder is.
|
|
|
|
|
|
## P0 — blokkeert livegang
|
|
|
|
|
|
-1. [ ] **Home-slider crasht (RangeError) bij 0 API-resultaten — fix
|
|
|
- gelokaliseerd, 1 klik voor Bob nodig.** [Bob, 10 seconden werk]
|
|
|
- Bob koos: bij 0 resultaten component overslaan (niets tonen), geen
|
|
|
- melding. `CarouselSlider.builder` met `itemCount: 0` crasht. Commit
|
|
|
- `1a22bbf` (2026-08-03, Bob) wrapte de Home-slider al in een
|
|
|
- ConditionalBuilder met een altijd-waar conditie — bleek bij
|
|
|
- onderzoek 2026-08-04 op het verkeerde niveau te zitten (buiten de
|
|
|
- FutureBuilder/data-scope, kan de resultatenlijst dus niet zien) en
|
|
|
- is dus geen echte fix. **Betere, native route gevonden:** de
|
|
|
- `Carousel`-widget zelf (child van If → Container in de tree) heeft
|
|
|
- een ingebouwde **"Empty List Widget"**-property — precies bedoeld
|
|
|
- voor dit scenario, geen ConditionalBuilder nodig. Stappen:
|
|
|
- FlutterFlow → component `HomeUitgaanSliderComponent` → Widget Tree
|
|
|
- → selecteer de `Carousel`-node (onder ConditionalBuilder → If →
|
|
|
- Container) → rechterpaneel → **"Empty List Widget"** → vink **"Show
|
|
|
- Empty List Widget"** aan → als widget een lege/onzichtbare placeholder
|
|
|
- instellen (matcht "component overslaan"). **Bij Bob i.p.v. Claude:**
|
|
|
- die checkbox rendert buiten de klikbare/screenshot-ruimte (bevestigd
|
|
|
- na 5 pogingen, zie CLAUDE.md "Rechterpaneel te breed") — ook na het
|
|
|
- vergroten van het venster. Kost Bob ~10 seconden, kostte mij te veel
|
|
|
- tool-calls voor niks.
|
|
|
-
|
|
|
-2. [ ] **Foutafhandeling ontbreekt op HorecagelegenhedenOverzicht.**
|
|
|
- [Claude, nog te onderzoeken] Bob's antwoord: gewoon skippen zodra er
|
|
|
- iets misgaat, geen melding/retry-knop nodig — "als de app maar niet
|
|
|
- crasht, 0 inhoud zou een outage betekenen". 6 FutureBuilders checken
|
|
|
- alleen `!snapshot.hasData` — bij een mislukte call blijft het
|
|
|
- laadwieltje voor altijd draaien (geen crash, wel een dooie boel).
|
|
|
- Nog niet onderzocht of hier ook een native "empty/error state"-optie
|
|
|
- bestaat zoals bij de Carousel hierboven, of dat dit alsnog handmatige
|
|
|
- conditie-opbouw vereist (en dus mogelijk ook de rechterpaneel-klik-
|
|
|
- beperking raakt). Oppakken in de volgende sessie.
|
|
|
- `lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_widget.dart`
|
|
|
- (regels 283, 467, 651, 835, 1019, 1203).
|
|
|
- **Vraag aan Bob vóór starten:** akkoord met "compacte melding +
|
|
|
- Opnieuw proberen-knop" als aanpak, of andere voorkeur voor
|
|
|
- tekst/vormgeving?
|
|
|
-
|
|
|
-3. [ ] **Hartje-icoon op gemeente — geblokkeerd op designvraag.** [Bob]
|
|
|
- Bob koos: heart ergens anders dan de gemeente-dropdown zelf (die
|
|
|
- blijft ongewijzigd). Blocker: **geen enkele pagina toont de
|
|
|
- geselecteerde gemeente-náám als tekst** — alleen het numerieke ID
|
|
|
- (`FFAppState().gemeenteSelectId`) wordt doorgegeven als filter (bv.
|
|
|
- `plaats`/`townid` param op `PUitgaanPageWidget`). `GemeentenCall.
|
|
|
- gemeenteName()` in `lib/backend/api_requests/api_calls.dart` bestaat
|
|
|
- al maar is ongebruikt. **Vraag aan Bob:** waar moeten gemeente-naam +
|
|
|
- hartje komen (kandidaat: AppBar van `PUitgaanPageWidget`)? Niet zelf
|
|
|
- raden aan de layout.
|
|
|
- - Bekende valkuil als dit gebouwd wordt: bind de naam niet live via
|
|
|
- een `List<CustomDataType>`-typed lookup function-argument (bv.
|
|
|
- `provincieNaamById`/`gemeenteNaamById` in
|
|
|
- `lib/flutter_flow/custom_functions.dart`, al gebouwd, compileert,
|
|
|
- nog niet gekoppeld) — dat argument-bindingsdialoog loopt vast op
|
|
|
- de geneste Set Variable-bug (zie `CLAUDE.md`). Simpeler: naam
|
|
|
- vastleggen in een plain String App State-variabele op moment van
|
|
|
- selectie i.p.v. 'm live op te zoeken.
|
|
|
-
|
|
|
-4. [ ] **Werkende login + favorieten — resterende deeltjes.** [Bob]
|
|
|
- Basis is af: login gekoppeld, wachtwoord-vergeten-flow, favorieten
|
|
|
- drawer-link + 3-tabblad-pagina, hartje op horeca-kaart +
|
|
|
- -detailpagina. Nog open:
|
|
|
- - Lege-lijst empty-state op de favorietenpagina (nu kale/lege
|
|
|
- Container als er nog geen favorieten zijn). `lib/favorieten/favorieten_widget.dart`.
|
|
|
- - Bevestigen dat favorieten écht syncen via Drupal bij inloggen —
|
|
|
- hangt af van het FavorietenAgenda-403-issue hierboven.
|
|
|
-
|
|
|
-5. [ ] **Drupal: anonieme leestoegang onderzoeken voor browse-
|
|
|
- endpoints.** [Bob] Drupal-niveau, geen Claude-taak.
|
|
|
+**P0-1 · Eigenaar: Bob (10 sec klusje) — status onbevestigd, zie
|
|
|
+onder.** Home-slider crasht (RangeError) bij 0 API-resultaten. Bob
|
|
|
+koos: bij 0 resultaten component overslaan (niets tonen), geen
|
|
|
+melding. `CarouselSlider.builder` met `itemCount: 0` crasht. Native
|
|
|
+fix gevonden: `Carousel`-widget (component `HomeUitgaanSliderComponent`
|
|
|
+→ Widget Tree → ConditionalBuilder → If → Container → **Carousel**) →
|
|
|
+rechterpaneel → **"Empty List Widget"** → vink **"Show Empty List
|
|
|
+Widget"** aan → widget op een lege/onzichtbare placeholder zetten.
|
|
|
+**2026-08-04, na een verse export + builder-check: nog geen wijziging
|
|
|
+zichtbaar** — noch in de geëxporteerde code, noch in het "Empty List
|
|
|
+Widget"-paneel zelf (geen "Show"-checkbox aangevinkt te zien). Mogelijk
|
|
|
+is de klik niet aangekomen (zelfde rechterpaneel-clipping-risico als
|
|
|
+waarom Claude 'm niet zelf kon doen, zie `CLAUDE.md`). **Bob: kun je
|
|
|
+nogmaals checken of de checkbox echt aanstaat?**
|
|
|
+
|
|
|
+**P0-2 · Eigenaar: andere Claude-sessie — bezig.** Foutafhandeling
|
|
|
+ontbreekt op HorecagelegenhedenOverzicht. **Niet oppakken vanuit deze
|
|
|
+sessie of een nieuwe sessie zonder eerst bij Bob te checken of de
|
|
|
+andere sessie nog bezig is.** Bevinding van die sessie (accurater dan
|
|
|
+eerdere aanname hier): het is geen "spinner blijft draaien"-bug maar
|
|
|
+een **crash** — bij een mislukte API-call (`statusCode: -1, jsonBody:
|
|
|
+null`) doet de code `getJsonField(null, '$').toList()` →
|
|
|
+crash, op 6 identieke plekken in
|
|
|
+`lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_widget.dart`
|
|
|
+(regels 327/511/695/879/1063/1247, telkens direct na de
|
|
|
+`!snapshot.hasData`-check). Bob's antwoord blijft gelden: gewoon
|
|
|
+skippen zodra er iets misgaat, geen melding/retry-knop nodig.
|
|
|
+
|
|
|
+**P0-3 · Eigenaar: Bob — geblokkeerd op designvraag.** Hartje-icoon op
|
|
|
+gemeente. Bob koos: heart ergens anders dan de gemeente-dropdown zelf
|
|
|
+(die blijft ongewijzigd). **2026-08-04, Bob's antwoord:** hartje naast
|
|
|
+de provincienaam én naast de gemeentenaam, in de titel. Bob wil dat
|
|
|
+**elke pagina in de header de provincie- of gemeentenaam toont**, zodat
|
|
|
+gebruikers altijd zien waar ze zitten. **Nog te doen: Claude stelt een
|
|
|
+concreet voorstel op voor hoe dit in de gedeelde header verwerkt wordt**
|
|
|
+(welke pagina's, welke plek exact, hoe de naam ophalen — zie de
|
|
|
+bekende valkuil hieronder) en legt dat voor aan Bob vóór het bouwen.
|
|
|
+- Blocker die dit voorstel moet oplossen: **geen enkele pagina toont de
|
|
|
+ geselecteerde gemeente-náám als tekst** — alleen het numerieke ID
|
|
|
+ (`FFAppState().gemeenteSelectId`) wordt doorgegeven als filter (bv.
|
|
|
+ `plaats`/`townid` param op `PUitgaanPageWidget`). `GemeentenCall.
|
|
|
+ gemeenteName()` in `lib/backend/api_requests/api_calls.dart` bestaat
|
|
|
+ al maar is ongebruikt.
|
|
|
+- Bekende valkuil als dit gebouwd wordt: bind de naam niet live via
|
|
|
+ een `List<CustomDataType>`-typed lookup function-argument (bv.
|
|
|
+ `provincieNaamById`/`gemeenteNaamById` in
|
|
|
+ `lib/flutter_flow/custom_functions.dart`, al gebouwd, compileert,
|
|
|
+ nog niet gekoppeld) — dat argument-bindingsdialoog loopt vast op de
|
|
|
+ geneste Set Variable-bug (zie `CLAUDE.md`). Simpeler: naam
|
|
|
+ vastleggen in een plain String App State-variabele op moment van
|
|
|
+ selectie i.p.v. 'm live op te zoeken.
|
|
|
+
|
|
|
+**P0-4 · Eigenaar: Bob.** Werkende login + favorieten — resterende
|
|
|
+deeltjes. Basis is af: login gekoppeld, wachtwoord-vergeten-flow,
|
|
|
+favorieten drawer-link + 3-tabblad-pagina, hartje op horeca-kaart +
|
|
|
+-detailpagina. Nog open:
|
|
|
+- Lege-lijst empty-state op de favorietenpagina (nu kale/lege
|
|
|
+ Container als er nog geen favorieten zijn).
|
|
|
+ `lib/favorieten/favorieten_widget.dart`.
|
|
|
+- Bevestigen dat favorieten écht syncen via Drupal bij inloggen —
|
|
|
+ hangt af van FavorietenAgenda-403 hierboven.
|
|
|
+
|
|
|
+**P0-5 · Eigenaar: Bob.** Drupal: anonieme leestoegang onderzoeken
|
|
|
+voor browse-endpoints. Drupal-niveau, geen Claude-taak.
|
|
|
|
|
|
## P1 — snel na livegang
|
|
|
|
|
|
-- [ ] **Lege image-URL crash (CachedNetworkImage) — 1 van 10
|
|
|
- resterend.** [Bob] Patroon in `CLAUDE.md` ("Patroon: lege/ontbrekende
|
|
|
- afbeeldings-URL"). 9 van de 10 bekende instanties zijn al gefixt en
|
|
|
- gepusht. **Laatste resterende, status gecorrigeerd 2026-08-04:**
|
|
|
- component `EvenementHorecagelegenheid`, Carousel-Image
|
|
|
- (`imageUrl: fotoosItem`, regel ~299) — er staat **nog geen**
|
|
|
- ConditionalBuilder-wrap (eerdere aanname dat de wrap al stond en
|
|
|
- alleen de conditie `Unset` was, klopt niet met de huidige export).
|
|
|
- Moet van scratch: wrap + conditie ("Is Set") + else-icon, zoals
|
|
|
- omschreven in `CLAUDE.md`. Dit is exact het patroon dat eerder al
|
|
|
- meerdere keren vastliep op de geneste Set Variable-dialoog — vandaar
|
|
|
- Bob i.p.v. Claude.
|
|
|
- - Nog niet herchecked op nieuwe pagina's sinds de laatste gerichte
|
|
|
- `grep -rl "CachedNetworkImage"` over `lib/**/*_widget.dart`.
|
|
|
-
|
|
|
-- [ ] **Loading/foutafhandeling-patroon uitrollen naar overige
|
|
|
- lijst-/detailpagina's.** [Claude, ná P0 #2] Zodra het patroon uit P0
|
|
|
- #2 (Horeca-overzicht) staat, hetzelfde toepassen op Event,
|
|
|
- HorecagelegenheidCurrent, sliders — nu nergens een echte
|
|
|
- foutstatus, alleen "geen data nog".
|
|
|
-
|
|
|
-- [ ] **Overflow op Home-pagina.** [Claude] Live gereproduceerd tijdens
|
|
|
- testen (2026-08-03): `RenderFlex overflowed by 7338 pixels` in een
|
|
|
- `Column` zonder `Expanded`/scrollcontainer.
|
|
|
- `lib/uitgaanspaginas/home/home_widget.dart:316`.
|
|
|
-
|
|
|
-- [ ] **Sliderkaartje: datumregel mist de Flexible-wrap.** [Claude]
|
|
|
- Zelfde mechanische patroon als de twee regels eronder die al gefixt
|
|
|
- zijn (consistentie) — bevestigd nog open.
|
|
|
- `p_uitgaan_slider_kaart_component_widget.dart` (Row met
|
|
|
- `Icons.calendar_month` + Text zonder Flexible).
|
|
|
-
|
|
|
-- [ ] **EstablishmentsCall crasht zonder categoriefilter.** [Bob]
|
|
|
- `horcat ??= null!;` — bevestigd nog aanwezig, regel 1443. Nu geen
|
|
|
- probleem omdat elke aanroep toevallig altijd een filter meegeeft,
|
|
|
- wel een landmijn voor de toekomst. `lib/backend/api_requests/api_calls.dart`.
|
|
|
- Fix zit vermoedelijk in de FlutterFlow API-call-configuratie (default
|
|
|
- parameterwaarde), niet in lokale code.
|
|
|
-
|
|
|
-- [ ] **"Thuis bezorgen" koppelen aan een echt leverbaar-veld per
|
|
|
- horecagelegenheid.** [Bob] Wacht op Bob: eerst het API-endpoint aan
|
|
|
- Drupal-kant configureren. Daarna tonen/verbergen op basis van het
|
|
|
- echte veld i.p.v. de huidige dode tap.
|
|
|
-
|
|
|
-- [ ] **~25+ plekken tonen letterlijke veldnaam i.p.v. nette
|
|
|
- placeholder** (bv. "titel", "adres", "def") bij ontbrekende data.
|
|
|
- [Claude] Nog niet geïnventariseerd welke exact — audit nog te doen.
|
|
|
-
|
|
|
-- [ ] **Account/profielscherm** (wachtwoord wijzigen, uitloggen,
|
|
|
- account verwijderen). [Bob] Bovenop de login/favorieten-P0-basis.
|
|
|
- Account verwijderen heeft mogelijk AVG-implicaties aan Drupal-kant.
|
|
|
-
|
|
|
-- [ ] **Toegankelijkheid & navigatie, restpunten:** [Claude, klein
|
|
|
- batchbaar in 1 sessie]
|
|
|
- - Login-pagina: 2 icon-only knoppen zonder tooltip (veld wissen +
|
|
|
- wachtwoord tonen/verbergen) — `login_widget.dart` (suffixIcon
|
|
|
- van een `TextFormField` — standaard Tooltip-wrap werkt daar niet
|
|
|
- op, zie `CLAUDE.md`; bevestigd nog open).
|
|
|
- - Overige icon-only knoppen buiten de header van tooltip voorzien.
|
|
|
- - Bevestig-stap toevoegen aan de provincie/gemeente-kiezer (nu geen
|
|
|
- "Toepassen"-knop of bevestiging).
|
|
|
- - Vaste "terug naar hoofdlijst"-snelkoppeling op detailpagina's.
|
|
|
- - Deep-link/query-param robuustheid checken (ongeldig/verlopen
|
|
|
- `nid`).
|
|
|
-
|
|
|
-- [ ] **Visuele polish** (los, per pagina): [Bob/Claude, geen
|
|
|
- builder-risico's bekend] Uitgaan-pagina (typografie/contrast/spacing),
|
|
|
- Event-pagina, HorecagelegenhedenOverzicht, tabel-kaartje-afstemming
|
|
|
- met slider-kaartje, categorie-tag mag titel/datum niet overstemmen.
|
|
|
-
|
|
|
-- [ ] **Performance:** [onderzoek nodig, geen owner bepaald]
|
|
|
- - Dubbele/onnodige netwerkverzoeken checken (audit, nog te doen).
|
|
|
- - 6-7 tabbladen laden allemaal meteen hun eigen data bij elke
|
|
|
- tabwissel/herbouw (TabBarView bouwt alle tabs eager) —
|
|
|
- `horecagelegenheden_overzicht(_sort_page/_page_data_type)_widget.dart`.
|
|
|
-
|
|
|
-- [ ] **Responsive/screensize-audit** [onderzoek nodig] — o.a. het
|
|
|
- vaste 200×200px-tegelformaat in het venue-event-grid dat botst met de
|
|
|
- grid-berekening.
|
|
|
+**P1-1 · Eigenaar: Claude, ná P0-2.** Loading/foutafhandeling-patroon
|
|
|
+uitrollen naar overige lijst-/detailpagina's. Zodra het patroon uit
|
|
|
+P0-2 (Horeca-overzicht) staat, hetzelfde toepassen op Event,
|
|
|
+HorecagelegenheidCurrent, sliders — nu nergens een echte foutstatus,
|
|
|
+alleen "geen data nog".
|
|
|
+
|
|
|
+**P1-2 · Eigenaar: Claude.** Overflow op Home-pagina. Live
|
|
|
+gereproduceerd tijdens testen (2026-08-03): `RenderFlex overflowed by
|
|
|
+7338 pixels` in een `Column` zonder `Expanded`/scrollcontainer.
|
|
|
+`lib/uitgaanspaginas/home/home_widget.dart:316`.
|
|
|
+
|
|
|
+**P1-3 · Eigenaar: Claude.** Sliderkaartje: datumregel mist de
|
|
|
+Flexible-wrap. Zelfde mechanische patroon als de twee regels eronder
|
|
|
+die al gefixt zijn (consistentie) — bevestigd nog open.
|
|
|
+`p_uitgaan_slider_kaart_component_widget.dart` (Row met
|
|
|
+`Icons.calendar_month` + Text zonder Flexible).
|
|
|
+
|
|
|
+**P1-4 · Eigenaar: Bob.** EstablishmentsCall crasht zonder
|
|
|
+categoriefilter. `horcat ??= null!;` — bevestigd nog aanwezig, regel
|
|
|
+1443. Nu geen probleem omdat elke aanroep toevallig altijd een filter
|
|
|
+meegeeft, wel een landmijn voor de toekomst.
|
|
|
+`lib/backend/api_requests/api_calls.dart`. Fix zit vermoedelijk in de
|
|
|
+FlutterFlow API-call-configuratie (default parameterwaarde), niet in
|
|
|
+lokale code.
|
|
|
+
|
|
|
+**P1-5 · Eigenaar: Bob.** "Thuis bezorgen" koppelen aan een echt
|
|
|
+leverbaar-veld per horecagelegenheid. Wacht op Bob: eerst het
|
|
|
+API-endpoint aan Drupal-kant configureren. Daarna tonen/verbergen op
|
|
|
+basis van het echte veld i.p.v. de huidige dode tap.
|
|
|
+
|
|
|
+**P1-6 · Eigenaar: Bob.** Letterlijke veldnaam i.p.v. nette placeholder
|
|
|
+bij ontbrekende data — audit afgerond 2026-08-04, 13 treffers. Patroon:
|
|
|
+`valueOrDefault<String>(<bron>, '<default>')` waarbij de default gelijk
|
|
|
+is aan de veld-/functienaam. Fix is mechanisch (Default Value-tekst
|
|
|
+aanpassen in de builder op het Text-widget), maar raakt waarschijnlijk
|
|
|
+dezelfde "Set from Variable"-property als de Empty-URL-fix — zelfde
|
|
|
+risico-inschatting als het CachedNetworkImage-patroon.
|
|
|
+- `horecagelegenheidoverzicht_kaart_widget.dart:357/381/408` — titel/adres/plaats
|
|
|
+- `event_current_widget.dart:416` — nid
|
|
|
+- `evenement_info_widget.dart:134/156/211/236/291` — adres/plaats/entreeprijs/entreetoelichting/contact
|
|
|
+- `evenement_component_widget.dart:216/238` — title/eventDate
|
|
|
+- Grensgevallen (geen letterlijke veldnaam maar wel technische/zinloze
|
|
|
+ placeholder, zelfde fix-aanpak): `p_uitgaan_slider_kaart_component_widget.dart:284`
|
|
|
+ toont `'def'` als datum ontbreekt; `evenement_horecagelegenheid_widget.dart:406`
|
|
|
+ toont `'establishmentnid'`.
|
|
|
+- Niet-verdachte gevallen bewust genegeerd (echte inhoudelijke
|
|
|
+ fallback, geen technische naam): `'Evenement'`
|
|
|
+ (`kaart_tabel_uitgaan_comp_widget.dart:214`,
|
|
|
+ `kaart_tabel_uitgaan_s_comp_widget.dart:121`) en `'Uitgaan'`
|
|
|
+ (`tag_categorie_component_widget.dart:111`).
|
|
|
+
|
|
|
+**P1-7 · Eigenaar: Bob.** Account/profielscherm (wachtwoord wijzigen,
|
|
|
+uitloggen, account verwijderen). Bovenop de login/favorieten-P0-basis.
|
|
|
+Account verwijderen heeft mogelijk AVG-implicaties aan Drupal-kant.
|
|
|
+
|
|
|
+**P1-8 · Eigenaar: Claude, klein batchbaar in 1 sessie.**
|
|
|
+Toegankelijkheid & navigatie, restpunten:
|
|
|
+- Login-pagina: 2 icon-only knoppen zonder tooltip (veld wissen +
|
|
|
+ wachtwoord tonen/verbergen) — `login_widget.dart` (suffixIcon van
|
|
|
+ een `TextFormField` — standaard Tooltip-wrap werkt daar niet op, zie
|
|
|
+ `CLAUDE.md`; bevestigd nog open).
|
|
|
+- Overige icon-only knoppen buiten de header van tooltip voorzien.
|
|
|
+- Bevestig-stap toevoegen aan de provincie/gemeente-kiezer (nu geen
|
|
|
+ "Toepassen"-knop of bevestiging).
|
|
|
+- Vaste "terug naar hoofdlijst"-snelkoppeling op detailpagina's.
|
|
|
+- Deep-link/query-param robuustheid checken (ongeldig/verlopen `nid`).
|
|
|
+
|
|
|
+**P1-9 · Eigenaar: Onbepaald.** Visuele polish (los, per pagina):
|
|
|
+Uitgaan-pagina (typografie/contrast/spacing), Event-pagina,
|
|
|
+HorecagelegenhedenOverzicht, tabel-kaartje-afstemming met
|
|
|
+slider-kaartje, categorie-tag mag titel/datum niet overstemmen.
|
|
|
+
|
|
|
+**P1-10 · Eigenaar: Onbepaald, onderzoek nodig.** Performance:
|
|
|
+- Dubbele/onnodige netwerkverzoeken checken (audit, nog te doen).
|
|
|
+- 6-7 tabbladen laden allemaal meteen hun eigen data bij elke
|
|
|
+ tabwissel/herbouw (TabBarView bouwt alle tabs eager) —
|
|
|
+ `horecagelegenheden_overzicht(_sort_page/_page_data_type)_widget.dart`.
|
|
|
+
|
|
|
+**P1-11 · Eigenaar: Onbepaald, onderzoek nodig.**
|
|
|
+Responsive/screensize-audit — o.a. het vaste 200×200px-tegelformaat in
|
|
|
+het venue-event-grid dat botst met de grid-berekening.
|
|
|
|
|
|
## P2 — features & concept, na livegang
|
|
|
|
|
|
-- [ ] **Datum-filter**: Vandaag / Dit weekend / Deze week.
|
|
|
-- [ ] **Google Maps-weergave** van horecagelegenheden — bewust niet
|
|
|
- vóór livegang (Maps API-key + billing, onduidelijk of elke locatie
|
|
|
- al lat/long heeft, marker-UI — geen quick win).
|
|
|
-- [ ] **"In de buurt"/geolocatie-browsen** — aanvulling op het
|
|
|
- provincie/gemeente-model, geen vervanging.
|
|
|
-- [ ] "Wat is er vanavond"-melding/widget.
|
|
|
-- [ ] Deel-knop op eventpagina.
|
|
|
-- [ ] "Toevoegen aan agenda" (native kalender).
|
|
|
-- [ ] "Events op deze locatie" prominenter op de horeca-detailpagina.
|
|
|
-- [ ] Reviews/waardering voor horecagelegenheden — groot, vraagt nieuw
|
|
|
- Drupal content-type + moderatie, eigen project.
|
|
|
-- [ ] Ad-banners op horeca-overzicht, horeca-detail, event-detail;
|
|
|
- vaste regel: geen ads op locatie-kiezer/login/account.
|
|
|
-- [ ] Tekstzoeken op titel op de horeca-overzichtspagina (los van de
|
|
|
- Datatype/Sort-experimenten die Bob daar zelf op test — die zijn
|
|
|
- actief werk-in-uitvoering, geen dode code).
|
|
|
-- [ ] **Opschonen:** [Bob]
|
|
|
- - Merge `kaartTabelUitgaanComp` + `kaartTabelUitgaanSComp` — Bob
|
|
|
- doet dit zelf ("ik kijk er zelf naar").
|
|
|
- - `lib/kanweg` opnieuw leegmaken indien teruggekomen na een latere
|
|
|
- export-pull, plus eventuele nieuwe losse dode componenten in
|
|
|
- `lib/evenement/`.
|
|
|
- - Eén browse-by-category-patroon i.p.v. twee: nu Home landelijk is,
|
|
|
- bepalen hoe Home's categorieën en `PUitgaanPage`'s provincie/
|
|
|
- gemeente-gescoopte categorieën zich tot elkaar verhouden.
|
|
|
- - Dubbele Provincie/Gemeente-blok in het menu opruimen (12
|
|
|
- menu-items waar 6 zouden volstaan).
|
|
|
- - `EventWidget`-route: heraansluiten of definitief schrappen (losse
|
|
|
- orphan-route).
|
|
|
+**P2-1 · Eigenaar: Bob — testen in de API, komt terug.** Datum-filter:
|
|
|
+Vandaag / Dit weekend / Deze week.
|
|
|
+
|
|
|
+**P2-2 · Eigenaar: Onbepaald.** Google Maps-weergave van
|
|
|
+horecagelegenheden — bewust niet vóór livegang (Maps API-key +
|
|
|
+billing, onduidelijk of elke locatie al lat/long heeft, marker-UI —
|
|
|
+geen quick win).
|
|
|
+
|
|
|
+**P2-3 · Eigenaar: Onbepaald.** "In de buurt"/geolocatie-browsen —
|
|
|
+aanvulling op het provincie/gemeente-model, geen vervanging.
|
|
|
+
|
|
|
+**P2-4 · Eigenaar: Onbepaald.** Overige feature-ideeën, geen van alle
|
|
|
+uitgewerkt: "Wat is er vanavond"-melding/widget · deel-knop op
|
|
|
+eventpagina · "toevoegen aan agenda" (native kalender) · "events op
|
|
|
+deze locatie" prominenter op de horeca-detailpagina · reviews/
|
|
|
+waardering voor horecagelegenheden (groot, vraagt nieuw Drupal
|
|
|
+content-type + moderatie, eigen project).
|
|
|
+
|
|
|
+**P2-5 · Eigenaar: Onbepaald.** Ad-banners op horeca-overzicht,
|
|
|
+horeca-detail, event-detail; vaste regel: geen ads op
|
|
|
+locatie-kiezer/login/account.
|
|
|
+
|
|
|
+**P2-6 · Eigenaar: Onbepaald.** Tekstzoeken op titel op de
|
|
|
+horeca-overzichtspagina (los van de Datatype/Sort-experimenten die Bob
|
|
|
+daar zelf op test — die zijn actief werk-in-uitvoering, geen dode
|
|
|
+code).
|
|
|
+
|
|
|
+**P2-7 · Eigenaar: Bob.** Opschonen:
|
|
|
+- Merge `kaartTabelUitgaanComp` + `kaartTabelUitgaanSComp` — Bob doet
|
|
|
+ dit zelf ("ik kijk er zelf naar").
|
|
|
+- `lib/kanweg` opnieuw leegmaken indien teruggekomen na een latere
|
|
|
+ export-pull, plus eventuele nieuwe losse dode componenten in
|
|
|
+ `lib/evenement/`.
|
|
|
+- Eén browse-by-category-patroon i.p.v. twee: nu Home landelijk is,
|
|
|
+ bepalen hoe Home's categorieën en `PUitgaanPage`'s provincie/
|
|
|
+ gemeente-gescoopte categorieën zich tot elkaar verhouden.
|
|
|
+- Dubbele Provincie/Gemeente-blok in het menu opruimen (12 menu-items
|
|
|
+ waar 6 zouden volstaan).
|
|
|
+- `EventWidget`-route: heraansluiten of definitief schrappen (losse
|
|
|
+ orphan-route).
|