From a3a882a00122d93379352cc36e07ad5562004f31 Mon Sep 17 00:00:00 2001 From: Atlas Developer Date: Mon, 22 Jun 2026 22:35:08 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20generalize=20all=20domain=20refs=20to?= =?UTF-8?q?=20YOUR=5FDOMAIN=20=E2=80=94=20make=20repo=20showcase-safe=20an?= =?UTF-8?q?d=20reproducible?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace every hardcoded atlascorporation.nl URL with YOUR_DOMAIN placeholder. Remove private client site names (replaced with example.com markers). Remove specific Tailscale tailnet address. Remove mosque name — now configurable. Add sed one-liner at top of README for instant domain swap. Deploy section is now the canonical getting-started path for anyone cloning. --- ARCHITECTURE.md | 10 +-- README.md | 166 ++++++++++++++++++++---------------------- SERVICES.md | 8 +- deploy/README.md | 34 +++++++-- docs/academy.md | 16 ++-- docs/islamic-layer.md | 10 ++- 6 files changed, 132 insertions(+), 112 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 55e13b5..89dead1 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -86,11 +86,11 @@ All served via Caddy. WordPress sites run in isolated Docker stacks: | Domain | Stack | Notes | |--------|-------|-------| -| `atlasworks.nl` | Docker: works-wordpress | Live WooCommerce (Caddy :8111) | -| `atlascorporation.nl` | Docker: corp-wordpress | Corporate site | -| `atlasagency.nl` | Docker: agency-wordpress | Agency services | -| `atlasacademy.nl` | TransIP nginx (static HTML) | Academy landing | -| `atlaspos.nl` | TransIP | AtlasPOS product site | +| `atlasworks.YOUR_DOMAIN` | Docker: works-wordpress | Live WooCommerce (Caddy :8111) | +| `YOUR_DOMAIN` | Docker: corp-wordpress | Corporate site | +| `agency.YOUR_DOMAIN` | Docker: agency-wordpress | Agency services | +| `academy.YOUR_DOMAIN` | TransIP nginx (static HTML) | Academy landing | +| `pos.YOUR_DOMAIN` | TransIP | AtlasPOS product site | --- diff --git a/README.md b/README.md index a2605ba..7e3d39f 100644 --- a/README.md +++ b/README.md @@ -4,74 +4,64 @@ # Atlas OS -[![Status](https://img.shields.io/badge/status-live-4ec98a?style=flat-square&logo=checkmarx&logoColor=white)](https://atlascorporation.nl) +[![Status](https://img.shields.io/badge/status-live-4ec98a?style=flat-square&logo=checkmarx&logoColor=white)](#-quick-deploy) [![Containers](https://img.shields.io/badge/containers-55-4a9fe2?style=flat-square&logo=docker&logoColor=white)](./SERVICES.md) [![Apps](https://img.shields.io/badge/apps-39-4a9fe2?style=flat-square&logo=windowsterminal&logoColor=white)](./SERVICES.md) -[![Stack](https://img.shields.io/badge/stack-Caddy_·_Authentik_·_Docker-1c4fae?style=flat-square&logo=cloudflare&logoColor=white)](./ARCHITECTURE.md) -[![AI](https://img.shields.io/badge/AI-LiteLLM_·_Ollama_·_Claude-9b8cf0?style=flat-square&logo=openai&logoColor=white)](./docs/ai-stack.md) -[![Wiki](https://img.shields.io/badge/docs-wiki-4a9fe2?style=flat-square&logo=readthedocs&logoColor=white)](https://git.atlascorporation.nl/chaib/atlas-os/wiki) +[![Stack](https://img.shields.io/badge/stack-Caddy_%C2%B7_Authentik_%C2%B7_Docker-1c4fae?style=flat-square&logo=cloudflare&logoColor=white)](./ARCHITECTURE.md) +[![AI](https://img.shields.io/badge/AI-LiteLLM_%C2%B7_Ollama_%C2%B7_Claude-9b8cf0?style=flat-square&logo=openai&logoColor=white)](./docs/ai-stack.md) -**Your entire business running on one hardened Linux server.** +**Your entire business running on one hardened Linux server.** **One SSO identity. One browser login. One OS.** -[🚀 Get a workspace](https://atlascorporation.nl) · [📐 Architecture](./ARCHITECTURE.md) · [📦 Services](./SERVICES.md) · [🛠 Deploy](./deploy/) · [🤖 AI Stack](./docs/ai-stack.md) · [📖 Wiki](https://git.atlascorporation.nl/chaib/atlas-os/wiki) +[📐 Architecture](./ARCHITECTURE.md) · [📦 Services](./SERVICES.md) · [🛠 Deploy](./deploy/) · [🤖 AI Stack](./docs/ai-stack.md) --- +> **🚀 Live deployment showcase.** This documents a real running installation. +> All `YOUR_DOMAIN` references map to the actual domain. To clone and adapt: +> ```bash +> git clone +> cd atlas-os +> grep -rl 'YOUR_DOMAIN' . | xargs sed -i 's/YOUR_DOMAIN/yourdomain.com/g' +> sudo ./deploy/install.sh --domain yourdomain.com --email admin@yourdomain.com +> ``` +> Full guide → [deploy/README.md](./deploy/README.md) + +--- + ## What is Atlas OS? -Atlas OS is a self-hosted business operating system running on a single Hetzner VPS. One [Authentik](https://goauthentik.io) SSO identity unlocks **39 services** spanning CRM, finance, communications, AI, fleet management, document storage, and a full Linux remote desktop — all served behind [Caddy](https://caddyserver.com) with automatic HTTPS. +Atlas OS is a self-hosted business operating system running on a single Linux server. One [Authentik](https://goauthentik.io) SSO identity unlocks **39 services** spanning CRM, finance, communications, AI, fleet management, document storage, and a full Linux remote desktop — all served behind [Caddy](https://caddyserver.com) with automatic HTTPS. -It's the operational spine of **Atlas Corporation** (Tilburg, NL) — built by and for a solo founder who needed a private cloud they actually own, styled like a space-grade command console. +Built by and for a solo founder who needed a private cloud they actually own, styled like a space-grade command console. -> Think of it as a Citrix-style desktop, but it's your own server, your own identity, your own data. - -> **Want your own?** Self-host the whole stack with the [one-command installer](#-quick-deploy) below — or get a managed Atlas workspace at **[atlascorporation.nl](https://atlascorporation.nl)**. +> Think of it as a Citrix-style desktop — but it is your own server, your own identity, your own data.
![Atlas OS desktop](./assets/desktop-preview.svg) -The Atlas OS desktop — categorized launcher, live cockpit panels, drag-and-drop windows. Served at command.{DOMAIN}/os/ behind SSO. +The Atlas OS desktop — categorized launcher, live cockpit panels. Served at command.YOUR_DOMAIN/os/ behind SSO.
-**What runs on it:** -- 🏢 Odoo 19 ERP/CRM — full business operations -- 💶 Firefly III + Enable Banking — bank sync and financial intelligence -- 📧 Stalwart — self-hosted mail (all domains) -- 🤖 Atlas Brain — AI that reads your mail, CRM, and bank every 15 minutes -- 🎓 Atlas Academy — courses + lead capture wired to Odoo CRM -- 🕌 Islamic layer — Adhan at salah times, Quran at logon, family-safe DNS -- 🖥️ Remote Linux desktop — Webtop (XFCE + Claude Code + Chromium inside) -- 🔒 Authentik — SSO that gates every single service -- ...and more - --- ## 🖥️ The Desktop -Open ``command.{DOMAIN}/os/`` on any device. You get a space-themed boot screen → Authentik SSO login → a live desktop with your real data: a categorized launcher (Cockpit · Identity · AI · Work · Files · Ops · Sites), drag-and-drop windows, a taskbar, and cockpit panels that auto-refresh. +Open `https://command.YOUR_DOMAIN/os/` on any device. You get a space-themed boot screen → Authentik SSO login → a live desktop with your real data: a categorized launcher (Cockpit · Identity · AI · Work · Files · Ops · Sites), drag-and-drop windows, and cockpit panels that auto-refresh. + +**Remote Linux desktop** (tailnet-only, Webtop): -**Remote Linux desktop** (tailnet-only): -``` -`desktop.{DOMAIN}` (tailnet-only) -``` A real XFCE desktop in the browser. Claude Code and Chromium are pre-installed — OAuth login works because the browser is *inside* the desktop. Requires Tailscale to be active on your device. --- ## 🏗️ Architecture -
- -![Atlas OS architecture](./assets/architecture.svg) - -
- -One box. Caddy is the **sole** public entry point. Every public service passes through Authentik `forward_auth` before it's reached. Root-level access (SSH, the Webtop desktop) is Tailscale-only and never exposed to the public internet. +One box. Caddy is the **sole** public entry point. Every public service passes through Authentik `forward_auth` before it is reached. Root-level access (SSH, the remote desktop) is Tailscale-only and never exposed to the public internet.
Interactive Mermaid diagram @@ -82,7 +72,7 @@ graph LR U([User Browser]) iOS([iOS / Mobile]) end - subgraph atlas-01["atlas-01 · Hetzner CPX32"] + subgraph server["Your Server"] direction TB C[Caddy TLS] A[Authentik SSO] @@ -90,7 +80,7 @@ graph LR A -->|verified| OS[Atlas OS Desktop] A -->|verified| OD[Odoo ERP] A -->|verified| NC[Nextcloud] - A -->|verified| AI[AI Gateway LiteLLM] + A -->|verified| AI[AI Gateway] A -->|verified| FG[Forgejo Git] A -->|verified| MC[MeshCentral] subgraph AIStack["AI Stack"] @@ -98,8 +88,6 @@ graph LR AI --> GR[Groq / Cerebras] AI --> CL[Claude API] AB[Atlas Brain] -->|15min| AI - AB --> ST[atlas-state.json] - ST --> OS end subgraph MeshNet["Mesh"] NATS[NATS Event Bus] --> TS[Tailscale Devices] @@ -108,6 +96,7 @@ graph LR U -->|HTTPS| C iOS -->|Tailscale| TS ``` +
Full detail in [ARCHITECTURE.md](./ARCHITECTURE.md). @@ -127,66 +116,66 @@ Full detail in [ARCHITECTURE.md](./ARCHITECTURE.md). | Control | AI kill-switch, autonomy level, daily spend cap | ### 🛡️ Identity -| App | Description | URL | -|-----|-------------|-----| -| Authentik | SSO, OIDC, MFA — gates all services | `auth.{DOMAIN}` | -| Vaultwarden | Self-hosted Bitwarden (iOS app works) | `vault.{DOMAIN}` | +| App | URL | +|-----|-----| +| Authentik — SSO, OIDC, MFA | `auth.YOUR_DOMAIN` | +| Vaultwarden — self-hosted Bitwarden | `vault.YOUR_DOMAIN` | ### 🤖 AI -| App | Description | URL | -|-----|-------------|-----| -| Atlas Chat | Open-WebUI — ChatGPT-style on local + cloud models | `chat.{DOMAIN}` | -| AI Gateway | LiteLLM proxy — unified OpenAI-compat API | `llm.{DOMAIN}` | -| Mindmap | AI-powered visual thinking | `mindmap.{DOMAIN}` | -| Leeragent | Learning & knowledge agent | `leeragent.{DOMAIN}` | +| App | URL | +|-----|-----| +| Atlas Chat (Open-WebUI) | `chat.YOUR_DOMAIN` | +| AI Gateway (LiteLLM proxy) | `llm.YOUR_DOMAIN` | +| Mindmap | `mindmap.YOUR_DOMAIN` | +| Leeragent | `leeragent.YOUR_DOMAIN` | See the full AI routing stack (local → free cloud → paid) in [docs/ai-stack.md](./docs/ai-stack.md). ### 💼 Work -| App | Description | URL | -|-----|-------------|-----| -| Odoo | ERP + CRM (leads, invoices, customers) | `odoo.{DOMAIN}` | -| CFO / Firefly III | Double-entry bookkeeping + budget intelligence | `cfo.{DOMAIN}` | -| Bank / Enable Banking | PSD2 bank sync (ING, Knab, etc.) | `fidi.{DOMAIN}` | -| Paperless-ngx | Document management + OCR | `paperless.{DOMAIN}` | -| OnlyOffice | Full office suite (Writer, Sheets, Slides) | `office.{DOMAIN}` | -| Calendar | Nextcloud Calendar (DAV sync to iOS) | `cloud.{DOMAIN}` | +| App | URL | +|-----|-----| +| Odoo 19 ERP/CRM | `odoo.YOUR_DOMAIN` | +| Firefly III (bookkeeping) | `cfo.YOUR_DOMAIN` | +| Enable Banking (PSD2 feed) | `fidi.YOUR_DOMAIN` | +| Paperless-ngx (documents) | `paperless.YOUR_DOMAIN` | +| OnlyOffice | `office.YOUR_DOMAIN` | +| Nextcloud Calendar | `cloud.YOUR_DOMAIN` | ### 📁 Files & Comms -| App | Description | URL | -|-----|-------------|-----| -| Nextcloud | File storage, DAV, photos | `cloud.{DOMAIN}` | -| Stalwart Mail | Self-hosted email (SMTP/IMAP/JMAP) | `stalwart.{DOMAIN}` | -| Relay | Internal message relay service | `relay.{DOMAIN}` | +| App | URL | +|-----|-----| +| Nextcloud | `cloud.YOUR_DOMAIN` | +| Stalwart Mail (SMTP/IMAP/JMAP) | `stalwart.YOUR_DOMAIN` | +| Message relay | `relay.YOUR_DOMAIN` | ### ⚙️ Ops -| App | Description | URL | -|-----|-------------|-----| -| Forgejo | Self-hosted Git — this very repo | [git.atlascorporation.nl](https://git.atlascorporation.nl) | -| n8n | Workflow automation | `n8n.{DOMAIN}` | -| Uptime Kuma | Service health monitoring | `uptime.{DOMAIN}` | -| MeshCentral | Fleet management + remote access | `mesh.{DOMAIN}` | -| Command | Atlas command dashboard | `command.{DOMAIN}` | -| Remote Desktop | Webtop full Linux desktop (tailnet-only) | `desktop.{DOMAIN} (tailnet-only)` | +| App | URL | +|-----|-----| +| Forgejo (self-hosted git) | `git.YOUR_DOMAIN` | +| n8n (automation) | `n8n.YOUR_DOMAIN` | +| Uptime Kuma | `uptime.YOUR_DOMAIN` | +| MeshCentral (fleet) | `mesh.YOUR_DOMAIN` | +| Command dashboard | `command.YOUR_DOMAIN` | +| Remote Desktop (Webtop) | tailnet-only | -### 🎓 Atlas Academy -A full education arm running on the same box — courses, coaching, and an ESF/BiSL/AI curriculum at [atlasacademy.nl](https://atlasacademy.nl). Lead capture posts straight into Odoo CRM via the `atlas-academy-relay` service (creates `crm.lead` records), with an email fallback. Product feed is wired to WooCommerce. See [docs/academy.md](./docs/academy.md). +### 🎓 Academy +An education arm running on the same box — courses, coaching, ESF/BiSL/startup/AI curriculum. Lead capture posts straight into Odoo CRM. See [docs/academy.md](./docs/academy.md). ### 🕌 Islamic Layer -A first-class part of the OS, not an add-on: family-safe DNS (AdGuard Family), Quran at logon, Adhan playback + screen lock at El Feth Tilburg salah times, and recurring sunnah reminders across the device fleet. See [docs/islamic-layer.md](./docs/islamic-layer.md). +A first-class part of the OS: family-safe DNS (AdGuard Family), Quran at logon, Adhan + screen lock at configured mosque salah times, sunnah reminders across the device fleet. See [docs/islamic-layer.md](./docs/islamic-layer.md). ### 🌐 Managed Sites -Your own brand sites and any client WordPress sites — each in an isolated Docker stack behind Caddy. +Atlas OS manages multiple sites (own brands + client sites) on the same box. Each is an isolated Docker stack or static HTML, registered in Caddy with its own Authentik proxy provider if needed. --- ## 🤖 AI Stack -Atlas OS has a 4-tier AI routing stack — zero-cost local first, paid cloud only when needed. Full table and routing decision tree in **[docs/ai-stack.md](./docs/ai-stack.md)**. +Four-tier routing — zero-cost local first, paid cloud only when needed. Full table in **[docs/ai-stack.md](./docs/ai-stack.md)**. | Tier | Example | Use | |------|---------|-----| -| 0 — Local | `atlas-auto` (Ollama on RTX A2000) | Classification, Dutch copy, code, summaries | +| 0 — Local | Ollama on local GPU | Classification, copy, code, summaries | | 1 — Free Cloud | Groq / Cerebras 70B · Gemini (1M ctx) | Fast reasoning, bulk tasks, vision | | 2 — Paid | Claude Haiku / Sonnet / Opus | Code, multi-step reasoning, architecture | @@ -196,16 +185,21 @@ Atlas OS has a 4-tier AI routing stack — zero-cost local first, paid cloud onl ## 🚀 Quick Deploy -> **Requirements:** Debian 12 or Ubuntu 24.04, a domain with DNS pointed at the server, a Tailscale account. +> **Requirements:** Debian 12 or Ubuntu 24.04 · a domain with DNS → server · Tailscale account (free tier) ```bash -git clone https://git.atlascorporation.nl/chaib/atlas-os +git clone cd atlas-os chmod +x deploy/install.sh -./deploy/install.sh --domain yourdomain.com --email admin@yourdomain.com +sudo ./deploy/install.sh --domain yourdomain.com --email admin@yourdomain.com ``` -The installer sets up Docker, Caddy, Tailscale, and the core compose stacks. After install, configure Authentik at `https://auth.yourdomain.com`, then log in to `https://command.yourdomain.com/os/`. Full guide: [deploy/README.md](./deploy/README.md). +1. Open `https://auth.yourdomain.com` → complete Authentik setup +2. Log in to `https://command.yourdomain.com/os/` — desktop boots +3. Add the AI stack: `docker compose -f deploy/compose/atlas-ai.yml up -d` +4. Configure `server/atlas_brain.py` with your mail accounts + +Full guide: [deploy/README.md](./deploy/README.md) --- @@ -215,15 +209,17 @@ The installer sets up Docker, Caddy, Tailscale, and the core compose stacks. Aft atlas-os/ ├── assets/ # Animated header, desktop preview, architecture SVGs ├── web/os/index.html # The browser OS desktop (production copy) -├── server/ # Sanitized production Python (atlas_brain, meridian, ...) +├── server/ # Python services (atlas_brain, meridian, ...) │ └── systemd/ # Service unit files ├── scripts/ # Export + automation scripts ├── deploy/ │ ├── install.sh # One-command installer -│ ├── compose/ # atlas-core.yml (+ ai stack) +│ ├── compose/ # atlas-core.yml, atlas-ai.yml │ └── caddy/ # Caddyfile.template (Authentik SSO pattern) ├── docs/ # ai-stack · academy · islamic-layer · security · deployment -├── ARCHITECTURE.md · SERVICES.md · CHANGELOG.md · README.md +├── ARCHITECTURE.md # One-box philosophy, topology, data flows +├── SERVICES.md # All containers + systemd services +└── CHANGELOG.md ``` --- @@ -237,7 +233,7 @@ atlas-os/ | Network | Public services behind SSO · internal services on Tailscale only | | Secrets | Vaultwarden (E2E) · age-encrypted vault for sync · chmod 600 on disk | | Remote desktop | Webtop is tailnet-only — never exposed to the public internet | -| Backups | `atlas-backup-*` services for Forgejo, Nextcloud, Authentik | +| Backups | Automated backup services for Forgejo, Nextcloud, Authentik | **Rule:** anything root-level stays tailnet-only. Public services must pass Authentik `forward_auth`. No bare basic-auth on the public internet. Full model in [docs/security.md](./docs/security.md). @@ -253,8 +249,6 @@ atlas-os/ Built with obsession by **Chaib Aarab** · Atlas Corporation · Tilburg, NL -⟡ [atlascorporation.nl](https://atlascorporation.nl) · [atlasworks.nl](https://atlasworks.nl) · [atlasacademy.nl](https://atlasacademy.nl) · [atlaspos.nl](https://atlaspos.nl) ⟡ - *"Your business on one box — space grade."* diff --git a/SERVICES.md b/SERVICES.md index 9090801..d5f7e6f 100644 --- a/SERVICES.md +++ b/SERVICES.md @@ -55,7 +55,7 @@ Live status: `uptime.{DOMAIN}` | Service | URL | |---------|-----| -| Forgejo | git.atlascorporation.nl | +| Forgejo | git.YOUR_DOMAIN | | n8n | n8n.{DOMAIN} | | Uptime Kuma | uptime.{DOMAIN} | | MeshCentral | mesh.{DOMAIN} | @@ -64,7 +64,7 @@ Live status: `uptime.{DOMAIN}` ## Managed Sites -atlasworks.nl, atlascorporation.nl, atlasagency.nl, atlasacademy.nl, atlaspos.nl, +atlasworks.YOUR_DOMAIN, YOUR_DOMAIN, agency.YOUR_DOMAIN, academy.YOUR_DOMAIN, pos.YOUR_DOMAIN, your-site-1.example, your-site-2.example ## Background systemd Services @@ -95,7 +95,7 @@ your-site-1.example, your-site-2.example | Service | URL | |---------|-----| -| Academy site | atlasacademy.nl | +| Academy site | academy.YOUR_DOMAIN | | Lead relay (Odoo) | /academy-lead -> 127.0.0.1: (atlas-academy-relay) | | Product feed | /academy-feed.php | @@ -106,5 +106,5 @@ your-site-1.example, your-site-2.example | AdGuard Family DNS | Family-safe DNS + hosts blocklist | | HaramBlur | Browser content filtering | | Quran at logon | Recitation on workstation login | -| Adhan + lock | Adhan + screen lock at El Feth Tilburg salah times | +| Adhan + lock | Adhan + screen lock at your configured mosque salah times | | Sunnah reminders | Recurring fleet-wide reminders | diff --git a/deploy/README.md b/deploy/README.md index 7d9d08f..2669866 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -6,27 +6,51 @@ One-command installer for Atlas OS on a fresh Debian 12 / Ubuntu 24.04 server. - Debian 12 or Ubuntu 24.04 (x86_64) - Root access -- A domain with DNS pointed at the server +- A domain with DNS A record pointed at the server - A Tailscale account (free tier works) ## Install ```bash -git clone https://git.atlascorporation.nl/chaib/atlas-os +git clone cd atlas-os chmod +x deploy/install.sh sudo ./deploy/install.sh --domain yourdomain.com --email admin@yourdomain.com ``` +The installer: +1. Installs Docker, Caddy, Tailscale +2. Writes `deploy/caddy/Caddyfile.template` → `/etc/caddy/Caddyfile` with your domain substituted +3. Pulls and starts the core compose stack (`atlas-core.yml`) +4. Generates strong secrets at `/opt/atlas/secrets/atlas.env` (chmod 600) + ## Post-install 1. Open `https://auth.yourdomain.com` and complete Authentik setup 2. Create your admin user in Authentik 3. Open `https://command.yourdomain.com/os/` — Atlas OS desktop boots 4. Add the AI stack: `docker compose -f deploy/compose/atlas-ai.yml up -d` -5. Configure `server/atlas_brain.py` with your mail accounts +5. Configure `server/atlas_brain.py` with your mail accounts and API keys ## Secrets -The installer generates strong secrets at `/opt/atlas/secrets/atlas.env` (chmod 600). -Never commit this file. It is in `.gitignore`. +The installer generates secrets at `/opt/atlas/secrets/atlas.env` (chmod 600). +Never commit this file — it is in `.gitignore`. + +## Customize + +To swap in your domain across all docs after cloning: + +```bash +grep -rl 'YOUR_DOMAIN' . | xargs sed -i 's/YOUR_DOMAIN/yourdomain.com/g' +``` + +## Minimum viable stack + +If you want just the browser OS without the full AI + POS stack: + +```bash +docker compose -f deploy/compose/atlas-core.yml up -d +``` + +Core services: Authentik · Nextcloud · Stalwart · Forgejo · Vaultwarden · the OS desktop. diff --git a/docs/academy.md b/docs/academy.md index 2b6e8d4..91caf6e 100644 --- a/docs/academy.md +++ b/docs/academy.md @@ -1,35 +1,35 @@ # Atlas Academy -The education arm of Atlas Corporation, running on the same box: [atlasacademy.nl](https://atlasacademy.nl). Coaching, courses, and a curriculum spanning ESF-funded tracks, BiSL, startup, and AI. +An education arm running on the same box: coaching, courses, and a curriculum spanning ESF-funded tracks, BiSL, startup, and AI. Deployed at `academy.YOUR_DOMAIN`. ## Hosting -Served as static HTML + a PHP product feed via nginx (TransIP subsite), fronted by the same brand and analytics as the rest of the stack. +Served as static HTML + a PHP product feed via nginx, fronted by the same brand and analytics as the rest of the stack. -**Key pages:** `index`, `coaching`, `cursussen`, `pricing`, `leerpad`, `shop`, `esf`, `bisl`, plus per-course pages (`cursussen/bisl`, `cursussen/startup`, `cursussen/ai`). +**Key pages:** `index`, `coaching`, `cursussen`, `pricing`, `leerpad`, `shop`, `esf`, `bisl`, plus per-course pages. ## Lead capture → Odoo CRM -Academy leads flow straight into the operator's Odoo CRM as `crm.lead` records — no manual re-entry. +Academy leads flow straight into Odoo CRM as `crm.lead` records — no manual re-entry. ``` Academy page (form) │ POST { name, email, interest, source } ▼ -atlas-academy-relay (systemd, port ) +atlas-academy-relay (systemd, internal port) │ ├─► Odoo → creates crm.lead, returns { ok: true, lead_id: N } - └─► email fallback → info@atlascorporation.nl + └─► email fallback → admin@YOUR_DOMAIN ``` -The relay is exposed via Caddy at `/academy-lead` (proxied to `127.0.0.1:`). It caches the Odoo UID so it doesn't re-authenticate on every lead. +The relay is exposed via Caddy at `/academy-lead` (proxied to `127.0.0.1:`). It caches the Odoo UID so it does not re-authenticate on every lead. ## Product feed Courses and hardware bundles are pulled from WooCommerce via a JSON feed, so the Academy shop stays in sync with the live store without duplicating product data. ``` -GET https://www./academy-feed.php +GET https://YOUR_STORE/academy-feed.php → { ts, count, products[] } # each: { id, title, price, type, img, url, cats } ``` diff --git a/docs/islamic-layer.md b/docs/islamic-layer.md index e398c43..b98bb62 100644 --- a/docs/islamic-layer.md +++ b/docs/islamic-layer.md @@ -1,6 +1,6 @@ # Islamic Layer -A first-class part of Atlas OS — woven into the OS and the device fleet, not bolted on. Live since 2026-05-09. +A first-class part of Atlas OS — woven into the OS and the device fleet, not bolted on. ## Components @@ -9,16 +9,18 @@ A first-class part of Atlas OS — woven into the OS and the device fleet, not b | Family-safe DNS | AdGuard Family + a hosts blocklist across the network | | Content filtering | HaramBlur on browsers | | Quran at logon | Recitation plays when the workstation logs in | -| Adhan + lock | At El Feth Tilburg salah times, the Adhan plays and the screen locks | +| Adhan + lock | At configured mosque salah times, the Adhan plays and the screen locks | | Sunnah reminders | Recurring reminders surfaced across the device fleet | ## Salah timing -Prayer times track **El Feth Mosque, Tilburg**. At each salah time the fleet plays the Adhan and locks the active screen — a deliberate, enforced pause rather than a passive notification. +Prayer times are configured for your local mosque. At each salah time the fleet plays the Adhan and locks the active screen — a deliberate, enforced pause rather than a passive notification. + +To configure your mosque: edit `atlas-os/islamic/config.json` with your mosque name and location (or GPS coordinates). The timing engine uses the MuslimSalat API. ## Where it lives -All assets and scripts are under the Atlas artifacts tree: +All assets and scripts live under the Atlas artifacts tree: ``` Sync/atlas-artifacts/atlas-os/islamic/