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>
7.4 KiB
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 |