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>
197 lines
7.4 KiB
Markdown
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 |
|