Features
- feat(seo): Add parking name to URL, for better recognizability by users
- feat(seo): Improve meta tag titles across the app
- feat(seo): Better meta tags, image preview, sitemap.xml, robots.txt
- CBS Gemeentecodes functionaliteit en Gemeentecode veld voor organisaties (#205)
- Add reports for exporting faq/page data, save current faq/page data export for future reference (#198)
Bug Fixes
- hotfix: verwijder ongebruikte api stub die buildfout veroorzaakt
- Fix terugzetten openingstijden naar onbekend werkt niet
- Toon errordialoog wanneer verzenden "nieuwe gebruiker" email mislukt
Improvements
- Verschillende updates nav testdocument
Technical
- zelde werking prisma singleton op PROD en ACC/DEV (#203)
- Add archive/usedInColdfusion fields to database, improve prisma inclusions (#201)
Features
- Rapporten toegevoegd voor het exporteren van faq/pagina data, huidige faq/page data geexporteerd als referentie voor de toekomst
Rapportage
- Als x-as optie niet meer beschikbaar is na veranderen periode: selecteer 1e beschikbare x-as optie
- Zorg dat cache wordt opgebouwd rekening houdend met dagstart
- Haal grafiekdata weer uit cache-tabellen (zet cache weer 'aan')
Beheer algemeen
- Prevent flickering of LeftMenu in beheer app, by setting a fixed width
Rapportage
- Add weekday to day xaxis-labels (i.e.: 'wo', 'do')
- Improve color differentiation of series
Rapportage
- ποΈ X-as labels zijn beter geformatteerd. Bijvoorbeeld: "1 dec." ipv "Dec.-1" en "2025-w1" ipv "2025-01"
- ποΈ X-as labels hebben meer ruimte en worden daardoor minder vaak 'afgeknipt'
- ποΈ Absolute bezetting grafiek heeft nu capaciteit-lijnen zonder 'markers' (rechte horizontale lijnen)
- π Opgelost: Dag voor de geselecteerde periode werd getoond met 0 waarde. Die dag had helemaal niet moeten worden weergegeven
- π Opgelost: Periodeselectie dagA t/m dagB, toonde dagA-1 t/m dagB-1
Rapportage
Rapportage: Procentuele bezetting grafiek
- 'Databron'-selectiebalk toegevoegd
Rapportage: Absolute bezetting grafiek
- Twee lijnen van dezelfde stalling hebben nu dezelfde kleur
- Geen gestippelde lijn meer voor "Capaciteit"
Rapportage: Algemeen
- Titel boven de grafiek is nu 'Type grafiek' in plaats van 'Data-eigenaar'
- X-as toont juiste waardes
- Elke nacht worden geaggregeerde datasets automatisch gegenereerd ('cache'), voor snel laden van de grafieken
Beheer algemeen
- Module-beheer toegevoegd
- Linkermenu verbergt automatisch menu-items zodat je alleen de de modules ziet waar je toegang toe hebt
- 'Fiets en win' module verwijderd
Stallingbeheer
- Bij beheer fietsenstallingen is er nu een knop 'Bekijk op website'
- Log-informatie toegevoegd: stalling [toegevoegd / laatst bewerkt] door [gebruiker] op [datumtijd]
- Nieuwe velden toegevoegd aan bewerkscherm: Description, MaxStallingsduur, IsStationsstalling, IsPopup
Gebruikersbeheer
- Beheerder kan een gebruiker een 'stel je wachtwoord in' mail sturen
- Als beheerder het wachtwoord van een gebruiker wijzigt, ontvangt de gebruiker een mail
- Fix 'Archiveer gebruiker' in geavanceerd gebruikersbeheer
Wachtwoord instellen
- Voor gebruikers is er een nieuwe 'stel je wachtwoord in' flow inclusief auto login na instellen wachtwoord
Wachtwoord vergeten
- Wachtwoord vergeten knop toegevoegd aan login-scherm
- Gebruiker kan nu Wachtwoord instellen via de nieuwe 'wachtwoord vergeten' flow
FAQ
- 'Laatst bewerkt' toegevoegd aan FAQ-item-bewerkpagina
- Volgorde van FAQ-items nu in te stellen
Dataleveranciers
- Nieuwe testpagina toegevoegd voor het ophalen van NS-data
Hulpmiddelen
- Exporteertool voor exporteren alle pagina's en alle FAQ-items
- Op verschillende plekken verbeterde opmaak
Stallingbeheer / Tarieven
- Nieuw: Volledige tariefbewerkingsfunctionaliteit toegevoegd
- Nieuwe API endpoints voor tariefbeheer:
GET/PUT /api/protected/fietsenstallingen/[id]/tarieven- Ophalen en bijwerken van tarieven- Volledige CRUD operaties met validatie en transactie ondersteuning
- Nieuwe service laag
src/server/services/tarieven.ts:- Functies voor ophalen, groeperen en opslaan van tariefregels
- Ondersteuning voor verschillende scope types (stalling, sectie, fietstype)
- Automatische migratie en consolidatie van tarieven bij wijziging van uniformiteit flags
- Automatische bijwerking van
EditorModifiedenDateModifiedbij tariefwijzigingen - Fix: Automatische bijwerking van parent
fietsenstallingenrecord bij tariefwijzigingen (editorModified, dateModified)
Database
- Verwijderd: "Incorrecte Tarieven Opruimen" component uit database beheer + bijbehorende api endpoints
- Nieuw: Database diff testing tool (development only)
Technisch
- Nieuwe hooks:
useBikeTypes- Voor ophalen van fietstypenuseSectiesByFietsenstalling- Voor ophalen van secties per stalling
- Verwijderd: Deprecated
fietsenstallingen-service.tsbackend service
Abonnementsvormen
- β¨ Nieuw abonnementsvormenbeheer
- First implementation of abonnementsvormen
- Link to module, add conditions for field display, fixes (work in progress)
- Add Abonnementen tab to parkingedit
Rapportage
-
Absolute Bezetting Grafiek
- Nieuw grafiektype voor absolute bezetting visualisatie
- Databron selector toegevoegd
- Floating point problemen opgelost (retourneert nu integers)
- Onthoudt laatst geselecteerde stalling
- "No bikeparks found" fout opgelost
- Toon alleen stallingen met transactiedata voor absolute bezetting grafiek
- Meerdere stallingen selecteren mogelijk
- 'Kwartier' en 'uur' opties toegevoegd
- 'Capaciteit' als gestippelde lijn weergegeven
- Altijd "Uur" en "Kwartier" opties tonen voor absolute bezetting
- Gedeelde tooltip voor <= 5 series
- EΓ©n kleur voor 2 lijnen van dezelfde stalling
- Geen gestippelde lijn voor "Capaciteit" serie
-
Aanvullende Grafiek Verbeteringen (niet gedocumenteerd in RELEASES.md)
- URL voor elk grafiektype
- Weekdag toevoegen aan uur/dag x-as
- Zoekbalk toegevoegd aan BikeparkSelect
- Grafiektypen als submenu van "Rapportage" in linkermenu
- Tooltip titels van Stallingsduur grafiek gefixt
-
β¨ Nieuwe grafiek: absolute bezetting
-
β¨ Bij grafiek 'procentuele bezetting' is er de nieuwe filteroptie "Weekdagen"
-
β¨ Bij elke grafiek kun je nu de getoonde stallingen filteren
-
ποΈ Grafiek heeft nu maximale breedte
-
ποΈ Grafiek is nu maximaal zo hoog als het kan, waardoor x-as altijd zichtbaar is
-
ποΈ Duidelijker periodeselectiebalk door toegevoegd icoon en vetgedrukte tekst
-
ποΈ Grafiektitel en paginatitels zijn duidelijker
-
ποΈ In de filters bovenin staat nu duidelijk de gekozen selectieoptie
-
ποΈ Balkgrafiek stallingsduur heeft nu kolombalken in plaats van samengestelde balk
-
ποΈ Diverse andere gebruikerservaringsverbeteringen voor Rapportage-grafieken
-
Overzichten tbv testen
-
Transacties overzicht
- Nieuw overzicht dat transactie overzicht functionaliteit
-
Synchronisatie overzicht
- Nieuw overzicht dat controles (systeemchecks/validaties) toont
-
Fietsenstalling Helpdesk Overzicht
- nieuw overzicht dat de beheerder tekst en link toont voor fietsenstallingen
-
- Verbeterde content component
- Verbeterde form input component
- Matomo site tracking code
- Matomo analytics tracking toegevoegd
- Bijgewerkt Prisma schema (inclusief
HelpdeskHandmatigIngesteldveld) - Een aantal relaties opgeschoond / aangescherpt
- Bijgewerkt environment voorbeeld bestand
- Bijgewerkt gitignore
Beheer
- ποΈ Verbeterd ontwerp voor het linkermenu
- ποΈ Smallere organisatie-selector in topmenu
Fietsenstallingen
- β¨ Admin kan fietsenstallingen exporteren naar CSV
- β¨ Meer instelmogelijkheden voor "fietsenstalling-beheerder"
- β¨ Nieuw vrij invulveld "Extra diensten" bij fietsenstallingbeheer
- Voorbeeldweergave op site
- Stel in dat een fietsenstalling wordt beheerd door de eigen organisatie (bijv. de gemeente)
- Adres/postcode/plaats zijn nu optionele velden
Gebruikersbeheer
- β¨ Sta toe dat een exploitant beheerd wordt door een andere organisatie
- ποΈ In gebruikersoverzicht: toon eerst de interne gebruikers (van eigen organisatie) en daarna de externe gebruikers
- ποΈ In gebruikersoverzicht: verberg e-mailadres
- ποΈ In gebruikersbewerkscherm bij bewerken van exploitanten: verberg e-mailadres
- π Fix: nieuwe gebruikers kunnen nu weer inloggen in oude FMS
- Automatische aanmaak van security_users_sites records bij nieuwe gebruikers
- Partiele fix: moet nog verder doorgetest worden
Rapportages
- β¨ Gebruiker kan eenvoudig instellen van periode (van datum t/m datum)
- ποΈ Eenvoudiger wisselen van rapportage middels nieuw 'rapportage-menu' aan de linkerkant
- ποΈ Verbeterd filterontwerp
Gemeente-beheer
- β¨ Volledige bewerkfunctionaliteit voor gemeenten toegevoegd
- Nieuwe kaart-editor component voor het bewerken van gemeentegrenzen
- Toegevoegd: registratiedatum veld voor gemeenten
- Verbeterde validatie en foutafhandeling bij gemeente-bewerkingen
- Contactpersoon beheer toegevoegd aan gemeente API
Organisatie-archivering
- β¨ Nieuw: archiveringsfunctionaliteit voor organisaties
- Gemeenten, exploitanten en dataproviders kunnen nu worden gearchiveerd
- Gearchiveerde organisaties worden uitgesloten van standaard overzichten
- Archiveringsstatus is bewerkbaar via beheerschermen
Beveiliging
- π Verbeterde beveiligingsrestricties voor exploitant-organisaties
- Exploitanten kunnen geen exploitanten_toegangsrecht meer beheren
- Automatische autorisatiecontrole voor exploitant-gemeente koppelingen
- Vereenvoudigde component-level checks door verbeterde security profile
Kaart & Navigatie
- ποΈ Kaart gebruikt nu zoom-niveau van contact wanneer gemeente in URL wordt opgegeven
- Betere gebruikerservaring bij directe navigatie naar gemeente
Technisch
- β¨ Nieuwe API endpoints voor gemeente contactpersoon beheer
- β¨ Verbeterde modules_contacts API functionaliteit
- ποΈ Opgeruimd: verwijderde overbodige component-level security checks
Stallingenbeheer
- ποΈ Logo gemeente in site-header staat nu verticaal gecentreerd
- π Fix: Foto van fietsenstalling kan weer worden opgeslagen
Stallingsbeheer
- Verbeterde UX voor beheren capaciteit:
- toon capaciteit tijdens bewerken van secties
- toon informatieve test als er nog geen secties zijn
- bewerk secties in een dialoog, om te verduidelijken dat secties apart opgeslagen moeten worden
Tariefcodes
- β¨ Nieuw: beheer en zie tariefcodes per stalling
- Configureer tariefcodes en -beschrijvingen in FMS en database (bekijken, toevoegen, bewerken, verwijderen)
- Toon tariefcodes bij stalling
Beheer / Database
- β¨ Nieuw: Beheerscherm voor tariefcodes toegevoegd aan database-beheer
- β¨ Volledige CRUD-functionaliteit voor tariefcodes (aanmaken, bewerken, verwijderen)
- β¨ Seed-functionaliteit voor het initialiseren van tariefcodes
- β¨ Database cleanup tools voor orphaned sections en tarieven:
- Tool voor het identificeren en opruimen van incorrecte/verweesde secties
- Tool voor het identificeren en opruimen van incorrecte tarieven (sectie_fietstype entries)
- β¨ Validatie bij het aanmaken van stallingen om foutieve secties te voorkomen
- β¨ Database check scripts toegevoegd voor controle op database consistentie (orphaned sections en tarieven)
Stalling-beheer
- β¨ Velden voor tariefcodes toegevoegd aan stalling bewerkformulier
- ποΈ OmschrijvingTarieven-veld nu zichtbaar en bewerkbaar in stalling bewerkformulier
- ποΈ OmschrijvingTarieven-veld getoond in stalling details en tariefoverzicht
Technisch
- β¨ Nieuwe API endpoints:
/api/protected/tariefcodesvoor volledige CRUD operaties op tariefcodes - β¨ Nieuwe API endpoint:
/api/protected/tariefcodes/seedvoor seed-functionaliteit - β¨ Nieuwe hook
useTariefcodesvoor data fetching van tariefcodes - β¨ TypeScript types toegevoegd voor tariefcodes (
src/types/tariefcodes.ts) - β¨ Validatie en error handling verbeterd bij het aanmaken van stallingen met sectie checks
- π Fix: OmschrijvingTarieven-veld wordt nu correct opgeslagen en getoond
Beheer / Monitoring
- β¨ Nieuw: Pagina voor monitoring van verschillende wachtrijen toegevoegd aan het beheerdersmenu
- β¨ Nieuwe componenten voor tonen van wachtrijstatus, samenvattingen en webservice logs
- β¨ Backend API-endpoints voor uitlezen van wachtrijstatus (wachtrij_betalingen, pasids, sync, transacties, webservice_log)
- β¨ Nieuwe TypeScript types en utilities voor wachtrij-monitoring (uitgezet op acceptance ivm timeouts)
Technisch
- β¨ Integratie van wachtrij types, APIβs en UI in beheerdersschermen
- β¨ Optimalisatie van de paginas
Beheer
- π E-mailadres moet uniek zijn bij gebruikersbeheer; verbeterde foutmeldingen bij validatie
- ποΈ Alleen aan een stalling gekoppelde exploitanten worden nu getoond in 'Beheerder' instellingen
- ποΈ Voor data-owners: FAQ verwijderd uit linkermenu; aanmaken nieuwe pagina uitgeschakeld; 'Tips' verwijderd
Stalling-beheer
- ποΈ Inhoud van de tab 'Beheerder' verplaatst naar een eigen component voor betere onderhoudbaarheid
- β¨ Verbeterde afhandeling van de instelling "Parking.FMS"
Technisch
- ποΈ Documentatie uitgebreid:
- Toegevoegd:
SERVICES_DATASTANDARD.md - Toegevoegd:
SERVICES_REPORTING.md - Hernoemd:
SERVICES.mdβSERVICES_FMS.md
- Toegevoegd:
Stalling-beheer
-
ποΈ Verbeterd openingstijden bewerkingsformulier met radio buttons voor snel selecteren:
- "Gehele dag geopend" (24 uur)
- "Gehele dag gesloten" (alleen voor niet-NS stallingen)
- "Onbekend"
- Aangepaste openingstijden (met tijdvelden)
-
β¨ Nieuwe implementatie van sectiebeheer
-
β¨ Beheer van meerdere secties per stalling met hiΓ«rarchische inline editing
-
β¨ Automatische aanmaak standaard sectie bij nieuwe stalling (sectie 1 met externalId
StallingsID_001) -
β¨ Automatische generatie van standaard
sectie_fietstypeentries voor alle fietstypen bij aanmaken sectie -
β¨ Automatische generatie van StallingsID in formaat
ZipID_index(bijv.mb02_001) bij nieuwe stalling -
β¨ Automatische generatie van sectie-ID's bij aanmaken nieuwe secties (sequentieel genummerd:
StallingsID_001,StallingsID_002, etc.) -
β¨ Automatisch bijwerken van
isKluisflag bij wijziging stallingtype naar/van "fietskluizen" (voor alle secties) -
β¨ Automatische
isKluisflag voor nieuwe secties gebaseerd op stallingtype (true voor "fietskluizen", false anders) -
β¨ Validatie: laatste sectie kan niet worden verwijderd (minimaal 1 sectie vereist)
-
β¨ Validatie: voorkomt negatieve capaciteitswaarden
-
ποΈ Verbeterde layout sectiebewerkingsformulier (compactere capaciteitstabel, gesorteerde weergave)
-
ποΈ StallingsID-veld toegevoegd aan "Algemeen" tab (leesbaar voor beheerders, bewerkbaar voor superadmin)
-
π Migratie van publieke naar beschermde API endpoints voor alle stallingoperaties
-
ποΈ Deprecated: publieke
/api/fietsenstallingenendpoint (alle GET/PUT/DELETE/POST methoden verwijderd)
Technisch
- β¨ Nieuwe API endpoint:
/api/protected/fietsenstallingen/secties/[id]voor volledige CRUD op secties - β¨ Automatische capaciteitsberekening: totale stallingcapaciteit wordt bijgewerkt bij wijzigingen in secties
- β¨ TypeScript types toegevoegd voor sectiebeheer (
src/types/secties.ts) - β¨ Custom hook
useSectiesByFietsenstallingvoor data fetching - β¨ Nieuwe
FormRadiocomponent voor radio button inputs - β¨ Verbeterde state management voor openingstijden per dag (radio selectie per dagweek)
- β¨ Betere null handling voor openingstijden velden (
Date | null) - β¨ SQL queries voor database consistentie checks:
check-capacity-consistency.sql- Controleert overeenkomst tussenCapacityveld en berekende capaciteit uit sectiescheck-iskluis-consistency.sql- ControleertisKluisflag consistentie tussen stallingtype en secties
- β¨ Synchronisatie
isKluisflag tussen stallingtype en secties in generieke service laag (fietsenstallingen-service.ts) - β¨ Exception handling: Standaard sectie wordt automatisch aangemaakt bij nieuwe stalling, inclusief alle fietstype entries
- π Fix: StallingsID generatie werkt nu correct bij aanmaken nieuwe stalling
- π Fix:
isKluisflag wordt correct bijgewerkt bij typewijzigingen (zowel in protected als public API) - π Fix: Verbeterde error handling en logging voor API calls
- ποΈ Verwijderd: Oude "Capaciteit" tab code uit ParkingEdit component (vervangen door nieuwe implementatie)
- π Admin kan stallingsafbeelding uploaden
- π Diverse verbeteringen in gebruikerservaring
Stalling-details
- β¨ Toon 'Statistieken' voor ingelogde gebruikers
Beheer
- β¨ Totale herziening van de rechtenstructuur
- β¨ Vele FMS-schermen zijn herontwikkeld en vereenvoudigd
- β¨ Nieuwe rapportage-grafieken
Deze hotfix deployment is gepubliceerd om een bug op te lossen. Als een beheerder aangepaste openingstijden had toegevoegd, werden deze niet zichtbaar in de app. Nu wel.
Stallingslijst
- π Fix openingstijden: uitzonderingen waren genegeerd
Stalling-details
- π Fix openingstijden: uitzonderingen waren genegeerd
Stalling-details
- β¨ Toon "Koop abonnement" knop bij stallingen
- β¨ Toon de 'extra services' van een stalling
- β¨ Toon de stallingsbeschrijving onder de titel
- ποΈ Verbeter weergave 'Abonnementen'
- π Opgelost: openingstijden toonden de 'wintertijd'
- π Tijdelijk bericht: openingstijd-uren kunnen niet worden bewerkt
Stalling-beheer
- β¨ Verberg (of activeer) een stalling voor gastgebruikers
- Verbeter uitleg die verschijnt als velden incorrect ingevuld zijn
- Verbeter beheer 'capaciteit'
Algemeen
- Nieuwe "Stalling aanmaken" in app header, voor ingelogde gebruikers
Stallingen-beheer
-
Meld een nieuwe stalling aan als gastgebruiker
-
Bij aanmelden stalling als gast: Verberg Capaciteit, Abonnementen en Beheerder
-
Na opslaan voorgestelde stalling: Toon dat deze stalling 'doorgestuurd' is aan gemeente, en mogelijk later online komt
-
Keur een aangemelde stalling goed als ingelogde gebruiker
-
Knop: zet automatisch een marker op de kaart, op basis van adres
-
Knop: vind automatisch adresgegevens op basis van de kaart-marker
-
In bewerkmodus: geef de kaart 'vrij' voordat je de kaart-marker kunt verplaatsen
-
Krijg validatie-meldingen voor stallingsvelden in bewerkdialoog (bijv: postcode)
-
Zie notificatie na opslaan van een stalling
-
Sla op wanneer de stalling is aangemaakt, en wanneer voor het laatst gewijzigd
Stallingen-kaart
- Op desktop, open direct stalling bij klik op kaart-marker
Stallingen-filters
- Nieuw "Aangemelde stallingen" filter, dat alleen gesuggereerde stallingen toont
Algemeen
- Toon FMS-link voor ingelogde gebruikers, in het hoofdmenu
Stallingen-verkenner
- Toon adres als tooltip bij een mouseover over het adres in de stallingenlijst
Login
- β¨ Je kunt nu in het loginformulier op drukken om in te loggen
- ποΈ Verbeterde "inloggegevens waren onjuist" weergave
Stallingen-verkenner
- π Opgelost: Site crashte als je vanaf een content-pagina een stalling opende
- π Opgelost: Binnen een gemeente toonde NS-stallingen niet in de lijst. We geven nu altijd alle op de kaart zichtbare stallingen weer in de stallingenlijst onder de zoekbalk
Stallingen-verkenner De zoekbalk en stallingenlijst
- De werking van de zoekfunctie is geupdate (57)
- Indien uitgezoomd en geen zoekterm opgegeven: Toon geen stallingen
- Indien uitgezoomd en zoekterm opgegeven: Doorzoek alle stallingen
- Indien ingezoomd en zoekterm opgegeven:
- Doorzoek alle stallingen
- Toon de op de kaart zichtbare stallingen als eerst in de zoekresultaten
- Indien ingezoomd en geen zoekterm opgegeven: Toon enkel stallingen van de actieve gemeente
Stallingsinformatie
- π Opgelost: Openingstijden NS-stallingen tonen foutief "gesloten" ipv 24h (56). Zoek op "Bemenste fietsenstalling Rotterdam" om een voorbeeld te zien van de nu juiste werking.
Stallingsdetails
- π Opgelost: Enkele stallingen laadden niet (59). De stallingen hadden geen juiste lat/lon locatie. We hebben ervoor gezorgd dat bij foutieve locatiedata de site niet vastloopt.