atlas-academy/docs/USERFLOW.md
Atlas Developer 03829a38b2 feat: Atlas Academy — Odoo eLearning platform, full fusion
9-course Dutch e-learning platform fused onto atlasacademy.nl via Caddy
reverse proxy. Odoo 19 Community as course engine (website_slides), static
HTML for marketing front. Single Odoo account system.

- static/: 8 marketing pages (index, pricing, coaching, leerpad, over, shop, bisl, esf)
- backend/odoo_relay.py: lead relay Flask service (POST /academy-lead → Odoo CRM)
- caddy/academy.caddyfile: full Caddy config with Odoo proxy + auth rewrites
- docs/: ARCHITECTURE, USERFLOW, COURSES, DEPLOYMENT, SECURITY, ODOO

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 00:48:45 +02:00

7.4 KiB

User Flows & Use Cases — Atlas Academy

Use Cases

UC-1: Nieuwe bezoeker ontdekt het platform

Actor: Ondernemer (potentiële student)
Doel: Cursusaanbod verkennen zonder account

Bezoeker
  │
  ├── [Vorige actie: Google → atlasacademy.nl]
  │
  ▼
atlasacademy.nl (index.html)
  │  "Nu live · 9 cursussen"
  │
  ├── klikt "Bekijk de cursussen →"
  │         ↓
  │   /slides (Odoo cursuscatalogus)
  │         │
  │         ├── ziet 9 cursuskaarten met kleur-covers
  │         ├── klikt cursus → /slides/sales-vanaf-nul-2
  │         │       │
  │         │       ├── leest eerste lessen (preview)
  │         │       └── beantwoordt quizvragen
  │         │
  │         └── klikt pricing.html voor kosten
  │
  └── verlaat → lead? [nee] → geen actie

Succes: bezoeker heeft minimaal 1 les gelezen + 1 quizvraag beantwoord.


UC-2: Registratie & account aanmaken

Actor: Geïnteresseerde bezoeker
Doel: Gratis account aanmaken voor voortgangsopslag

Bezoeker
  │
  ├── klikt "Gratis account aanmaken" op homepage
  │         ↓
  │   /register → 302 → /web/signup?redirect=/slides
  │         │
  │         ├── Odoo signup-formulier (website 3)
  │         │   Naam · E-mail · Wachtwoord
  │         │
  │         ├── submit → Odoo maakt res.users aan
  │         │
  │         ├── bevestigingsmail via atlasacademy.nl
  │         │   (base_url = website 3 domein)
  │         │
  │         └── redirect → /slides (ingelogd)
  │
  └── succes: voortgang wordt opgeslagen per cursus

Foutpaden:

  • E-mail al in gebruik → Odoo: "account bestaat al"
  • Wachtwoord te kort → Odoo validatie
  • Website 1 (corp) = b2b → signup geblokkeerd (correct)

UC-3: Inloggen (terugkerende student)

Actor: Bestaande gebruiker
Doel: Doorgaan met cursus

Terugkerende student
  │
  ├── klikt "Inloggen" in nav van marketing-pagina
  │         ↓
  │   /login → 302 → /web/login?redirect=/slides
  │         │
  │         ├── Odoo login-formulier
  │         │
  │         ├── submit → sessie cookie gezet
  │         │
  │         └── redirect → /slides
  │                 └── cursus hervatten

UC-4: Cursus volgen (hoofdflow)

Actor: Ingelogde student
Doel: Les lezen + kennischeck doen

[/slides] Cursuscatalogus
  │
  └── klikt cursus → /slides/<slug>
          │
          ├── Cursuspagina: inhoudsopgave
          │
          └── klikt les → /slides/<slug>/<les-slug>
                  │
                  ├── Theorie (HTML, ~300-500 woorden)
                  │
                  └── Kennischeck (3 MC-vragen per les)
                          │
                          ├── kiest antwoord → feedback (uitleg)
                          ├── alle correct → "Les voltooid" ✓
                          └── voortgang opgeslagen in Odoo

UC-5: Lead insturen (interesse formulier)

Actor: Bezoeker op marketingpagina
Doel: Interesse kenbaar maken (coaching / waitlist)

Bezoeker
  │
  └── vult formulier in op coaching.html of index.html
          │
          POST /academy-lead (JSON: {name, email, interest, source})
          │
          └── odoo_relay.py (atlas-01:7793)
                  │
                  ├── maakt crm.lead aan in Odoo
                  │
                  ├── stuurt notificatie e-mail (SMTP fallback)
                  │
                  └── HTTP 200 → "Bedankt" bericht op pagina

Swimlane diagram — Volledige gebruikerscyclus

STUDENT              CADDY (atlasacademy.nl)     ODOO (eLearning)       CRM (Odoo)
   │                          │                        │                    │
   │── GET /  ───────────────>│                        │                    │
   │<── 200 index.html ───────│                        │                    │
   │                          │                        │                    │
   │── GET /slides ──────────>│── proxy ──────────────>│                    │
   │<── 200 cursuscatalogus ──│<──────────────────────│                    │
   │                          │                        │                    │
   │── GET /slides/<slug> ───>│── proxy ──────────────>│                    │
   │<── 200 cursuspagina ─────│<──────────────────────│                    │
   │                          │                        │                    │
   │── GET /register ────────>│── 302 /web/signup ────>│                    │
   │── POST signup ──────────>│── proxy ──────────────>│── nieuwe user ─────│
   │<── 302 /slides ──────────│<──────────────────────│                    │
   │                          │                        │                    │
   │── POST /academy-lead ───>│── proxy ──────────────>│                   >│─ crm.lead
   │<── 200 {ok:true} ────────│                        │                    │
   │                          │                        │                    │

Flowchart — Auth beslissingsboom

                    Bezoeker wil cursus volgen
                              │
                              ▼
                    Heeft de user een sessie?
                    ┌─────────┴─────────┐
                   Ja                  Nee
                    │                   │
                    ▼                   ▼
              /slides (direct)    /web/login
                                       │
                              ┌────────┴────────┐
                              │                 │
                         Heeft account?     Geen account
                              │                 │
                              ▼                 ▼
                         Inloggen          /web/signup
                              │                 │
                              └────────┬────────┘
                                       │
                                       ▼
                              /slides (ingelogd)
                                       │
                              Voortgang opgeslagen ✓

Actoren & rechten

Actor Toegang Auth
Anonieme bezoeker Marketingpagina's, preview cursussen Geen
Geregistreerde student Volledige cursussen, voortgang Odoo session
Operator (Chaib) Odoo backend, alle content, CRM Tailnet + Authentik SSO
Lead relay service CRM leads aanmaken XML-RPC app-user