#API #Strapi #Directus #Handwerk #Datenbank

API-first Development für KMUs: So bauen Sie mit Strapi & Directus in einer Woche Ihren eigenen Produktkatalog auf

Praktischer Leitfaden für Handwerksbetriebe: Wie Sie ohne teure Entwickler eine flexible Datenbank für Ihre Produkte aufsetzen – mit Schritt-für-Schritt-Anleitung, Code-Snippets und konkreten Empfehlungen für den DACH-Markt.

API-first Development für KMUs: Wie Sie mit Strapi & Directus in einer Woche Ihre eigene Produktkatalog-Datenbank aufbauen

Der Kunde ruft an und fragt nach dem aktuellen Preis für die „Premium-Küchenarbeitsplatte in Eiche massiv, 3 Meter“. **Sie blättern im Excel-Ordner, finden drei verschiedene Versionen der Preisliste – und am Ende stellt sich heraus, dass die aktuelle Version doch auf dem Laptop Ihres Kollegen liegt, der heute krank ist. Klingt bekannt? Für viele Handwerksbetriebe und kleine Unternehmen ist die Produktverwaltung immer noch ein manuelles Chaos aus Tabellen, PDFs und Notizzetteln. Dabei gibt es eine bessere Lösung: Eine zentrale, digitale Produktdatenbank, die nicht nur intern funktioniert, sondern auch mit Ihrer Website, Ihrem Shop oder sogar Partnerportalen synchronisiert werden kann.

In diesem Leitfaden zeige ich Ihnen, wie Sie mit API-first Development und Tools wie Strapi oder Directus in weniger als einer Woche eine professionelle Produktdatenbank aufbauen – ohne teure Entwickler, ohne monatelange Planung und mit maximaler Flexibilität für die Zukunft. Am Beispiel eines fiktiven Tischlerbetriebs aus Bayern (der „Muster-Schreinerei GmbH“) durchlaufen wir den gesamten Prozess: Von der Installation über die Datenmodellierung bis hin zur Anbindung an eine einfache Website.


Warum API-first? Die Vorteile für Handwerksbetriebe und KMUs

Bevor wir in die Technik einsteigen, klären wir die grundsätzliche Frage: Warum sollte ein Handwerksbetrieb überhaupt eine API-basierte Lösung nutzen? Schließlich funktioniert Excel auch – irgendwie.

Der entscheidende Unterschied liegt in der Zukunftssicherheit und Skalierbarkeit. Eine klassische Excel-Tabelle oder eine lokale Access-Datenbank ist wie ein Werkzeugkoffer, der nur in Ihrer Werkstatt funktioniert. Eine API-basierte Datenbank hingegen ist wie ein modulares System, das Sie überall einsetzen können:

  • Einmal pflegen, überall nutzen: Ändern Sie den Preis für eine Arbeitsplatte in der Datenbank, aktualisiert sich die Information automatisch auf Ihrer Website, im Online-Shop und in den Angebotsvorlagen.
  • Schnittstellen zu Partnern: Lieferanten wie Hornbach oder Bauhaus bieten oft APIs an, um Bestände oder Preise abzugleichen. Mit Ihrer eigenen API können Sie solche Verbindungen herstellen.
  • Mobile Nutzung: Ihre Monteure sehen unterwegs auf dem Tablet die aktuellen Produktdaten – ohne dass sie Ihnen anrufen müssen.
  • Automatisierung: Angebote, Rechnungen oder Materialbestellungen lassen sich direkt aus der Datenbank generieren.

Konkretes Beispiel aus der Praxis: Die Muster-Schreinerei hat 150 verschiedene Küchenfronten im Sortiment. Bisher wurden neue Produkte manuell in eine Excel-Tabelle eingetragen, dann in die Website kopiert und schließlich in die Angebotssoftware übertragen. Pro neues Produkt verbrachte der Inhaber etwa 20 Minuten mit Doppelarbeit. Nach der Umstellung auf eine API-basierte Lösung reduziert sich dieser Aufwand auf unter 2 Minuten – und Fehler durch manuelle Übertragung gehören der Vergangenheit an.


Strapi vs. Directus: Welches Tool passt zu Ihrem Betrieb?

Beide Tools sind Open-Source, kostenlos in der Basisversion und ermöglichen es Ihnen, eine Datenbank mit API-Schnittstelle aufzubauen. Aber es gibt wichtige Unterschiede:

KriteriumStrapiDirectus
BenutzerfreundlichkeitSehr intuitiv, moderne OberflächenEtwas technischer, aber flexibler
HostingBenötigt Node.js (z. B. auf Vercel, Heroku oder eigenem Server)Läuft mit PHP/MySQL (häufiger bei klassischen Webhostern verfügbar)
ErweiterbarkeitGroße Plugin-Bibliothek (z. B. für Shopify, WordPress)Stärker auf reine Datenverwaltung fokussiert
DACH-spezifische AnpassungenGute Lokalisierungsoptionen (z. B. für deutsche Datumsformate, Mehrwertsteuer-Logik)Besser für komplexe Datenbankabfragen geeignet
LernkurveIdeal für EinsteigerBesser für Nutzer mit etwas SQL-Kenntnissen

Empfehlung für Handwerksbetriebe:

  • Wenn Sie schnell starten wollen und eine einfache Oberfläche bevorzugen, wählen Sie Strapi.
  • Wenn Sie bereits eine MySQL-Datenbank nutzen (z. B. für Ihre Website) oder komplexe Abfragen brauchen (z. B. für Lagerbestände mit Historien), ist Directus die bessere Wahl.

Für diesen Leitfaden nutzen wir Strapi, da es für die meisten KMUs die einfachere Lösung darstellt.


Schritt 1: Strapi installieren und einrichten (30–60 Minuten)

Voraussetzungen

  • Ein Server (kann ein günstiger VPS bei Hetzner, Netcup oder IONOS sein, Kosten: ~5–10 €/Monat)
  • Node.js (Version 18 oder höher)
  • Datenbank (SQLite für Tests, später MySQL oder PostgreSQL für den Produktivbetrieb)

Installation

  1. Server vorbereiten: Melden Sie sich per SSH auf Ihrem Server an und installieren Sie Node.js:
    curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt-get install -y nodejs
    
  2. Strapi-Projekt erstellen:
    npx create-strapi-app@latest produktkatalog --quickstart
    

    (Ersetzen Sie produktkatalog mit Ihrem gewünschten Projektnamen.)
  3. Strapi starten:
    cd produktkatalog
    npm run develop
    

    Nach der Installation öffnet sich automatisch die Admin-Oberfläche unter http://ihre-server-ip:1337/admin.
  4. Erstes Admin-Konto anlegen: Folgen Sie den Anweisungen im Browser, um einen Benutzernamen, E-Mail und Passwort zu vergeben.

Wichtige Einstellungen für den DACH-Markt

Bevor wir mit den Produkten starten, passen wir Strapi an deutsche Anforderungen an:

  1. Sprache & Region:
    • Gehen Sie zu Einstellungen > Internationalisierung.
    • Fügen Sie Deutsch (Deutschland) als Sprache hinzu und setzen Sie sie als Standard.
    • Unter Formate stellen Sie sicher, dass:
      • Datum: DD.MM.YYYY
      • Dezimaltrennzeichen: , (Komma)
      • Währung: (Euro)
  2. Medien-Bibliothek:
    • Unter Einstellungen > Medienbibliothek können Sie festlegen, wo Produktbilder gespeichert werden (lokal oder in der Cloud, z. B. AWS S3).
    • Tipp für Handwerksbetriebe: Nutzen Sie die Automatische Bildoptimierung, um Ladezeiten auf der Website zu verkürzen.

Schritt 2: Das Datenmodell für den Produktkatalog erstellen (2–3 Stunden)

Jetzt wird es konkret: Wir modellieren die Datenstruktur für unsere Produkte. Die Muster-Schreinerei hat folgende Anforderungen:

  • Produktgruppen (z. B. „Küchenfronten“, „Arbeitsplatten“, „Schranksysteme“)
  • Einzelne Produkte mit Attributen wie Preis, Material, Maße, Lieferzeit
  • Bilder & Dokumente (z. B. PDF-Datenblätter für Monteure)
  • Variationen (z. B. verschiedene Farben oder Oberflächen)

Collection Types in Strapi anlegen

  1. Produktgruppe (Kategorie):
    • Gehen Sie zu Content-Type Builder > Create new collection type.
    • Name: produktgruppe
    • Felder:
      • name (Text, kurz)
      • beschreibung (Rich Text)
      • slug (UID, für SEO-freundliche URLs)
      • sortierung (Zahl, um die Reihenfolge festzulegen)
  2. Produkt:
    • Name: produkt
    • Felder:
      • name (Text, kurz)
      • produktgruppe (Relation zu „produktgruppe“)
      • kurzbeschreibung (Text, lang)
      • beschreibung (Rich Text, für detaillierte Infos)
      • preis (Dezimalzahl, mit Währung €)
      • material (Enumeration: „Massivholz“, „MDF“, „Metall“, „Glas“)
      • masse (JSON-Feld für Länge/Breite/Höhe in mm)
      • lieferzeit (Zahl, in Werktagen)
      • lagermenge (Zahl)
      • ist_aktiv (Boolean, um Produkte zu deaktivieren)
      • bilder (Medien, mehrfache Auswahl)
      • dokumente (Medien, für PDFs)
      • variationen (Komponenten, siehe nächster Schritt)
  3. Variationen (als wiederverwendbare Komponente):
    • Gehen Sie zu Components > Create new component.
    • Name: variation
    • Felder:
      • farbe (Text)
      • oberflaeche (Enumeration: „Matt“, „Glänzend“, „Strukturiert“)
      • preisaufschlag (Dezimalzahl)
      • bild (Medien)

    Fügen Sie diese Komponente dann als wiederholbares Feld zum produkt-Typ hinzu.

Beispiel-Datensatz für die Muster-Schreinerei

Nach dem Speichern können Sie unter Content Manager erste Produkte anlegen. Hier ein Beispiel für eine Küchenarbeitsplatte:

  • Name: „Premium-Arbeitsplatte Eiche massiv“
  • Produktgruppe: „Arbeitsplatten“
  • Kurzbeschreibung: „38 mm starke Massivholzplatte aus europäischer Eiche, geölt“
  • Preis: 499,00 € (pro Meter)
  • Material: „Massivholz“
  • Maße: {"laenge": 3000, "breite": 600, "hoehe": 38}
  • Variationen:
    • Farbe: „Natur“, Preisaufschlag: 0 €
    • Farbe: „Sienkel geölt“, Preisaufschlag: 49,00 €
    • Farbe: „Weiß lackiert“, Preisaufschlag: 79,00 €

Schritt 3: Die API nutzen – Produkte auf der Website anzeigen (1–2 Tage)

Jetzt kommt der entscheidende Vorteil von Strapi: Die Daten sind sofort über eine REST- oder GraphQL-API abrufbar. Das bedeutet, Sie können sie in Ihre bestehende Website einbinden – egal ob WordPress, Typo3 oder eine selbstgebaute Lösung.

API-Endpunkt abrufen

Strapi generiert automatisch Endpunkte für Ihre Collection Types. Für unsere Produkte lautet die URL:

http://ihre-server-ip:1337/api/produktes?populate=*

(Der Parameter populate=* stellt sicher, dass auch verknüpfte Daten wie Bilder oder Produktgruppen geladen werden.)

Beispiel-Antwort (gekürzt):

{
  "data": [
    {
      "id": 1,
      "attributes": {
        "name": "Premium-Arbeitsplatte Eiche massiv",
        "preis": 499.00,
        "produktgruppe": {
          "data": {
            "id": 2,
            "attributes": {
              "name": "Arbeitsplatten",
              "slug": "arbeitsplatten"
            }
          }
        },
        "bilder": {
          "data": [
            {
              "id": 1,
              "attributes": {
                "url": "/uploads/eiche_arbeitsplatte_1_abc123.jpg"
              }
            }
          ]
        }
      }
    }
  ]
}

Produkte in einer einfachen HTML-Website anzeigen

Angenommen, Sie haben eine statische Website und möchten die Produkte dynamisch laden. Hier ein minimales Beispiel mit JavaScript (Fetch API):

<div id="produktliste"></div>

<script>
  async function ladeProdukte() {
    const response = await fetch('http://ihre-server-ip:1337/api/produktes?populate=*');
    const data = await response.json();

    const container = document.getElementById('produktliste');
    data.data.forEach(produkt => {
      const attributes = produkt.attributes;
      const preis = attributes.preis.toFixed(2).replace('.', ','); // Deutsche Zahlformatierung

      container.innerHTML += `
        <div class="produkt">
          <h3>${attributes.name}</h3>
          <p>${attributes.kurzbeschreibung}</p>
          <p><strong>Preis:</strong> ${preis} €/m</p>
          <img src="http://ihre-server-ip:1337${attributes.bilder.data[0].attributes.url}" alt="${attributes.name}" width="300">
        </div>
      `;
    });
  }

  ladeProdukte();
</script>

Wichtig für die Praxis:

  • CORS einrichten: Falls Ihre Website auf einer anderen Domain läuft, müssen Sie in Strapi unter Einstellungen > API-Tokens > CORS die Domain Ihrer Website freigeben.
  • Performance: Nutzen Sie Caching (z. B. mit Cloudflare) oder laden Sie Produkte nur bei Bedarf (z. B. beim Scrollen).
  • Sicherheit: Erstellen Sie einen API-Token unter Einstellungen > API-Tokens, um den Zugriff zu kontrollieren.

Schritt 4: Erweiterte Funktionen für den Handwerksbetrieb (optional)

Mit den Grundlagen sind Sie schon weiter als 90 % der Handwerksbetriebe. Aber Strapi bietet noch viel mehr Möglichkeiten, die speziell für KMUs interessant sind:

1. Benutzerrollen für Mitarbeiter

  • Monteure sehen nur Produkte und Lagerbestände, aber keine Preise.
  • Verkäufer dürfen Preise ändern, aber keine Produkte löschen.
  • Buchhaltung hat Zugriff auf Bestellhistorien.

Umsetzung:

  • Gehen Sie zu Einstellungen > Benutzer & Berechtigungen > Rollen.
  • Erstellen Sie eine neue Rolle (z. B. „Monteur“) und passen Sie die Berechtigungen an.

2. Automatische Preisaktualisierung

Falls Ihre Lieferanten regelmäßig Preislisten als CSV schicken, können Sie ein Skript schreiben, das die Daten automatisch importiert. Beispiel mit Node.js:

const fs = require('fs');
const csv = require('csv-parser');
const axios = require('axios');

const API_TOKEN = 'ihr-api-token';
const API_URL = 'http://ihre-server-ip:1337/api/produktes';

fs.createReadStream('preisliste_lieferant.csv')
  .pipe(csv())
  .on('data', async (row) => {
    const produktDaten = {
      data: {
        name: row.Produktname,
        preis: parseFloat(row.Preis.replace(',', '.')),
        material: row.Material,
        // Weitere Felder...
      }
    };

    try {
      await axios.put(`${API_URL}/${row.ProduktID}`, produktDaten, {
        headers: {
          'Authorization': `Bearer ${API_TOKEN}`
        }
      });
      console.log(`Produkt ${row.Produktname} aktualisiert.`);
    } catch (error) {
      console.error(`Fehler bei ${row.Produktname}:`, error.message);
    }
  });

3. Anbindung an Shop-Systeme

Falls Sie einen Shopify- oder WooCommerce-Shop betreiben, können Sie Strapi als zentrale Produktdatenbank nutzen und die Daten per API synchronisieren. Plugins wie strapi-provider-shopify (für Strapi) oder direkte API-Aufrufe machen das möglich.


Schritt 5: Deployment – Die Datenbank live schalten

Nach der lokalen Entwicklung müssen Sie Strapi auf einen produktiven Server bringen. Hier eine kurze Anleitung für Hetzner Cloud (günstig und DACH-freundlich):

  1. Server erstellen:
    • Wählen Sie einen CX21-Server (2 vCPUs, 4 GB RAM, ~5 €/Monat).
    • Betriebssystem: Ubuntu 22.04.
  2. Datenbank einrichten:
    sudo apt install mysql-server
    mysql_secure_installation  # Folgen Sie den Anweisungen
    
  3. Strapi für Produktion konfigurieren:
    • Erstellen Sie eine .env-Datei mit Ihren Datenbank-Zugangsdaten:
      DATABASE_HOST=localhost
      DATABASE_PORT=3306
      DATABASE_NAME=produktkatalog
      DATABASE_USERNAME=strapi
      DATABASE_PASSWORD=ihr-sicheres-passwort
      
    • Installieren Sie PM2 für Prozessmanagement:
      npm install pm2 -g
      pm2 start npm --name "strapi" -- run start
      pm2 save
      pm2 startup
      
  4. Domain & SSL einrichten:
    • Richten Sie eine Subdomain wie api.muster-schreinerei.de ein.
    • Installieren Sie Certbot für kostenlose SSL-Zertifikate:
      sudo apt install certbot python3-certbot-nginx
      sudo certbot --nginx -d api.muster-schreinerei.de
      
  5. Backups automatisieren:
    • Nutzen Sie das Hetzner Backup-Feature oder richten Sie ein Skript ein, das täglich die Datenbank sichert:
      mysqldump -u strapi -p'ihr-passwort' produktkatalog > /backups/produktkatalog_$(date +%F).sql
      

Kostenübersicht: Was sich die Lösung wirklich kostet

PostenKosten (einmalig)Kosten (monatlich)
Server (Hetzner CX21)4,90 €
Domain (z. B. .de)~10 €~1 €
Strapi (Open Source)
Entwicklungszeit~1–2 Arbeitstage
Optional: Plugins0–50 €
Gesamt10–60 €~6 €

Vergleich zur Alternative: Eine individuelle Datenbank-Entwicklung durch eine Agentur kostet schnell 5.000–15.000 €. Mit Strapi sparen Sie nicht nur Geld, sondern behalten auch die volle Kontrolle über Ihre Daten.


Fazit: Warum Sie jetzt starten sollten

Die Muster-Schreinerei hat nach der Umstellung auf Strapi nicht nur Zeit gespart, sondern auch neue Kunden gewonnen: Weil die Produktdaten jetzt immer aktuell sind, konnte der Betrieb einen Online-Konfigurator für Küchen einrichten – und damit gezielt Handwerker und Bauherren ansprechen, die nach individuellen Lösungen suchen.

Die größten Vorteile auf einen Blick:

  1. Keine Doppelarbeit mehr: Einmal eingegebene Daten sind überall verfügbar.
  2. Zukunftssicher: **Sie können später Shop-Systeme, mobile Apps oder Partnerportale anbinden.
  3. Geringe Kosten: Für weniger als 10 € im Monat haben Sie eine professionelle Lösung.
  4. Unabhängigkeit: Keine Abhängigkeit von teuren Software-Anbietern oder Excel-Chaos.

Der nächste Schritt: Von der Datenbank zur Automatisierung

Sobald Ihre Produktdatenbank steht, können Sie weitere Prozesse automatisieren:

  • Angebote generieren: Nutzen Sie die API, um Vorlagen in Word oder PDF zu füllen.
  • Lagerbestände tracken: Verbinden Sie Strapi mit einem Barcode-Scanner in der Werkstatt.
  • Kundenportal: Bauen Sie eine einfache Web-App, in der Kunden ihre bestellten Produkte einsehen können.

Falls Sie Unterstützung bei der Umsetzung brauchen – sei es bei der Installation, der Anbindung an Ihre Website oder der Schulung Ihrer Mitarbeiter – helfe ich Ihnen gerne weiter. Buchen Sie einen unverbindlichen Beratungstermin, und wir besprechen, wie Sie Strapi oder Directus optimal für Ihren Betrieb einsetzen:

Jetzt Beratungstermin vereinbaren →