Atlas Academy � online leerplatform voor ondernemers. Odoo 19 eLearning + Caddy fusion. 9 cursussen, 153 quizvragen, ��n domein.
https://atlasacademy.nl
- mollie_enroll.py rewritten: Mollie Customer → sequenceType=first payment → Subscription API → recurring webhook → Odoo enrollment / removal - SQLite subscriber + payments tracking (/opt/atlas/academy/subscriptions.db) - Plans: Starter €20/mo, Pro €49/mo with per-plan Odoo channel enrollment - Courses 1-5,7-10 set to invite-only; course 6 (IT-Basis) free sample - index.html: subscription CTAs, removed coming-soon waitlist language - pricing.html: CTAs → /betalen?plan= (live Mollie), Free → /web/signup - betaald.html: subscription success messaging with login CTA - Mollie live key active, Odoo provider ID=11 enabled |
||
|---|---|---|
| backend | ||
| caddy | ||
| docs | ||
| static | ||
| .gitignore | ||
| README.md | ||
Atlas Academy
Online leerplatform voor ondernemers die bouwen
Wat is dit?
Atlas Academy is een Odoo eLearning-platform volledig gefused met een statische marketingsite onder één domein. Geen aparte subdomains, geen dubbele login — één URL, één account, één cursusengine.
Kernidee: statische marketingpagina's voor branding + Odoo /slides als volledige cursusmotor, getranspareerd via Caddy reverse proxy op atlasacademy.nl.
Browser → atlasacademy.nl (Caddy)
├── / → static index.html (marketing homepage)
├── /pricing → static pricing.html
├── /coaching → static coaching.html
├── /slides → Odoo 19 eLearning (9 cursussen)
├── /web/login → Odoo auth (single login)
└── /web/signup → Odoo signup (open, b2c)
Architectuur
┌─────────────────────────────────────────────────────────────────────┐
│ atlasacademy.nl │
│ Caddy (atlas-01 Hetzner) │
│ │
│ ┌──────────────────────┐ ┌──────────────────────────────────┐ │
│ │ Static Marketing │ │ Odoo 19 Community (eLearning) │ │
│ │ /var/www/academy/ │ │ http://100.93.16.81:8069 │ │
│ │ │ │ │ │
│ │ index.html │ │ /slides → cursuscatalog │ │
│ │ pricing.html │ │ /slides/<slug> → cursuspagina │ │
│ │ coaching.html │ │ /web/login → inloggen │ │
│ │ leerpad.html │ │ /web/signup → registreren │ │
│ │ over.html │ │ /web/assets/* → JS/CSS │ │
│ │ shop.html │ │ │ │
│ │ bisl.html │ │ Website 3: "Atlas Academy" │ │
│ │ esf.html │ │ domain = atlasacademy.nl │ │
│ └──────────────────────┘ └──────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Lead Relay /academy-lead → 127.0.0.1:7793 (odoo_relay.py) │ │
│ │ (POST JSON → Odoo CRM lead + email fallback) │ │
│ └──────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
Cursuscatalogus
| # | Cursus | URL | Lessen | Quizvragen |
|---|---|---|---|---|
| 1 | Praktijktraining Lean | /slides/praktijktraining-lean-1 |
7 | 21 |
| 2 | Sales vanaf Nul | /slides/sales-vanaf-nul-2 |
10 | 30 |
| 3 | Netwerken & Relaties | /slides/netwerken-relaties-3 |
5 | 12 |
| 4 | Strategisch Denken | /slides/strategisch-denken-4 |
9 | 26 |
| 5 | Alles Automatiseren met AI | /slides/alles-automatiseren-met-ai-5 |
5 | 15 |
| 6 | IT-Basis & Manier van Denken | /slides/it-basis-manier-van-denken-6 |
3 | 9 |
| 7 | Business & Juridisch | /slides/business-juridisch-7 |
3 | 9 |
| 8 | Marketing & Funnels | /slides/marketing-funnels-8 |
4 | 12 |
| 9 | Startup & Groei | /slides/startup-groei-9 |
7 | 19 |
Totaal: 53 lessen · 153 quizvragen
Elke cursus = theorie per les → kennischeck (multiple choice, 1 correct, met uitleg).
Tech stack
| Laag | Technologie | Rol |
|---|---|---|
| Domein | Caddy 2 | TLS, routing, static serve, reverse proxy |
| Frontend | Vanilla HTML/CSS/JS | Marketingpagina's |
| eLearning | Odoo 19 Community (website_slides) |
Cursussen, accounts, voortgang |
| Database | PostgreSQL (Odoo intern) | Users, cursussen, leads |
| CRM | Odoo CRM (crm.lead) |
Leads van lead-relay |
| Lead relay | Python Flask (odoo_relay.py) |
POST /academy-lead → Odoo + email |
| VPS | Hetzner CPX32 (atlas-01) | Alle services |
| Tailscale | Tailnet 100.93.16.81 |
Interne Odoo bereikbaarheid |
User journey
[Bezoeker] → atlasacademy.nl
│
├── leest marketingpagina's (pricing, coaching, over)
│
├── klikt "Bekijk de cursussen →"
│ → /slides (Odoo cursuscatalogus)
│
├── opent cursuspagina → lees les → maak quiz
│ (anoniem: preview mogelijk)
│
├── wil voortgang opslaan → "Aanmelden"
│ → /web/signup (Odoo, b2c open registratie)
│ → account aangemaakt (email bevestiging via atlasacademy.nl)
│
└── ingelogd → cursus volgen → voortgang opgeslagen
Deployment
Vereisten
atlas-01Hetzner VPS (SSH alias in~/.ssh/config)- Odoo 19 Community draait in Docker (
atlas-odoocontainer) - Caddy draait met Caddyfile in
/etc/caddy/Caddyfile
Static marketingpagina aanpassen
scp coaching.html atlas-01:/var/www/atlasacademy.nl/coaching.html
curl -so /dev/null -w '%{http_code}' https://atlasacademy.nl/coaching.html
Cursus bouwen in Odoo
# Upload script naar atlas-01, run in Odoo ORM shell
scp my_course.py atlas-01:/tmp/
ssh atlas-01 "docker exec -i atlas-odoo odoo shell -d atlas --no-http < /tmp/my_course.py"
Zie docs/COURSES.md voor het volledige cursusformaat.
Caddy herladen
ssh atlas-01 "caddy reload --config /etc/caddy/Caddyfile"
Lead relay herstarten
ssh atlas-01 "systemctl restart atlas-academy-relay && systemctl status atlas-academy-relay"
Security
- Secrets: alle credentials in
/etc/atlas/academy-relay.env(root 600), niet in source - Odoo backend:
/webniet geproxied → admin-panel enkel via tailnet/SSO - Signup:
website.auth_signup_uninvited = 'b2c'alleen op website 3 (academy). Corp website 1 =b2b(gesloten) - Headers:
X-Frame-Options DENY,X-Content-Type-Options nosniff,Strict-Transport-Security - ESF tracker:
X-Robots-Tag: noindex, nofollow(persoonlijk ITMG-studieoverzicht)
Zie docs/SECURITY.md voor het volledige security-model.
Projectstructuur
atlas-academy/
├── README.md
├── docs/
│ ├── ARCHITECTURE.md # Volledige systeemarchitectuur
│ ├── USERFLOW.md # User journeys & swimlane diagrammen
│ ├── COURSES.md # Cursusstructuur & ERD
│ ├── DEPLOYMENT.md # Deployment runbook
│ ├── SECURITY.md # Security model
│ └── ODOO.md # Odoo eLearning setup & gotcha's
├── static/ # Marketingpagina's (index, pricing, coaching…)
├── backend/
│ └── odoo_relay.py # Lead relay service (Flask)
└── caddy/
└── academy.caddyfile # Caddy-configuratie voor atlasacademy.nl
Licentie & eigendom
Proprietary — Atlas Corporation, Tilburg NL. Alle rechten voorbehouden.
Operator: Chaib Aarab — info@atlascorporation.nl
Built with Odoo 19 Community · Caddy · Hetzner · Atlas Corporation 2026