Fase 1a: Platformkern
Doel: de gedeelde basis die alle diensten nodig hebben — onboarding, hondprofielen, facturatie, Sentoo, email en admin basisbeheer.
Afbakening: alleen wat nodig is om 1 dienst (trainingen) te laten draaien. Geen configuratieschermen, geen automatiseringen, geen edge cases.
Na deze fase: klanten registreren zichzelf, beheren hun honden, en de basis voor facturatie en betaling staat klaar.
Sentoo: merchant account moet aangevraagd zijn voor deze fase.
1a.1 Klant Onboarding
Section titled “1a.1 Klant Onboarding”10 stories
De eerste ervaring van een nieuwe klant. Een 3-stappen wizard (gegevens → hond → voorwaarden) die verplicht is bij eerste login. Klanten vullen hun profiel, hondgegevens, vaccinaties en voeding in, en accepteren de algemene voorwaarden. Pas daarna krijgen ze toegang tot het portaal.
| # | Rol | User Story | AC |
|---|---|---|---|
| 1a.1.1 | klant | Bij eerste login een 3-stappen onboarding doorlopen (gegevens, hond, voorwaarden) | Verplicht; onboarding_completed = true na afronding |
| 1a.1.2 | klant | Persoonlijke gegevens invullen: naam, telefoon, WhatsApp, adres, stad, noodcontact | Alle verplichte velden gevalideerd |
| 1a.1.3 | klant | Hond toevoegen met basisgegevens (naam, ras, geboortedatum, geslacht, gesteriliseerd, gewicht, kleur, chipnummer, paspoort, foto) | — |
| 1a.1.4 | klant | Dierenarts van mijn hond opgeven (naam, kliniek, telefoon) | — |
| 1a.1.5 | klant | Voedingsschema opgeven (merk, hoeveelheid, tijden, bijzonderheden) | — |
| 1a.1.6 | klant | Medische informatie opgeven (aandoeningen, medicijnen, allergieen, verzekerd j/n) | — |
| 1a.1.7 | klant | Gedrag van mijn hond beschrijven in een vrij tekstveld | Tekstveld behavior_notes; 18 persoonlijkheidskenmerken checkboxes komen in Fase 2 |
| 1a.1.8 | klant | Vaccinaties uploaden per vaccin (DHLPP, Bordetella, Rabies) met datum, vervaldatum en document | verified_by_admin default false |
| 1a.1.9 | klant | Algemene voorwaarden lezen en digitaal accepteren (checkbox + timestamp) | Scrollbare tekst; terms_accepted_at opgeslagen |
| 1a.1.10 | klant | Na de onboarding nog een hond toevoegen via /dogs/new | — |
1a.2 Hondprofielen & Vaccinaties
Section titled “1a.2 Hondprofielen & Vaccinaties”4 stories
Het beheer van hondprofielen na de onboarding. Klanten zien een overzicht van al hun honden met vaccinatiestatus (geldig / bijna verlopen / verlopen), kunnen profielen bewerken en nieuwe vaccinatiebewijzen uploaden.
| # | Rol | User Story |
|---|---|---|
| 1a.2.1 | klant | Overzicht van al mijn honden (foto, naam, ras, vaccinatiestatus: geldig / bijna verlopen / verlopen) |
| 1a.2.2 | klant | Profiel van mijn hond bewerken |
| 1a.2.3 | klant | Nieuw vaccinatiebewijs uploaden met datum en vervaldatum |
| 1a.2.4 | klant | Per vaccin de status zien met vervaldatum |
1a.3 Klantdashboard
Section titled “1a.3 Klantdashboard”2 stories
De landingspagina voor ingelogde klanten. Toont de 3 eerstvolgende boekingen en openstaande facturen, met snelkoppelingen naar de belangrijkste acties. Bewust eenvoudig gehouden — details staan op de specifieke pagina’s.
| # | Rol | User Story |
|---|---|---|
| 1a.3.1 | klant | Op mijn dashboard aankomende boekingen (max 3) en openstaande facturen zien |
| 1a.3.2 | klant | Snelkoppelingen naar “nieuwe boeking” en “facturen betalen” |
1a.4 Facturatie
Section titled “1a.4 Facturatie”8 stories
Het complete facturatiesysteem. Facturen worden automatisch aangemaakt met uniek nummer (jaarXXXXXX), Arubaanse belasting (BBO 6% + BAZV 1.5% inbegrepen), factuurregels per hond per dienst, en bankgegevens van DHA. Klanten en admins hebben elk hun eigen factuuroverzicht. Prijzen worden gesnapshot op moment van boeking.
| # | Rol | User Story | AC |
|---|---|---|---|
| 1a.4.1 | systeem | Facturen aanmaken met auto-increment factuurnummer (format: jaarXXXXXX) | — |
| 1a.4.2 | systeem | BBO (6%) en BAZV (1.5%) inbegrepen in het totaalbedrag berekenen | — |
| 1a.4.3 | systeem | Factuurregels per hond per dienst genereren (invoice_items) | — |
| 1a.4.4 | systeem | Bankgegevens van DHA op elke factuur tonen | — |
| 1a.4.5 | klant | Facturen overzien (filter: betaald / openstaand / verlopen) | — |
| 1a.4.6 | admin | Alle facturen overzien met filters en totaalbedragen per filter | — |
| 1a.4.7 | admin | Factuur-PDFs genereren (Forme PDF op CF Workers) | — |
| 1a.4.8 | systeem | Prijzen op moment van boeking vastleggen (snapshot) zodat klanten niet achteraf meer betalen | — |
1a.5 Betalingen — Sentoo
Section titled “1a.5 Betalingen — Sentoo”5 stories
De integratie met Sentoo voor online bankbetalingen op Aruba. Het systeem maakt een transactie aan, toont een betaallink + QR-code, en verwerkt de webhook bij succesvolle betaling. Admins kunnen ook handmatig betaald markeren voor cash/pin-betalingen aan de balie.
| # | Rol | User Story | AC |
|---|---|---|---|
| 1a.5.1 | systeem | Sentoo transactie aanmaken en betaallink + QR tonen aan de klant | Link in portaal + email |
| 1a.5.2 | klant | Via de betaallink mijn bank kiezen en betalen | — |
| 1a.5.3 | systeem | Bij Sentoo webhook de factuur automatisch als betaald markeren | Signature verificatie; idempotent |
| 1a.5.4 | admin | Factuur handmatig als betaald markeren (cash/pin) met methode, tijdstip en medewerker | — |
| 1a.5.5 | admin | Betaaloverzicht zien (betaald / openstaand) met filters | — |
1a.6 Email Notificaties
Section titled “1a.6 Email Notificaties”5 stories
Transactionele emails via Resend + React Email. Klanten ontvangen een welkomstmail, boekingsbevestiging en betaalbevestiging. Admins krijgen een notificatie bij nieuwe boekingsaanvragen. Templates zijn meertalig (NL, EN) met variabelen.
| # | Rol | User Story |
|---|---|---|
| 1a.6.1 | klant | Bij registratie een welkomstmail ontvangen |
| 1a.6.2 | klant | Bij boekingsbevestiging een mail met details en betaallink ontvangen |
| 1a.6.3 | klant | Bij succesvolle betaling een bevestigingsmail ontvangen |
| 1a.6.4 | admin | Notificatie ontvangen bij nieuwe boekingsaanvragen |
| 1a.6.5 | developer | Email templates in React Email met variabelen per taal (NL, EN) |
1a.7 Admin — Klanten & Honden
Section titled “1a.7 Admin — Klanten & Honden”5 stories
Het admin-overzicht van alle klanten en honden. Admins kunnen zoeken, klantprofielen inzien (inclusief honden, boekingen en facturen), hondprofielen bewerken, vaccinaties goedkeuren en bijzonderheden per hond vastleggen.
| # | Rol | User Story |
|---|---|---|
| 1a.7.1 | admin | Alle klanten overzien (zoeken op naam, email, telefoon) |
| 1a.7.2 | admin | Klantprofiel inzien (gegevens, honden, boekingen, facturen) |
| 1a.7.3 | admin | Alle honden overzien en filteren op vaccinatiestatus |
| 1a.7.4 | admin | Hondprofiel bewerken en vaccinaties beheren (toevoegen, goedkeuren) |
| 1a.7.5 | admin | Bijzonderheden (special_notes) per hond vastleggen |
1a.8 Admin — Instellingen
Section titled “1a.8 Admin — Instellingen”3 stories
De basisinstellingen van het hotel: diensten beheren (naam, prijs, type, actief/inactief), contactgegevens voor facturen, en medewerkersbeheer met rollen (admin, medewerker, trainer). Bewust beperkt — geavanceerde configuratie (openingstijden, capaciteitslimieten) is hardcoded en komt later als Extra.
| # | Rol | User Story |
|---|---|---|
| 1a.8.1 | admin | Diensten beheren (naam, prijs, type, actief/inactief) |
| 1a.8.2 | admin | Contactgegevens van het hotel instellen (naam, logo, adres) voor facturen |
| 1a.8.3 | admin | Medewerkers beheren (toevoegen, rollen: admin/medewerker/trainer) |
1a.9 Account
Section titled “1a.9 Account”3 stories
Zelfbediening voor klanten: persoonlijke gegevens bewerken, wachtwoord wijzigen en taalvoorkeur instellen (NL/EN). Account verwijderen is bewust uitgesteld naar Extra vanwege de complexiteit (anonimisering + 5-jaar factuurretentie).
| # | Rol | User Story |
|---|---|---|
| 1a.9.1 | klant | Persoonlijke gegevens bewerken |
| 1a.9.2 | klant | Wachtwoord wijzigen |
| 1a.9.3 | klant | Taalvoorkeur instellen (NL/EN) |