Atlas Academy # Atlas Academy **Online leerplatform voor ondernemers die bouwen** [![Live](https://img.shields.io/badge/status-live-brightgreen?style=flat-square)](https://atlasacademy.nl) [![Courses](https://img.shields.io/badge/cursussen-9-2E80FF?style=flat-square)](https://atlasacademy.nl/slides) [![Platform](https://img.shields.io/badge/engine-Odoo%2019%20eLearning-714B67?style=flat-square)](https://www.odoo.com) [![Host](https://img.shields.io/badge/host-Hetzner%20CPX32-D44000?style=flat-square)](https://hetzner.com) [![License](https://img.shields.io/badge/license-proprietary-lightgrey?style=flat-square)](#) [**atlasacademy.nl**](https://atlasacademy.nl)  ·  [Cursussen](https://atlasacademy.nl/slides)  ·  [Coaching](https://atlasacademy.nl/coaching.html)  ·  [Prijzen](https://atlasacademy.nl/pricing.html)
--- ## 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/ → 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-01` Hetzner VPS (SSH alias in `~/.ssh/config`) - Odoo 19 Community draait in Docker (`atlas-odoo` container) - Caddy draait met Caddyfile in `/etc/caddy/Caddyfile` ### Static marketingpagina aanpassen ```bash 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 ```bash # 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`](docs/COURSES.md) voor het volledige cursusformaat. ### Caddy herladen ```bash ssh atlas-01 "caddy reload --config /etc/caddy/Caddyfile" ``` ### Lead relay herstarten ```bash 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:** `/web` niet 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`](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](mailto:info@atlascorporation.nl) ---
Built with Odoo 19 Community · Caddy · Hetzner · Atlas Corporation 2026