# Uitgaanskrant — takenlijst Bijgewerkt: 2026-08-04. Zie `CLAUDE.md` voor werkinstructies/conventies. Elke openstaande taak hieronder is bedoeld om zonder eerdere chatcontext opgepakt te kunnen worden — bestandspaden en concrete stappen staan erbij waar bekend. ## Status: actief bij Bob (geen Claude-actie nodig, ter info) - **FavorietenAgenda 403-fout**: Bob is dit zelf aan het troubleshooten. 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 - [ ] **Home-slider crasht (RangeError) bij 0 API-resultaten.** `CarouselSlider.builder` met `itemCount: 0` crasht. De originele `PUitgaanSliderComponent` had deze bug (al gefixt daar, zie "afgerond" hieronder). `HomeUitgaantabelKaartComponent`/de Home-slider is een kopie van diezelfde code voor de landelijke (cityid-loze) query — waarschijnlijk dezelfde bug geërfd. Check en fix met hetzelfde patroon (empty-state check vóór de builder). - [ ] **Werkende login + favorieten — resterende deeltjes.** Grote basis is af (zie "afgerond"): login echt gekoppeld, wachtwoord- vergeten-flow, favorieten drawer-link + 3-tabblad-pagina, hartje op horeca-kaart + horeca-detailpagina. Nog open: - Lege-lijst empty-state op de favorietenpagina (nu kale/lege Container als er nog geen favorieten zijn). - Bevestigen dat favorieten écht syncen via Drupal bij inloggen (i.p.v. alleen lokaal opgeslagen) — hangt af van het FavorietenAgenda-403-issue hierboven. - Hartje op **gemeente** (zie apart item hieronder — geblokkeerd op een designvraag). - [ ] **Hartje-icoon op gemeente — geblokkeerd op designvraag.** Bob koos: heart ergens anders dan de gemeente-dropdown zelf (dropdown 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. **Voordat je bouwt: vraag Bob expliciet waar de gemeente-naam + hartje moeten komen** (meest voor de hand liggende kandidaat: AppBar van `PUitgaanPageWidget`, de pagina die je bereikt na het kiezen van een gemeente in de drawer) — niet zelf raden aan de layout. - Gerelateerd: een custom function `provincieNaamById`/ `gemeenteNaamById` (in `lib/flutter_flow/custom_functions.dart`, committed, compileert) is al gebouwd maar nog **niet gekoppeld** aan een widget — de binding-poging liep vast op een FlutterFlow- builderbug met `List`-argumenten (zie CLAUDE.md, "geneste Set Variable-dialoog"). Simpeler alternatief dat die bug vermijdt: naam vastleggen in een plain String App State-variabele op het moment van selectie, i.p.v. 'm live op te zoeken via een List-typed lookup function. - [ ] **"Hello Worlddd" — letterlijke debugtekst op de live Event-pagina.** Geen veldnaam-fallback, een vergeten testregel. `lib/evenement/evenement_info/evenement_info_widget.dart:185-188` (translation key `kslnk9ez`). - [ ] **Overflow-bug in Event→Horeca-kaartje.** Zelfde Row+Icon+Text-zonder-Flexible-patroon dat al 2x eerder gefixt is (slider + tabelkaart, zie "afgerond") — nu op de adres/plaats- én telefoonregel. `lib/evenement/evenement_horecagelegenheid/evenement_horecagelegenheid_widget.dart:471-599`. - [ ] **Foutafhandeling ontbreekt op HorecagelegenhedenOverzicht.** 6 FutureBuilders checken alleen "geen data nog", geen enkele checkt op een mislukte call — bij een netwerkfout blijft het laadwieltje voor altijd draaien. `lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_widget.dart` (regels 276, 460, 644, 828, 1012, 1196). - [ ] **Drupal: anonieme leestoegang onderzoeken voor browse- endpoints.** Bob's eigen actie op Drupal-niveau, geen Claude-taak. ## P1 — snel na livegang - [ ] **Lege image-URL crash (CachedNetworkImage) — 1 van 10 resterend.** Patroon en volledige uitleg staan in `CLAUDE.md` ("Patroon: lege/ontbrekende afbeeldings-URL laten crashen"). 9 van de 10 bekende instanties zijn al gefixt en gepusht. **Laatste resterende:** component `EvenementHorecagelegenheid`, widget `Column > Carousel > Carousel Page > Image` (Path gebonden aan `fotoosItem`, een lijst-item-string). De `ConditionalBuilder`-wrap staat al (server-side opgeslagen), maar de IF-conditie is nog `Unset` — het instellen ervan liep herhaaldelijk vast op de geneste Set Variable-dialoogbug (zie CLAUDE.md). Volgende poging: gewoon opnieuw proberen met de "Is Set"-operator (korte weg, geen Second Value nodig); lukt dat niet binnen 1-2 pogingen, vraag het aan Bob (exacte stappen staan in CLAUDE.md). - Nog niet gecontroleerd of er ook op andere, nog niet doorzochte pagina's instanties van dit patroon voorkomen — de 10 bekende kwamen uit een gerichte `grep -rl "CachedNetworkImage"` over `lib/**/*_widget.dart`; die grep zelf is waarschijnlijk nog compleet, maar een her-check na toekomstige nieuwe pagina's is verstandig. - [ ] **Loading/foutafhandeling-patroon repliceren naar andere lijstpagina's.** Het patroon dat al werkt op de Uitgaan-pagina (eventenlijst) toepassen op overige lijst-/detailpagina's (Event, HorecagelegenheidCurrent, sliders) — nu geen enkele foutstatus daar, alleen "geen data nog". - [ ] **"Thuis bezorgen" koppelen aan een echt leverbaar-veld per horecagelegenheid.** Wacht op Bob: hij moet eerst het API-endpoint aan Drupal-kant configureren. Daarna: tonen/verbergen op basis van het echte veld i.p.v. de huidige dode tap. - [ ] **Overflow op Home-pagina.** Live gereproduceerd tijdens het testen (2026-08-03): `RenderFlex overflowed by 7338 pixels` in een `Column` zonder `Expanded`/scrollcontainer. `lib/uitgaanspaginas/home/home_widget.dart:316`. - [ ] **~25+ plekken tonen letterlijke veldnaam i.p.v. nette placeholder** (bv. "titel", "adres", "def") bij ontbrekende data. Nog niet geïnventariseerd welke exact — audit-agent-bevinding, concrete lijst nog te maken. - [ ] **EstablishmentsCall crasht zonder categoriefilter.** `horcat ??= null!;` — nu geen probleem omdat elke aanroep toevallig altijd een filter meegeeft, wel een landmijn voor de toekomst. `lib/backend/api_requests/api_calls.dart:1151`. - [ ] **Sliderkaartje: datumregel mist de Flexible-wrap.** Zelfde patroon als de twee regels eronder die al gefixt zijn (consistentie). `p_uitgaan_slider_kaart_component_widget.dart:273-306`. - [ ] **Account/profielscherm** (wachtwoord wijzigen, uitloggen, account verwijderen) — bovenop de login/favorieten-P0-basis. Account verwijderen heeft mogelijk AVG-implicaties aan Drupal-kant. - [ ] **Toegankelijkheid & navigatie, restpunten:** - Login-pagina: 2 icon-only knoppen zonder tooltip (veld wissen + wachtwoord tonen/verbergen) — `login_widget.dart:270-280, 392-401`. Let op: dit zijn `suffixIcon`s van een `TextFormField`, de standaard Tooltip-wrap werkt daar niet op (zie CLAUDE.md). - 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 (nu alleen letterlijk terug/`context.pop`). - Deep-link/query-param robuustheid checken (ongeldig/verlopen `nid`, bv. gedeelde link naar verwijderd event). - [ ] **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 in dichte lijstweergaves. - [ ] **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`. - [ ] **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:** - 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).