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.
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:
CLAUDE.md).⚠️ 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.
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-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-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.
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.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:
lib/favorieten/favorieten_widget.dart.P0-5 · Eigenaar: Bob. Drupal: anonieme leestoegang onderzoeken voor browse-endpoints. Drupal-niveau, geen Claude-taak.
P1-1 · Eigenaar: Claude (deels gedaan, deels geblokkeerd).
Loading/foutafhandeling-patroon uitrollen naar overige lijst-/
detailpagina's. Referentiepatroon bevestigd (2026-08-04, builder): op
HorecagelegenhedenOverzicht → StaggeredView → rechterpaneel →
"Empty List Widget" → "Show Empty List Widget" aan → Widget
Type: Image → Asset "logo800px.png". Op HorecagelegenhedenOverzicht
zelf inmiddels op alle 5 tabs aanwezig (geverifieerd via verse export
2026-08-04/05, was eerder nog niet compleet op tab Activiteiten — Bob
heeft dat zelf afgerond).
HomeUitgaanSliderComponent) bewust NIET aangeraakt
— dat is exact Bob's P0-1 (Carousel → Empty List Widget). Read-only
gecheckt: Widget Type staat daar nog op "Unset", bevestigt Bob's
vermoeden dat zijn klik niet aankwam.PUitgaanSliderComponent
(het origineel waar HomeUitgaanSliderComponent een kopie van is,
gebruikt op de provincie/gemeente-gescoopte Uitgaan-pagina) heeft
geen ConditionalBuilder-wrapper om de Carousel — dezelfde
itemCount:0-RangeError-crash die P0-1 op de Home-versie fixt, kan hier
dus nog optreden. Widget-pad: PUitgaanSliderComponent → Carousel.PUitgaanSliderComponent's Carousel viel niet te bereiken/aanklikken
— rechterpaneel-clipping (zie hieronder), 2 pogingen gedaan incl.
sidebar-collapse-poging, geen succes.P1-3 · Eigenaar: Bob — geblokkeerd op rechterpaneel-clipping.
Sliderkaartje: datumregel mist de Flexible-wrap. Bevestigd nog open
(2026-08-04: regels 310/351 in
p_uitgaan_slider_kaart_component_widget.dart hebben Flexible om de
Text, regel 273-281 niet). Fix zit in builder: component
PUitgaanSliderKaartComponent → Widget Tree → node "Text-datum"
(Text-widget, kind van de Row met Icons.calendar_month, tussen
"Text-title" en de horecagelegenheid-Row) → rechterpaneel → property
"Expansion" → moet net als bij "Text-horecagelegenheid"/"Text-adres"
op Flexible gezet worden i.p.v. None. Geblokkeerd: de 3
Expansion-type-iconen (None/Expanded/Flexible) renderen net buiten het
zichtbare/klikbare canvas rechts van het "Flex"-invoerveld — bekend
rechterpaneel-clippingprobleem (zie CLAUDE.md). Geprobeerd:
directe klik op geschatte positie, paneel-scroll, paneel-drag-resize,
"Wrap Widget"-dialoog (geen Flexible-optie daarin, alleen structurele
widgets) — geen succes. Kost Bob vermoedelijk seconden op zijn eigen
scherm.
P1-4 · Eigenaar: Bob. EstablishmentsCall crasht zonder
categoriefilter. horcat ??= null!; — bevestigd nog aanwezig, regel
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/plaatsevent_current_widget.dart:416 — nidevenement_info_widget.dart:134/156/211/236/291 — adres/plaats/entreeprijs/entreetoelichting/contactevenement_component_widget.dart:216/238 — title/eventDatep_uitgaan_slider_kaart_component_widget.dart:284
toont 'def' als datum ontbreekt; evenement_horecagelegenheid_widget.dart:406
toont 'establishmentnid'.'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 — bezig (sessie Home-cluster). Toegankelijkheid & navigatie, restpunten:
login_widget.dart (suffixIcon van
een TextFormField — standaard Tooltip-wrap werkt daar niet op, zie
CLAUDE.md; bevestigd nog open, geen fix geprobeerd — vraagt een
andere aanpak dan Wrap Widget, bv. het hele veld i.p.v. alleen het
icoon wrappen).AlignedTooltip. De per-pagina
AppBar-knoppen (hamburger/terug) zijn qua functie ook "header",
zowel via de gedeelde HeaderButtonsComponent (heeft al tooltips)
als de losstaande inline kopieën op sommige pagina's (bv.
home_widget.dart, event_current_widget.dart) — buiten scope van
dit punt.SelectStateDropDownComponent → Column
onder de twee dropdowns → nieuwe Button "Toepassen" → actie
Navigate To → home. Relevant: dit scherm is niet alleen via het
drawer-menu bereikbaar, het is ook het allereerste scherm na
inloggen (nav.dart:117/124) — stond zonder deze knop zonder
duidelijke vervolgstap. "Replace Route"-toggle (voorkomt dat Home
bovenop dit scherm gestapeld wordt i.p.v. het te vervangen) kon niet
aangezet worden door rechterpaneel-clipping — functioneel geen
probleem (back-knop vanaf Home gaat dan terug naar dit scherm i.p.v.
waar de gebruiker vandaan kwam), maar Bob kan 'm zelf aanzetten:
component SelectStateDropDownComponent → Button "Toepassen" →
Actions → "Navigate To home" → Replace Route aanvinken.HorecagelegenheidCurrent gedaan 2026-08-04. Nieuwe Button "Alle
horecagelegenheden" onderaan de pagina-Column (na TabBar) → actie
Navigate To → HorecagelegenhedenOverzicht, parameter plaats =
App State gemeenteSelectId. Plek is bewust onderaan i.p.v. in de
AppBar: het invoegen van een widget in de AppBar-Row (naast
HeaderButtonsComponent) faalde herhaaldelijk stil (geen foutmelding,
gewoon geen insertie) — zowel via de kleine inline widget-picker als
via de grote centrale "Insert"-modal; de kleine inline-picker op een
gewone body-Column werkte wel meteen. Builder-observatie, geen
bevestigde bug — als Bob de knop liever in de AppBar wil, eerst dat
invoegen zelf proberen.
EventCurrent nog open — geen eenduidige "hoofdlijst"-pagina
voor events (EventWidget-route is een orphan, zie P2-7); Bob moet
kiezen welke pagina hier geldt (vermoedelijk PUitgaanPage met de
huidige plaats) voordat dit gebouwd kan worden.nid)
— grotendeels gecheckt 2026-08-04, code-niveau, geruststellend.
HorecagelegenheidCurrentWidget en EventCurrentWidget gebruiken
consequent ?.toList() ?? [] en valueOrDefault<...> rond
jsonBody-velden (i.t.t. de HorecagelegenhedenOverzicht-lijstpagina's
die wél crashten, zie P1-1) — bij een ongeldige/lege nid toont dit
fallback-tekst ('title', 'logo', letterlijke veldnaam — het
bekende P1-6-patroon) i.p.v. een crash. EventCurrent heeft zelfs al
een correcte if (getJsonField(...) != null)-guard vóór een
CachedNetworkImage (regel 621-626) — het juiste patroon uit
CLAUDE.md. Niet getest: het live gedrag in de emulator/app zelf
(alleen code gelezen, geen flutter run gedaan) — als iemand dit
ooit live wil verifiëren, horecagelegenheidCurrent/eventCurrent
openen met een bewust niet-bestaand nid in de deep-link.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:
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-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:
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/.PUitgaanPage's provincie/
gemeente-gescoopte categorieën zich tot elkaar verhouden.EventWidget-route: heraansluiten of definitief schrappen (losse
orphan-route).