# 🎯 Directus: Headless CMS a Backend as a Service
👉 [[1.1.1 O projektu]]
👉 [[1.1.2 Vlastní digitální svět (přehled článků)]]
## 📌 Úvod: Proč Directus?
[Directus](https://directus.io/) je **open-source headless CMS a BaaS platforma**, která vám umožní spravovat data přes elegantní admin rozhraní a přistupovat k nim přes REST nebo GraphQL API.
Podporuje:
- ✅ **Automatické REST a GraphQL API pro vaše data**
- ✅ **Elegantní admin panel s WYSIWYG editorem**
- ✅ **Napojení na existující databázi (PostgreSQL, MySQL, SQLite...)**
- ✅ **Správa uživatelů, rolí a oprávnění**
V tomto článku si ukážeme, jak nasadit Directus v Dockeru a vytvořit první datový model.
![[image_directus.png]]
---
## 📜 Licence a cena
| Aspekt | Detail |
|--------|--------|
| **Licence** | BSL 1.1 → GPL 3.0 (po 3 letech) |
| **Self-hosting** | ✅ Ano, zdarma a bez omezení funkcí |
| **Komerční použití** | ✅ Ano, lze používat komerčně |
| **Cloud verze** | Directus Cloud (od $99/měsíc) |
| **Zdrojový kód** | [github.com/directus/directus](https://github.com/directus/directus) |
> Directus používá **Business Source License (BSL)** – můžete ho zdarma self-hostovat i pro komerční projekty. Po 3 letech se kód stává GPL. Jediné omezení: nemůžete nabízet Directus jako konkurenční managed službu.
---
## 🚀 Instalace v Dockeru
```yaml
version: '3.8'
services:
directus:
image: directus/directus:latest
container_name: directus
restart: always
ports:
- "8055:8055"
environment:
KEY: 'your-unique-key-here'
SECRET: 'your-unique-secret-here'
DB_CLIENT: 'pg'
DB_HOST: 'postgres_db'
DB_PORT: '5432'
DB_DATABASE: 'directus'
DB_USER: 'admin'
DB_PASSWORD: 'your_secure_password'
ADMIN_EMAIL: '
[email protected]'
ADMIN_PASSWORD: 'your_admin_password'
volumes:
- directus_uploads:/directus/uploads
- directus_extensions:/directus/extensions
networks:
- digilifehub_network
depends_on:
- postgres_db
volumes:
directus_uploads:
directus_extensions:
networks:
digilifehub_network:
external: true
```
📌 **Directus je dostupný na `http://IP_ADRESA:8055`**
📌 **Doporučuji PostgreSQL jako databázi pro produkční nasazení**
---
## ⚙️ Konfigurace
### Základní nastavení
1. Přihlaste se pomocí admin credentials
2. Vytvořte první kolekci (tabulku)
3. Definujte pole a jejich typy
4. Nastavte oprávnění pro API přístup
### Napojení na existující databázi
- Directus umí pracovat s existující databází
- Automaticky vytvoří admin rozhraní pro vaše tabulky
- Nemodifikuje vaše data, pouze přidá metadata tabulky
---
## 💡 Praktické použití
### Use case 1: Backend pro mobilní aplikaci typu Airbnb
**Situace:** Startup vyvíjí aplikaci pro sdílené ubytování. Potřebuje backend s API, ale nemá rozpočet na backend tým.
**Řešení s Directus:**
- **Kolekce:** `properties`, `bookings`, `users`, `reviews`, `messages`
- **Relace:** Property → Owner (user), Booking → Guest + Property, Review → Property
- **Media:** Obrázky nemovitostí automaticky resizované
- **API:** REST/GraphQL pro React Native aplikaci
- **Webhooks:** Při nové rezervaci → notifikace majiteli (n8n)
- **Flows:** Automatické schvalování ověřených hostů
**Výsledek:** Plnohodnotný backend za víkend, ne měsíce.
### Use case 2: Interní znalostní báze firmy
**Situace:** Firma má dokumenty roztroušené v Google Docs, Confluence, emailech. Nový zaměstnanec se ztrácí.
**Řešení s Directus:**
- **Kolekce:** `articles`, `categories`, `departments`, `faqs`
- **WYSIWYG editor:** Formátovaný obsah s obrázky
- **Verzování:** Historie změn každého článku
- **Oprávnění:** Marketing vidí jen své, HR jen své, vedení vše
- **Fulltext search:** Hledání napříč všemi dokumenty
- **Frontend:** Next.js staticky generovaný web
**Výsledek:** Centrální místo pro veškeré firemní know-how.
### Use case 3: Headless e-shop s vlastním frontendem
**Situace:** E-shop potřebuje custom design, který Shopify/WooCommerce neumožňuje. Zároveň marketing chce snadno editovat obsah.
**Řešení s Directus:**
- **Kolekce:** `products`, `categories`, `orders`, `customers`, `pages`
- **Custom fields:** Velikosti, barvy, varianty jako JSON pole
- **Relationships:** Product ↔ Categories (M2M), Product → Variants (O2M)
- **Webhooks:** Nová objednávka → Fakturoid, Zásilkovna, email
- **Frontend:** Next.js/Nuxt s ISR (Incremental Static Regeneration)
- **Platby:** Stripe/PayPal integrace ve frontendu
**Výsledek:** Rychlý, SEO-friendly e-shop s krásným adminem pro marketing.
### Use case 4: Centrální hub pro IoT data
**Situace:** Firma má desítky senzorů (teplota, vlhkost, spotřeba). Data končí v různých systémech.
**Řešení s Directus:**
- **Kolekce:** `devices`, `readings`, `alerts`, `locations`
- **API ingest:** Senzory posílají data přes REST API
- **Realtime:** WebSocket subscriptions pro live dashboardy
- **Agregace:** Custom endpoints pro hodinové/denní průměry
- **Alerting:** Flow spustí webhook když hodnota překročí limit
- **Vizualizace:** Grafana napojená na stejnou PostgreSQL
**Výsledek:** Single source of truth pro všechna IoT data.
---
## 🆚 Directus vs Strapi
| Aspekt | Directus | Strapi |
|--------|----------|--------|
| **Licence** | BSL 1.1 | MIT |
| **Přístup k DB** | Napojí existující | Vytváří vlastní |
| **Admin UI** | Modernější, intuitivnější | Funkční, ale starší |
| **Flows (automation)** | ✅ Built-in | ❌ Vyžaduje plugin |
| **Realtime** | ✅ WebSockets | ⚠️ Plugin |
| **Ideální pro** | Existující DB, aplikace | Nové projekty, blogy |
---
## 🏁 Závěr a další kroky
✅ **Directus je výkonné headless CMS s automatickým API.**
✅ **Elegantní admin panel pro správu obsahu.**
✅ **Napojení na existující databázi bez migrace dat.**
✅ **BSL licence umožňuje komerční self-hosting zdarma.**
👉 **Používáte headless CMS? Jaký je váš favorit?** 🚀
---
### ⏪ Související články ⏩
> **🔙 Předchozí článek:**
> [[2025-03-15 n8n.io (automatizace workflow)|n8n.io (automatizace workflow)]]
>
> **🔜 Následující článek:**
> [[2025-04-15 Strapi (headless CMS pro obsahové weby)|Strapi (headless CMS pro obsahové weby)]]
#docker #directus #headlesscms #baas #opensource #osobniDigitalizace #digilifehub