# 🎯 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