Deze versie gebruikt de lege Google Sheet als database. setupPadelOS() maakt acht tabbladen en vult fictieve voorbeelden in: clubs, banen, trainers, koppelingen, lesmomenten, aanvragen, hulpvragen en instellingen. De voorbeeldlocaties zijn geen geverifieerde clubs. Publiceer pas echte gegevens na toestemming.
Open je Google Sheet PadelOS 29092026 en kies Extensies → Apps Script.
Plak Code.gs in het scriptbestand. Maak via + → HTML een bestand met de naam Index en plak daarin de inhoud van Index.html.
Zet bij Projectinstellingen de tijdzone op Europe/Amsterdam. Zet ook de tijdzone van de spreadsheet op Amsterdam.
Kies de functie setupPadelOS en klik Uitvoeren. Verleen de gevraagde rechten. Herhaalbaar: bestaande gegevens worden niet gewist. Het bestaande lege Sheet1 blijft staan en mag later handmatig weg.
Vul in INSTELLINGEN het CONTACT_EMAIL in. Vervang de voorbeelden in CLUBS, BANEN, TRAINERS, TRAINER_LOCATIES en LESMOMENTEN door echte gegevens. Zet DEMO_MODUS op NEE zodra die gegevens kloppen.
Kies Implementeren → Nieuwe implementatie → Web-app. Uitvoeren als ik; toegang iedereen alleen als je publieke boekingsaanvragen wilt ontvangen. Kopieer de webapp-URL voor je Google Site via Invoegen → Insluiten → URL.
De code maakt zelf de exacte kolomkoppen. IDs zoals T001, C001, B001 en M001 moeten uniek zijn. De relaties staan in TRAINER_LOCATIES; een moment moet naar dezelfde trainer, club en baan verwijzen. Gebruik JA in de kolom Actief; zet Status van vrije momenten op Open. Datum: 2026-10-02 als platte tekst; starttijd: 10:00 als platte tekst. Uurtarieven zijn bedragen in euro. Latitude/longitude zijn decimale coördinaten. Foto_URL mag een publiek bereikbare HTTPS-afbeeldings-URL zijn; leeg toont een pictogram.
Een aanvraag verschijnt in BOEKINGEN met status In afwachting. Beheerder kan die handmatig op Bevestigd of Geannuleerd zetten. Bij annulering komt het moment weer vrij zolang het in LESMOMENTEN op Open staat. Zet een moment op Gesloten als het niet opnieuw mag worden aangevraagd. De prijs wordt bij het versturen opnieuw op de server berekend: lesprijs × duur plus baanhuur × duur. Het aantal spelers verandert in deze versie de totaalprijs niet.
Dit is een aanvraagflow, geen betaalplatform. Er worden geen betalingen of automatische bevestigingsmails verwerkt.
Mijn lessen en favorieten worden alleen in de browser van hetzelfde apparaat bewaard. Er is geen login, identiteitstoets of toegang tot andermans boekingen.
Hulpvragen worden in HULP_VRAGEN opgeslagen; er is nog geen live chat.
De kaart toont de omgeving en bij selectie één marker. De leskaarten vormen de complete lijst van gevonden locaties.
Een publieke webapp kan worden misbruikt voor ongewenste aanvragen. Voeg voor een publieke commerciële lancering accounts, spambeperking, privacytekst, bevestigings- en annuleringsregels en veilige betalingen toe.
Bewaar persoonsgegevens in een afgeschermde Sheet; geef bezoekers uitsluitend de webapp-URL, geen bewerkingsrechten op de Sheet.
Voeg per club een beheerdersaccount, expliciete bevestigingsknop en berichtgeschiedenis per boeking toe. Houd CLUBS, BANEN, TRAINERS, LESMOMENTEN en BOEKINGEN als afzonderlijke bronnen; wijzig bestaande PadelOS-code pas na gecontroleerde koppeling.
Het schermvoorbeeld laat precies zien wat PadelOS voor een lessenreeks moet tonen: niveau, startdatum, beschikbare plaatsen, prijs, alle acht lesdata, trainer en een boekknop. Bij Sunset Padel staat bijvoorbeeld een reeks van 9 november 2026 tot 11 januari 2027 met acht lesmomenten en een getoonde prijs van €220. Uit de screenshot blijkt niet of die prijs per persoon is; dat moet PadelOS expliciet vermelden.
Ik zou de boeking zo laten verlopen:
Speler kiest een reeks en 1, 2, 3 of 4 plaatsen. PadelOS toont vóór bevestiging de prijs per persoon, het totaal, de acht data en het aantal plaatsen dat daarna overblijft.
Aanvraag komt bij de admin binnen. Speler en admin kunnen binnen die aanvraag over niveau, groepsindeling of wensen communiceren.
Admin wijst een trainer en baan toe en controleert alle acht momenten. De trainer ziet de reeks vervolgens in Mijn lessen.
Clubbeheerder bevestigt de baanplanning waar dat nodig is.
Betaling en definitieve inschrijving verlopen via de bestaande WooCommerce/Stripe-koppeling. PadelOS bewaart het ordernummer en de betaalstatus; een aanvraag telt pas als betaalde inschrijving wanneer die status is bevestigd.
Daarvoor breiden we de huidige sheet uit met LESSENREEKSEN (aanbod, capaciteit en prijsregel), REEKS_MOMENTEN (alle afzonderlijke lesdata), REEKS_AANVRAGEN (speler en 1–4 plaatsen), REEKS_DEELNEMERS, BAAN_RESERVERINGEN en BOEKING_BERICHTEN. De huidige losse LESMOMENTEN blijven bruikbaar voor eenmalige lessen.
Belangrijke grens voor de huidige demo: de fictieve trainers en demo-banen mogen geen echte WooCommerce-betaling of bevestigde clubreservering starten. Voor de echte koppeling hebben we daarna de WooCommerce-producten en hun prijsbetekenis, de orderstatussen en een veilige serverkoppeling nodig. Admin-, trainer- en clubgegevens mogen pas in persoonlijke schermen verschijnen nadat hun toegang betrouwbaar is ingericht.