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

197 lines
7.4 KiB
Markdown

# 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 |