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) — bevestigd nog open
(2026-08-05). 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: Carousel-widget (component HomeUitgaanSliderComponent →
Widget Tree → ConditionalBuilder → If → Container → Carousel) →
rechterpaneel → "Empty List Widget" → vink "Show Empty List
Widget" aan → Widget Type instellen (bv. Image → Asset
"logo800px.png", zelfde als het werkende patroon op
HorecagelegenhedenOverzicht, zie P1-1). 2026-08-05, read-only
gecheckt in de builder (Claude, geen klik op de checkbox zelf i.v.m.
clipping-risico): "Widget Type" staat nog op "Unset". Bob dacht dit
al ingesteld te hebben ("volgens mij heb ik dat ingesteld, bij geen
gegevens dan een plaatje") — dat klopt dus nog niet, of de instelling
ging niet door. De checkbox zelf viel niet af te lezen (rechterpaneel-
clipping, zie CLAUDE.md), maar "Unset" bij Widget Type is op
zichzelf al genoeg bewijs dat de configuratie niet compleet is. Bob:
graag opnieuw instellen en dit keer een Widget Type kiezen (niet alleen
de checkbox).
P0-3 · Eigenaar: gesplitst — zie onder. Hartje-icoon op gemeente. 2026-08-05: hartje-tap-actie (favoriet maken) verplaatst naar P2 (Bob: te veel voor de eerste release, wacht toch op de FavorietenAgenda-403-fix) — voor nu alleen naam tonen, geen hartje-functie. Bob akkoord met bouwplan:
provincieSelectNaam
verwijderen (nergens gebruikt), provincieSelectName hergebruiken,
gemeenteSelectNaam (bestond al, ook dood) hergebruiken voor
gemeente — inconsistente spelling Name/Naam is bewust
geaccepteerd (hergebruik bestaande var i.p.v. nieuwe duplicaat
aanmaken).SelectStateDropDownComponent, dropdown-onChanged-acties zetten
naast Id ook de Naam (opzoeken in de al-geladen lijst, via
provincieNaamById/gemeenteNaamById).
DropDownProvincie → On Selected zet
provincieSelectName = provincieNaamById(provincielijst,
provincieSelectId).DropDownGemeente →
Actions → On Selected → Action 1 → Set Fields → veld
gemeenteSelectNaam = gemeenteNaamById(gemeentelijst,
gemeenteSelectId). Eerdere 3x freeze bij het 2e argument bleek
inderdaad omgevingsinstabiliteit i.p.v. een harde blocker — na
computer-herstart in één poging gelukt. Bevestigd via
Issues-paneel: errors 2 → 1.28666/28694) krijgt nog geen bijbehorende naam mee — apart
punt, laag risico (viel al terug op lege naam tot iemand
handmatig een provincie/gemeente kiest), niet blokkerend voor
livegang.HeaderButtonsComponent
(propageert naar Home, PUitgaanPage,
HorecagelegenhedenOverzicht+varianten, HorecagelegenheidCurrent,
SelectProvincieGemeente, Login) heeft nu een Text-widget na de twee
knoppen met If/Then/Else: toont gemeenteSelectNaam als die
gezet/niet-leeg is, anders provincieSelectName. Restpunt —
Eigenaar: Bob (kleine polish, clipping-blokkade voor Claude): de
Text-widget heeft nog Expansion: None (zou Flexible moeten
zijn) — de rechterpaneel-Expansion-control was niet bereikbaar
(zelfde bekende clipping, zie CLAUDE.md). Zonder Flexible kan een
lange gemeente/provincienaam in combinatie met de twee knoppen een
RenderFlex overflowed-fout geven op smalle schermen. Component
HeaderButtonsComponent → Widget Tree → node "Text" (3e kind van de
Row, na de twee Tooltips) → rechterpaneel → Expansion → Flexible.
Restpunt — Eigenaar: Bob, losse toevoeging aan EventCurrent
(heeft geen gedeeld header-component, AppBar → Row met
IconButtonBack/IconButtonDrawer). Claude heeft dit nu in totaal 5x
geprobeerd (2x vóór, 2x ná de computer-restart, en nog 1x na de
restart als laatste poging) — steeds bevroren bij het Confirm-en
van de If/Then/Else-conditie (soms al bij de binnenste
Single-Condition-Confirm), reload verliest de voortgang. In
tegenstelling tot de Gemeente-dropdown hierboven (die na de restart
wél in één keer lukte) blijft dit specifieke widget/actie-type
stabiel blokkerend — niet meer opnieuw proberen door Claude,
definitief bij Bob. Laatste stand vóór het laatste freeze: IF
gemeenteSelectNaam Is Set and Not Empty was al succesvol
opgebouwd, alleen de outer Confirm-klik faalde. Exacte stappen
(bevestigd werkend patroon van HeaderButtonsComponent, hier
alleen de laatste Confirm-klik lukt niet):
EventCurrent → Widget Tree → AppBar → Row (kind van AppBar,
bevat al IconButtonBack + IconButtonDrawer) → rechterpaneel
insert-icoon → Text toevoegen als 3e kind.gemeenteSelectNaam → operator Is Set and Not Empty (geen
Second Value nodig).gemeenteSelectNaam.provincieSelectName.HeaderButtonsComponent, zie daarboven).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: Bob (mechanisch, ~10 sec per stuk) — audit
compleet, wachtend op Bob. Loading/foutafhandeling-patroon uitrollen
naar overige lijst-/detailpagina's. Referentiepatroon bevestigd
(2026-08-04, builder): rechterpaneel → "Empty List Widget" →
"Show Empty List Widget" aan → Widget Type: Image → Asset
"logo800px.png". Op HorecagelegenhedenOverzicht zelf al op alle
5 tabs aanwezig (geverifieerd via verse export 2026-08-04/05).
2026-08-05: volledige audit afgerond (Claude) van resterende
Carousel-widgets zonder deze fix — allemaal read-only bevestigd
"Widget Type: Unset"/leeg:
HomeUitgaanSliderComponent → Carousel (= P0-1, zie daar)PUitgaanSliderComponent → Carousel — ontbreekt zelfs de
ConditionalBuilder-wrapper om de Carousel (i.t.t. de andere 3),
dus mogelijk P0-ernstig: dezelfde itemCount:0-RangeError-crash als
P0-1 kan hier nog optreden zonder enige vangnet.EvenementComponent → Carousel (foto-carousel van één evenement)horecagelegenheidCurrent → Carousel (foto-carousel van één
horecagelegenheid)CLAUDE.md bekende problemen) — geen per-component toeval, dus
verder proberen door Claude heeft geen zin. Bob: dezelfde twee
klikken (checkbox aan + Widget Type instellen) 4x herhalen op
bovenstaand lijstje, kost in eigen browser seconden per stuk.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 (mechanisch, maar groot — spreid over
sessies). Letterlijke veldnaam i.p.v. nette placeholder bij
ontbrekende data. 2026-08-05: audit herhaald (Claude, verse grep) —
scope flink groter dan de eerdere 13 treffers van 2026-08-04, met name
evenement_horecagelegenheid_widget.dart bleek nog niet meegenomen.
Patroon overal hetzelfde: 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 dezelfde "Set from Variable"-property als de
Empty-URL-fix — zelfde risico-inschatting als het
CachedNetworkImage-patroon. Niet in één sessie proberen af te maken
gezien de omvang hieronder (~45 treffers); pak het file-voor-file op.
horecagelegenheidoverzicht_kaart_widget.dart:359/383/410 — titel/adres/plaatsevenement_info_widget.dart:136/158/213/238/293 — adres/plaats/entreeprijs/entreetoelichting/contactevenement_component_widget.dart:221/242/317/339 — title/eventDate/adres/plaats
(317/339 zijn nieuw t.o.v. de 2026-08-04-audit, waren toen nog
niet aanwezig of gemist)horecagelegenheid_current_widget.dart:377/500/747 — title/logo/content
(volledig nieuw gevonden, stond niet in de vorige audit)event_current_widget.dart:327/418/442 — title/nid/date (327 en 442
zijn nieuw t.o.v. de 2026-08-04-audit, alleen nid stond er al in)evenement_horecagelegenheid_widget.dart — grootste blok, ~30
treffers, volledig nieuw t.o.v. de vorige audit (waarschijnlijk
pas zichtbaar geworden na de P1-image-crash-fix-uitbreiding van dit
component): regels 178(HorecaNaam), 418(establishmentnid),
445(email), 476(Logo), 499(Plaats), 533(Adres), 577/586/597
(Telefoon, 3x — icoon/tekst/tooltip-varianten), 642(menukaart),
710(entreeprijs), 743(EntreeToelichting), 818/827/843(facebook, 3x),
885/894/910(instagram, 3x), 952/961(twitter, 2x),
1016/1025/1041(Website, 3x), 1083/1092/1108(urluk, 3x),
1194(Openingstijden), 1222(OpeningstijdenUitzondering),
1310(Bezorgtijden), 1337(bezorgkosten), 1364(bestellink).p_uitgaan_slider_kaart_component_widget.dart:284
toont 'def' als datum ontbreekt.'Evenement'
(kaart_tabel_uitgaan_comp_widget.dart:216,
kaart_tabel_uitgaan_s_comp_widget.dart:123) en 'Uitgaan'
(tag_categorie_component_widget.dart:113).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: Onbepaald (2 losse restpunten, zie onder). 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.
EventCurrentEvenementHorecagelegenheid
component) → Navigate To → PUitgaanPage, parameter plaats =
App State gemeenteSelectId, parameter services = services_1
(letterlijke tekst — zelfde conventie als de algemene "Uitgaan"-link
op de loginpagina, login_widget.dart:694, voor "geen
categoriefilter"; services is verplicht — PUitgaanPageWidget
gebruikt widget!.services! met force-unwrap, dus oningevuld laten
had een null-crash gegeven). Bevestigd opgeslagen ("Synced").
Insert-widget-dialoog werkte hier via de kleine inline widget-picker
op de Widget Tree-rij (rechtsklik component → "Insert Widget", of
het "+"-icoon naast een tree-node) i.p.v. de grote centrale
"Insert"-modal (die opende wel maar liet geen klik op een widget-kaart
doorkomen) — zelfde inline-picker-voorkeur als hierboven bij
HorecagelegenheidCurrent genoteerd.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. Performance. 2026-08-05: audit afgerond (Claude, code-niveau), concrete bevindingen:
TabBarView bouwt altijd alle tabs meteen
(geen lazy-tabs), dus bij page-load vuren alle tabs hun eigen
FutureBuilder-API-call tegelijk af, ook de 5-6 tabs die de
gebruiker nog niet ziet:
horecagelegenheden_overzicht_widget.dart: 6 tabs, elk
EstablishmentsCall.call(horcat: '<id>', ...) met een eigen
categorie-id (17969/17963/34/17965/17967/17968 — echt
verschillende calls, geen letterlijke duplicaten).horecagelegenheden_overzicht_sort_page_widget.dart: 7 tabs,
zelfde patroon.horecagelegenheden_overzicht_page_data_type_widget.dart: 6
tabs, zelfde patroon.home_widget.dart heeft hetzelfde patroon — 6 tabs, elk met een
eigen HomeUitgaantabelKaartComponentWidget → eigen
HomeTabelCall-aanroep, dus ook hier 6 gelijktijdige requests bij
het openen van Home (plus 1 losse HomeUitgaanSliderComponent
bovenaan, buiten de tabs, geen probleem).EstablishmentsCall heeft al cache: true (api_calls.dart:1458)
en ApiCallOptions extends Equatable met params/headers in de
props-lijst (api_manager.dart:124-138) — caching werkt dus
functioneel correct op basis van echte parameterwaarden (geen
reference-equality-bug). Dit voorkomt herhaalde netwerkcalls bij
een rebuild van dezelfde tab (bv. na een setState elders op de
pagina), maar lost de initiële burst van 6-7 gelijktijdige calls
bij eerste page-load niet op — caching helpt pas ná de eerste keer.HomeTabelCall heeft cache: false
(api_calls.dart:465) — in tegenstelling tot de Establishments-
pagina's vuurt Home dus bij elke rebuild opnieuw alle 6
tab-requests af, niet alleen bij de eerste page-load. Fix: cache:
true zetten in de FlutterFlow API-call-config (Response &
Test-tabblad) — geen codewijziging nodig, low-risk (resultaten zijn
read-only lijstdata, geen sessie-afhankelijke content).GemeentenCall/ProvinciesCall hebben cache:
false (api_calls.dart:1274/1306), aangeroepen vanuit
select_state_drop_down_component_widget.dart. Dit scherm is het
verplichte eerste scherm na inloggen (nav.dart:117/124) én apart
bereikbaar via het drawer-menu (2x, zie het "dubbele blok"-punt bij
P2-7) — elke keer dat het scherm opent, worden beide
provincie/gemeente-lijsten opnieuw over het netwerk opgehaald,
terwijl deze data binnen een sessie feitelijk statisch is. Zelfde
low-risk fix: cache: true in de builder, geen codewijziging.EstablishmentsNewCall (api_calls.dart:845, cache: false) wordt
nergens meer aangeroepen — dode API-call-definitie, toevoegen aan de
P2-7-opschoonlijst.cache: true helpt alleen bij herhaling, niet
bij de eerste gelijktijdige burst. Echte fix vraagt lazy tab-content
(bv. een IndexedStack met on-demand FutureBuilder per tab-
activatie i.p.v. TabBarView), wat een structurele herbouw is —
vermoedelijk custom code nodig, buiten scope van deze audit. Geen
bekend rate-limit-probleem op de Drupal-API, dus mogelijk lage
prioriteit ondanks de N×-overhead.P1-11 · Eigenaar: Onbepaald. Responsive/screensize. 2026-08-05: venue-event-grid-bug uitgezocht (Claude, code-niveau) — root cause gevonden, mechanische builder-fix, nog niet uitgevoerd:
HorecagelegenheidEventTabelComponentCopy
(lib/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_copy/...widget.dart),
gebruikt op de "Events"-tab van HorecagelegenheidCurrent (enige
gebruiksplek — geen niet-"_copy"-variant meer aanwezig om simpel in
te wisselen).GridView (regel 165-172): crossAxisCount: 2, childAspectRatio:
3.0 → elke grid-cel wordt ≈ (schermbreedte/2) breed ×
(celbreedte/3) hoog — op een telefoon van 390px breed dus ≈190×63px
per cel.Row met twee Containers die
beide hardcoded width: 200.0, height: 200.0 hebben (tekst-tegel
regel 186-187, afbeeldings-tegel regel 294-295/311-312 incl. de
CachedNetworkImage zelf). De tekst-Container zit wel in Expanded
(dus de breedte krimpt mee), maar de hoogte (200) niet — Expanded
in een Row regelt alleen de hoofdas (breedte), niet de dwarsas
(hoogte). De afbeeldings-Container zit zelfs helemaal niet in
Expanded — noch breedte noch hoogte passen zich aan.RenderFlex overflowed-fouten/afgeknipte layout op de Events-tab
van elke horecagelegenheid-detailpagina.HorecagelegenheidEventTabelComponentCopy → Widget Tree → de twee
Containers binnen de Row (tekst- en afbeeldings-tegel): (1) hoogte
200 vervangen door een responsieve waarde (bv. Expanded ook op de
dwarsas laten werken via een buitenste AspectRatio, of de vaste
height: 200 gewoon verwijderen en de Row's hoogte laten bepalen
door childAspectRatio), (2) de afbeeldings-Container ook in
Expanded wrappen zodat beide tegels de celbreedte delen i.p.v.
allebei 200px te claimen. Niet zelf uitgevoerd in deze sessie (audit-
taak, wijziging raakt geneste Row/Container/Expanded-structuur —
kost focus in de builder om zonder bijwerkingen te doen).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).EstablishmentsNewCall (lib/backend/api_requests/api_calls.dart:845)
wordt nergens meer aangeroepen — dode API-call-definitie (gevonden
bij de P1-10-performance-audit 2026-08-05).P2-8 · Eigenaar: Onbepaald. Hartje-tap-actie op de getoonde
gemeente-/provincienaam (favoriete plaats maken/markeren) — losgemaakt
van P0-3 (2026-08-05, Bob: te veel voor de eerste release). Naam wordt
inmiddels al getoond op de meeste pagina's via HeaderButtonsComponent
(zie P0-3); dit punt is puur de hartje-tap-functionaliteit erbovenop.
Hangt af van de FavorietenAgenda-403-fix (zie "Status: actief bij
Bob" bovenaan dit bestand) — niet oppakken vóórdat die opgelost is.