Next Session: plannen dat zichzelf regelt.
Ons eigen product, van begin tot eind ontworpen en gebouwd. Een cross-platform app, een serverloze backend en een automatische planner die de volgende spelavond voorstelt zodra de vorige is afgelopen. Gelanceerd en live in Google Play en op het web.
Het probleem
Iedereen wil spelen. Niemand prikt een datum.
Vaste speelgroepen verliezen meer avonden aan het plannen dan aan wat dan ook. De datum staat in een groepschat, de poll verwatert, één iemand loopt achter vijf anderen aan, en de campagne stopt stilletjes.
Wat we eraan deden
We lieten de app het achterna zitten doen.
Een sessie wordt voorgesteld, iedereen stemt op zijn beschikbaarheid, en zodra er genoeg spelers zijn staat de datum vast. Daarna stelt de planner de volgende sessie vanzelf voor. De organisator is niet langer de flessenhals en de groep houdt zijn vaste avond.
Wat we bouwden
Drie systemen die het werk doen.
Het product is klein aan de oppervlakte en event-driven eronder. Elk scherm hieronder komt uit de gelanceerde app.
Voorstellen, stemmen, bevestigen.
Een lid stelt een sessie voor met mogelijke datums. Iedereen stemt voor of tegen. Zodra het aantal acceptaties de drempel van de groep haalt, bevestigt de sessie zichzelf op de winnende datum. Wordt die drempel rekenkundig onhaalbaar, dan wijst de sessie zichzelf af in plaats van te blijven hangen, en datzelfde signaal zet het volgende voorstel in gang.
Acht sessiestatussen, elk met een eigen kleur en label, houden de hele tafel duidelijk over wat er van hen wordt verwacht.
Een automatische planner die nooit hoeft te zoeken.
Zet hem aan, kies een tijdstip, en de volgende sessie stelt zichzelf voor op het moment dat de huidige is afgerond. Geen cronjob die alles afloopt en geen wachtrij met toekomstige sessies: er is altijd precies één sessie onderweg, en juist het afronden daarvan is het event dat de volgende genereert.
Worden voorstellen steeds afgewezen, dan pauzeert hij zichzelf en waarschuwt hij een beheerder in plaats van de groep te blijven spammen. Betaalde herhaalregels draaien op dezelfde motor, met frequentie, einddatum en een conflictbeleid.
Beschikbaarheid die de planner kan lezen.
Elke speler houdt een eigen agenda bij: vaste wekelijkse patronen plus losse uitzonderingen. De app vat de tafel samen tot een groepsstatus per dag, zodat wie voorstelt een datum kiest die al werkt in plaats van te gokken.
Diezelfde gegevens doorzoekt de automatische planner vooruit om de volgende haalbare avond te vinden.
Push- en in-app-meldingen
Zeven soorten meldingen met losse schakelaars voor push en in-app, RSVP-knoppen op de melding zelf, en een eigen vooraankondigingstijd per gebruiker voordat een sessie begint.
Groepen, rollen, uitnodigingslinks
Rechten voor beheerder, organisator en lid, plus roterende uitnodigingstokens zodat een gedeelde link ongeldig gemaakt kan worden zonder aan de groep te komen.
Abonnementen en advertenties
Een gratis laag met advertenties en een Next Session+ premium-recht, afgeschermd op het moment van tikken in plaats van verstopt.
Sessies op locatie en online
Adresaanvulling voor tafels die fysiek afspreken, platform en deelnamelink voor tafels die online spelen, allebei aantikbaar vanuit de sessie.
Acht talen, drie thema’s
Engels, Nederlands, Duits, Frans, Spaans, Italiaans, Pools en Portugees door de hele app heen, inclusief meldingen vanaf de server, met een licht, donker en systeemthema.
Beweging als productafwerking
Een eigen opstartanimatie, ronde onthullingsovergangen, skeleton-laadstaten en confetti bij bevestiging, allemaal met respect voor de instelling voor minder beweging.
Hoe we werken
Hoe dit project verliep.
Afbakenen en plannen
We schreven het product op voordat we code schreven: rollen, de levensloop van een sessie, de meldingenmatrix en de regel dat er altijd maar één sessie tegelijk onderweg is. Die keuze haalde later een hele categorie randgevallen weg.
Bouwen en bijsturen
Eén Flutter-codebase voor Android en web, realtime data vanaf dag één, en cloud functions geschreven naast de schermen die ze aanroepen. Vertalingen en het donkere thema zaten er vroeg in, niet achteraf.
Lanceren en onderhouden
Storevermelding, privacy en voorwaarden, toestemming, analytics en een marketingsite op dezelfde hosting. De app is live en de infrastructuur houden we zelf gezond.
Onder de motorkap
De stack waarop het draait.
Zo gekozen dat één team de app, de backend en de uitrol kon bezitten zonder iets over te dragen.
- Flutter, Material 3
- Riverpod-state
- go_router-navigatie
- Android, web, klaar voor iOS
- Firebase Auth
- Cloud Firestore
- Cloud Functions
- Cloud Storage, App Check
- Cloud Messaging push
- RevenueCat-abonnementen
- Google AdMob
- Google Places-adresaanvulling
- Statische Astro-site
- Firebase Hosting
- Google Play-release
- Service worker push
Heb je een softwareproject in gedachten?
Vertel ons wat je bouwt en we zeggen je eerlijk hoe we kunnen helpen.