Rewrite cockpit for content production
contify 2.0 — Technische Doku
Alles was du brauchst: Rollen, Workflow-Statuse, Textfelder, Routen und Setup.
Technologie-Stack
Stack & Architektur
Frontend
Next.js 16 · React 19 · Tailwind CSS 4 · shadcn/ui
Auth
NextAuth v5 · Credentials · RBAC · bcrypt
Daten
PostgreSQL 16 · Prisma ORM · Docker Compose
Tooling
TypeScript strict · ESLint · pnpm · Turbopack
Berechtigungsmodell
Rollen & Zugriff
Jeder User hat genau eine Rolle. Die Rolle bestimmt, welche Statuse sichtbar sind, welche Statusübergänge erlaubt sind und welche Seiten zugänglich sind.
Vollzugriff auf alle Funktionen, Statuse und User-Verwaltung.
Alle Statuse · Alle Texte · User anlegen/bearbeiten
Wie Admin, aber ohne technischen Systemzugriff.
Alle Statuse · Alle Texte · Kein User-Management
Schreibt und bearbeitet eigene Texte im Redaktionsprozess.
RESEARCH · OPEN · NOT_FINISHED · FINISHED · KEYWORD_DEVIATION
Lektoriert, korrigiert und gibt Texte frei.
CLEARED · PROOFREAD · NOT_PROOFREAD · FINISHED
Mandant – sieht nur abgeschlossene und gelieferte Texte.
APPROVED · DELIVERED · ACCEPTED · NOT_ACCEPTED · ARCHIVED
Workflow
19 Status-Werte
Jeder Text hat genau einen Status. Übergänge werden rollenbasiert validiert — ADMIN und MANAGER können frei wechseln, andere Rollen nur entlang der erlaubten Transitionen.
Eingang
CAPTURED
Erfasst
ASSIGNED
Zugewiesen
TEMPLATE_TEXT
Vorlagentext
Produktion
RESEARCH
Recherche
OPEN
In Bearbeitung
NOT_FINISHED
Unfertig
FINISHED
Fertiggestellt
KEYWORD_DEVIATION
Keyword-Abweichung
Lektorat
CLEARED
Freigegeben
NOT_PROOFREAD
Nicht lektoriert
PROOFREAD
Lektoriert
Abschluss
APPROVED
Genehmigt
COMPLETED
Abgeschlossen
DELIVERED
Geliefert
ACCEPTED
Angenommen
NOT_ACCEPTED
Abgelehnt
BILLED
Abgerechnet
CANCELLED
Storniert
ARCHIVED
Archiviert
Datenmodell
Text-Felder
Das Text-Modell enthält alle SEO-, Workflow- und Content-Felder. Versionen werden bei jedem Speichern automatisch angelegt.
| Feld | Pflicht | Beschreibung |
|---|---|---|
| title | Ja | Interner Arbeitstitel |
| seoTitle | Nein | Für Suchmaschinen optimierter H1/Title-Tag |
| metaDescription | Nein | Snippettext für Suchergebnisse, max. ~160 Zeichen |
| brief | Nein | Aufgabenbeschreibung und Ziel des Textes |
| content | Nein | Volltext in Markdown oder Plaintext |
| primaryKeyword | Nein | Primäres SEO-Keyword |
| secondaryKeywords | Nein | Kommagetrennte weitere Keywords |
| targetWordCount | Nein | Gewünschte Wortanzahl für Content-Score |
| orderNumber | Nein | Interne Bestellreferenz |
| externalRef | Nein | Verlinkung zu externem System (z.B. MOCO) |
| clientId | Nein | Zuordnung zu einem Kunden-Account |
| status | Ja | Aktueller Workflow-Status |
Zusätzlich: id, slug (auto-generiert), authorId, createdAt, updatedAt — plus n:1 Relation zu TextVersion.
Navigation
App-Routen
/
Landingpage
Öffentliche Startseite mit Live-Texten
/login
Login
NextAuth Credentials-Login
/docs
Dokumentation
Diese Seite
/dashboard
Dashboard
Übersicht, Metriken, Queue
/dashboard/texts
Texte
Alle Texte mit Filtern
/dashboard/texts/new
Neuer Text
Text erstellen
/dashboard/texts/[id]
Text-Detail
Bearbeitung, Versionen, Status
/dashboard/clients
Kunden
Mandanten + MOCO-Import
/dashboard/users
User
User-Verwaltung (Admin/Manager)
Integration
MOCO-Import
MOCO bleibt read-only. Import und Sync schreiben ausschließlich in die lokale contify-Datenbank. Keine Schreiboperationen zurück nach MOCO.
Setup
MOCO_API_KEY=...
In .env eintragen — ohne Key ist MOCO deaktiviert, alles andere bleibt nutzbar.
Import
Firmen aus MOCO werden als lokale Kunden angelegt und per mocoCompanyId verknüpft.
Sync
„Sync aktualisieren" überschreibt Name, Adresse und Kontaktdaten aus MOCO — lokal ergänzte Felder bleiben erhalten.
Local Dev Setup
Schnellstart
1 · Dependencies
pnpm install
2 · Datenbank
docker compose up -d pnpm prisma migrate dev pnpm prisma db seed
3 · Env
DATABASE_URL="postgresql://..." NEXTAUTH_SECRET="..." MOCO_API_KEY="..." # optional
4 · Dev-Server
pnpm dev
Seed-Admin: admin@contify.local
Passwort: contify-admin-2026