Showcase
Each example shows real output produced by typst-business-templates itself, from files in the project repository. Input on the left, output on the right.
Invoice
examples/it-consultant/documents/invoices/2025/invoice.jsonDetail: Invoice →{
"metadata": {
"invoice_number": "RE-2025-042",
"invoice_date": {
"date": "2025-01-22"
},
"due_date": {
"date": "2025-02-21"
},
"customer_number": "K-007",
"project_reference": "P-007-02 AWS Cloud Migration",
"performance_period": "01/2025"
},
"recipient": {
"name": "Dr. Petra Schmidt",
"company": "MedTech Solutions AG",
"address": {
"street": "Potsdamer Platz",
"house_number": "1",
"postal_code": "10785",
"city": "Berlin",
"country": "Deutschland"
}
},
"items": [
{
"position": 1,
"description": "Cloud-Architektur & Konzeption",
"sub_items": [
"- Analyse der bestehenden On-Premise-Infrastruktur",
"- Erstellung der Ziel-Architektur auf AWS",
"- Sicherheits- und Compliance-Konzept (DSGVO, ISO 27001)",
"- Kosten-Nutzen-Analyse und TCO-Berechnung"
],
"quantity": "5",
"unit": "Tage",
"unit_price": {
"amount": "1400",
"currency": "EUR"
},
"vat_rate": {
"code": "Standard",
"percentage": "19"
},
"total": {
"amount": "7000",
"currency": "EUR"
}
},
{
"position": 2,
"description": "Migration Phase 1 - Datenbanken",
"sub_items": [
"- Migration PostgreSQL zu Amazon RDS",
"- Setup Multi-AZ für High Availability",
"- Datenmigration mit AWS DMS",
"- Performance-Optimierung und Testing"
],
"quantity": "8",
"unit": "Tage",
"unit_price": {
"amount": "1400",
"currency": "EUR"
},
"vat_rate": {
"code": "Standard",
"percentage": "19"
},
"total": {
"amount": "11200",
"currency": "EUR"
}
},
{
"position": 3,
"description": "Migration Phase 2 - Applikationen",
"sub_items": [
"- Containerisierung mit Docker/ECS",
"- Setup CI/CD Pipeline mit AWS CodePipeline",
"- Terraform Infrastructure as Code",
"- Blue-Green Deployment Strategie"
],
"quantity": "10",
"unit": "Tage",
"unit_price": {
"amount": "1400",
"currency": "EUR"
},
"vat_rate": {
"code": "Standard",
"percentage": "19"
},
"total": {
"amount": "14000",
"currency": "EUR"
}
},
{
"position": 4,
"description": "Schulung IT-Team",
"sub_items": [
"- 2-tägiger AWS-Workshop für Entwickler",
"- Schulungsunterlagen und Hands-on Labs",
"- Best Practices für Cloud Operations"
],
"quantity": "2",
"unit": "Tage",
"unit_price": {
"amount": "1600",
"currency": "EUR"
},
"vat_rate": {
"code": "Standard",
"percentage": "19"
},
"total": {
"amount": "3200",
"currency": "EUR"
}
},
{
"position": 5,
"description": "Go-Live Support & Hypercare",
"sub_items": [
"- Begleitung des Produktiv-Umzugs",
"- 24/7 Rufbereitschaft während Go-Live",
"- 2 Wochen Hypercare-Phase"
],
"quantity": "1",
"unit": "Pauschal",
"unit_price": {
"amount": "4500",
"currency": "EUR"
},
"vat_rate": {
"code": "Standard",
"percentage": "19"
},
"total": {
"amount": "4500",
"currency": "EUR"
}
}
],
"totals": {
"subtotal": {
"amount": "39900",
"currency": "EUR"
},
"vat_breakdown": [
{
"rate": {
"code": "Standard",
"percentage": "19"
},
"base": {
"amount": "39900",
"currency": "EUR"
},
"amount": {
"amount": "7581",
"currency": "EUR"
}
}
],
"vat_total": {
"amount": "7581",
"currency": "EUR"
},
"total": {
"amount": "47481",
"currency": "EUR"
}
},
"payment": {
"payment_terms": "Zahlbar innerhalb von 30 Tagen netto",
"due_date": {
"date": "2025-02-21"
},
"bank_account": {
"bank_name": "Deutsche Bank",
"account_holder": "TechVision Consulting GmbH",
"iban": "DE89 1007 0024 0123 4567 89",
"bic": "DEUTDEDB101"
},
"payment_methods": ["BankTransfer"]
},
"salutation": {
"greeting": "Sehr geehrte Frau Dr. Schmidt,",
"introduction": "wie vereinbart stellen wir Ihnen hiermit die Leistungen für Januar 2025 im Rahmen des Cloud-Migrationsprojekts in Rechnung:"
}
}
Offer
examples/it-consultant/documents/offers/2025/offer.jsonDetail: Offer →{
"metadata": {
"offer_number": "AN-2025-015",
"offer_date": {
"date": "2025-01-08"
},
"valid_until": {
"date": "2025-02-28"
},
"customer_number": "K-023",
"project_reference": "IT-Security Audit & Härtung"
},
"recipient": {
"name": "Thomas Richter",
"company": "Richter & Partner Rechtsanwälte",
"address": {
"street": "Kurfürstendamm",
"house_number": "195",
"postal_code": "10707",
"city": "Berlin",
"country": "Deutschland"
}
},
"items": [
{
"position": 1,
"title": "Security Assessment",
"description": "Umfassende Analyse Ihrer IT-Infrastruktur auf Sicherheitslücken.",
"sub_items": [
"- Analyse der IT-Infrastruktur und Netzwerktopologie",
"- Schwachstellenscan aller Systeme",
"- Überprüfung der Zugriffsrechte und Benutzerkonten",
"- Bewertung der Datensicherungskonzepte"
],
"quantity": "3",
"unit": "Tage",
"unit_price": {
"amount": "1400",
"currency": "EUR"
},
"total": {
"amount": "4200",
"currency": "EUR"
}
},
{
"position": 2,
"title": "Penetration Test",
"description": "Simulierte Angriffe zur Identifikation von Schwachstellen.",
"sub_items": [
"- Externer Pentest der öffentlichen Systeme",
"- Interner Pentest aus dem Firmennetzwerk",
"- Social Engineering Simulation (Phishing)",
"- Detaillierter Bericht mit Findings"
],
"quantity": "4",
"unit": "Tage",
"unit_price": {
"amount": "1600",
"currency": "EUR"
},
"total": {
"amount": "6400",
"currency": "EUR"
}
},
{
"position": 3,
"title": "DSGVO-Compliance Check",
"description": "Prüfung der Datenschutzkonformität speziell für Kanzleien.",
"sub_items": [
"- Prüfung der Datenverarbeitung auf DSGVO-Konformität",
"- Analyse der Auftragsverarbeitungsverträge",
"- Mandantendaten-Handling und Verschlüsselung",
"- Gap-Analyse mit Handlungsempfehlungen"
],
"quantity": "2",
"unit": "Tage",
"unit_price": {
"amount": "1400",
"currency": "EUR"
},
"total": {
"amount": "2800",
"currency": "EUR"
}
},
{
"position": 4,
"title": "Härtungsmaßnahmen",
"description": "Umsetzung der kritischen Sicherheitsverbesserungen.",
"sub_items": [
"- Implementierung der kritischen Findings",
"- Firewall-Optimierung",
"- Einrichtung MFA für alle Benutzer",
"- E-Mail-Security (SPF, DKIM, DMARC)"
],
"quantity": "5",
"unit": "Tage",
"unit_price": {
"amount": "1400",
"currency": "EUR"
},
"total": {
"amount": "7000",
"currency": "EUR"
}
},
{
"position": 5,
"title": "Awareness-Schulung",
"description": "Workshop zur Sensibilisierung Ihrer Mitarbeiter.",
"sub_items": [
"- 3-stündiger Workshop für alle Mitarbeiter",
"- Themen: Phishing, Passwörter, Social Engineering",
"- Schulungsunterlagen und Merkblätter"
],
"quantity": "1",
"unit": "Pauschal",
"unit_price": {
"amount": "890",
"currency": "EUR"
},
"total": {
"amount": "890",
"currency": "EUR"
}
},
{
"position": 6,
"title": "Dokumentation & Abschlussbericht",
"description": "Vollständige Dokumentation und Handlungsempfehlungen.",
"sub_items": [
"- Management Summary für Kanzleileitung",
"- Technischer Detailbericht",
"- IT-Sicherheitsrichtlinie (Entwurf)",
"- Notfallplan bei Cyberangriffen"
],
"quantity": "1",
"unit": "Pauschal",
"unit_price": {
"amount": "1200",
"currency": "EUR"
},
"total": {
"amount": "1200",
"currency": "EUR"
}
}
],
"totals": {
"subtotal": {
"amount": "22490",
"currency": "EUR"
},
"vat_breakdown": [
{
"rate": {
"code": "Standard",
"percentage": "19"
},
"base": {
"amount": "22490",
"currency": "EUR"
},
"amount": {
"amount": "4273.10",
"currency": "EUR"
}
}
],
"vat_total": {
"amount": "4273.10",
"currency": "EUR"
},
"total": {
"amount": "26763.10",
"currency": "EUR"
}
},
"terms": {
"validity": "Dieses Angebot ist gültig bis zum 28.02.2025",
"payment_terms": "Zahlbar innerhalb von 30 Tagen nach Rechnungsstellung",
"delivery_terms": "Durchführung kann innerhalb von 2 Wochen nach Beauftragung beginnen. Gesamtdauer ca. 4-6 Wochen."
},
"notes": "Sehr geehrter Herr Richter,\n\nvielen Dank für Ihr Vertrauen. Alle Findings werden selbstverständlich streng vertraulich behandelt. Auf Wunsch unterzeichnen wir gerne eine separate Vertraulichkeitsvereinbarung."
}
Credit note
examples/it-consultant/documents/credit-notes/2025/credit-note-001.jsonDetail: Credit note →{
"metadata": {
"credit_note_number": "GS-2025-001",
"invoice_reference": "RE-2024-156",
"date": {
"date": "2025-01-20"
},
"reason": "Teilstorno - Nicht erbrachte Leistungen"
},
"recipient": {
"name": "Frau Dr. Sarah Schmidt",
"company": "DataFlow Analytics AG",
"address": {
"street": "Datenweg",
"house_number": "15",
"postal_code": "10115",
"city": "Berlin"
}
},
"salutation": {
"greeting": "Sehr geehrte Frau Dr. Schmidt,",
"introduction": "aufgrund der Reduzierung des Projektumfangs erstatten wir Ihnen hiermit die nicht in Anspruch genommenen Leistungen."
},
"items": [
{
"position": 1,
"description": "Backend-Entwicklung (Stornierung von 20 Stunden)",
"quantity": 20,
"unit": "stunde",
"vat_rate": {
"percentage": 19
},
"unit_price": {
"amount": 95.00,
"currency": "EUR"
},
"total": {
"amount": 1900.00,
"currency": "EUR"
}
}
],
"totals": {
"subtotal": {
"amount": 1900.00,
"currency": "EUR"
},
"vat_breakdown": [
{
"rate": {
"percentage": 19
},
"amount": {
"amount": 361.00,
"currency": "EUR"
}
}
],
"total": {
"amount": 2261.00,
"currency": "EUR"
}
}
}
Payment reminder
examples/it-consultant/documents/reminders/2025/reminder-001.jsonDetail: Payment reminder →{
"metadata": {
"reminder_number": "M1-2025-001",
"reminder_level": "1",
"date": {
"date": "2025-01-25"
},
"payment_deadline": {
"date": "2025-02-05"
}
},
"recipient": {
"name": "Herr Michael Becker",
"company": "CloudSys Solutions GmbH",
"address": {
"street": "Serverstraße",
"house_number": "88",
"postal_code": "60311",
"city": "Frankfurt"
}
},
"salutation": "Sehr geehrter Herr Becker,",
"introduction": "bei der Durchsicht unserer Buchhaltung ist uns aufgefallen, dass folgende Rechnung noch nicht beglichen wurde:",
"outstanding_invoices": [
{
"invoice_number": "RE-2024-189",
"invoice_date": {
"date": "2024-12-15"
},
"due_date": {
"date": "2025-01-14"
},
"amount": {
"amount": 4760.00,
"currency": "EUR"
},
"outstanding": {
"amount": 4760.00,
"currency": "EUR"
}
}
],
"totals": {
"total_outstanding": {
"amount": 4760.00,
"currency": "EUR"
},
"reminder_fee": {
"amount": 0.00,
"currency": "EUR"
},
"total_due": {
"amount": 4760.00,
"currency": "EUR"
}
},
"custom_text": "Sollten Sie die Zahlung bereits veranlasst haben, betrachten Sie dieses Schreiben bitte als gegenstandslos. Bei Fragen stehen wir Ihnen gerne zur Verfügung."
}
Business letter
examples/it-consultant/documents/letters/2025/letter-001.jsonDetail: Business letter →{
"metadata": {
"title": "Projektanfrage Web-Plattform",
"reference_number": "BR-2025-001",
"your_reference": "WP-2025-042",
"date": {
"date": "2025-01-15"
}
},
"recipient": {
"name": "Herr Thomas Weber",
"company": "TechVision GmbH",
"address": {
"street": "Innovation Street",
"house_number": "42",
"postal_code": "80331",
"city": "München"
}
},
"subject": "Anfrage zur Entwicklung einer Web-Plattform",
"salutation": "Sehr geehrter Herr Weber,",
"content": "vielen Dank für Ihr Interesse an unseren Dienstleistungen im Bereich Web-Entwicklung.\n\nWie telefonisch besprochen, möchten wir Ihnen gerne ein unverbindliches Angebot für die Entwicklung Ihrer Web-Plattform unterbreiten. Um ein präzises Angebot erstellen zu können, benötigen wir noch folgende Informationen:\n\n- Detaillierte Anforderungsliste der gewünschten Features\n- Anzahl der erwarteten gleichzeitigen Nutzer\n- Gewünschter Zeitrahmen für die Umsetzung\n- Bestehende Systeme, an die die Plattform angebunden werden soll\n- Budget-Rahmen für das Projekt\n\nSobald wir diese Informationen von Ihnen erhalten haben, können wir Ihnen innerhalb von 5 Werktagen ein detailliertes Angebot zukommen lassen.\n\nFür ein persönliches Gespräch stehe ich Ihnen gerne zur Verfügung. Sie erreichen mich unter den unten angegebenen Kontaktdaten.",
"closing": "Mit freundlichen Grüßen",
"signature_name": "Max Mustermann",
"attachments": [
"Leistungsübersicht IT-Beratung",
"Referenzprojekte Web-Entwicklung"
]
}
Quotation request
examples/it-consultant/documents/quotation-requests/2025/quotation-request-001.jsonDetail: Quotation request →{
"metadata": {
"request_number": "ANF-2025-001",
"date": {
"date": "2025-01-28"
},
"response_deadline": {
"date": "2025-02-15"
},
"project_reference": "Cloud Infrastructure Upgrade"
},
"supplier": {
"company": "CloudTech Solutions GmbH",
"name": "Vertriebsabteilung",
"address": {
"street": "Cloudstraße",
"house_number": "99",
"postal_code": "10178",
"city": "Berlin"
}
},
"salutation": {
"greeting": "Sehr geehrte Damen und Herren,",
"introduction": "im Rahmen unseres Cloud Infrastructure Upgrade Projekts bitten wir Sie um ein detailliertes Angebot für folgende Leistungen und Produkte:"
},
"items": [
{
"position": 1,
"title": "AWS Enterprise Support Subscription",
"description": "AWS Enterprise Support für 12 Monate mit 24/7 technischem Support",
"quantity": 1,
"unit": "jahr",
"specification": "inkl. Technical Account Manager, Response Time < 15min für kritische Issues"
},
{
"position": 2,
"title": "Monitoring & Logging Solution",
"description": "Datadog oder vergleichbare Monitoring-Lösung",
"quantity": 50,
"unit": "hosts",
"specification": "APM, Infrastructure Monitoring, Log Management, 13 Monate Retention",
"requirements": [
"Integration mit AWS CloudWatch",
"Custom Dashboards und Alerting",
"API-Zugriff für Automatisierung",
"SAML SSO Integration"
]
},
{
"position": 3,
"title": "Backup & Disaster Recovery Solution",
"description": "Backup-Lösung für AWS-Infrastruktur",
"quantity": 10,
"unit": "tb",
"specification": "AWS Backup oder vergleichbar",
"requirements": [
"Automatisierte Backups (täglich)",
"Point-in-Time Recovery",
"Cross-Region Backup Replication",
"Backup-Retention: 30 Tage",
"Encryption at Rest und in Transit"
]
},
{
"position": 4,
"title": "Security & Compliance Tools",
"description": "Security Scanning und Compliance Monitoring",
"quantity": 1,
"unit": "pauschale",
"specification": "AWS Security Hub + GuardDuty oder vergleichbar",
"requirements": [
"Vulnerability Scanning",
"CIS Benchmark Compliance",
"GDPR Compliance Reporting",
"Automated Remediation wo möglich"
]
},
{
"position": 5,
"title": "Infrastructure-as-Code Training",
"description": "Terraform Advanced Training für 5 Personen",
"quantity": 5,
"unit": "personen",
"specification": "2-tägiges Training (on-site oder remote)",
"requirements": [
"Terraform Best Practices",
"Module Development",
"State Management",
"CI/CD Integration",
"Hands-on Labs",
"Training-Materialien inklusive"
]
}
],
"terms": {
"delivery_terms": "Lizenzen und Subscriptions sollten sofort nach Vertragsabschluss aktivierbar sein. Training bevorzugt im März 2025.",
"delivery_deadline": {
"date": "2025-03-15"
},
"payment_terms": "Zahlungsziel 30 Tage netto nach Rechnungsstellung. Für Subscriptions bevorzugen wir jährliche Vorauszahlung mit Mengenrabatt.",
"quality_requirements": "Alle Lösungen müssen AWS Well-Architected Framework konform sein. Support muss in deutscher Sprache verfügbar sein."
},
"additional_notes": "Wir planen eine langfristige Partnerschaft und sind an Volume-Rabatten interessiert. Falls Sie weitere Services anbieten, die für unser Projekt relevant sein könnten (z.B. Cost Optimization Tools, Performance Monitoring), fügen Sie diese bitte Ihrem Angebot bei.\n\nBei technischen Rückfragen wenden Sie sich bitte an Max Mustermann (max@it-consulting.de).",
"response_requirements": [
"Detaillierte Preisaufstellung (Einmalkosten und laufende Kosten)",
"Vertragslaufzeiten und Kündigungsfristen",
"Onboarding-Prozess und Zeitplan",
"Support-Level und Reaktionszeiten",
"Referenzkunden (mindestens 2)",
"SLA-Dokumente",
"Technische Spezifikationen der Lösungen",
"Schulungsunterlagen/Agenda für das Training"
],
"attachments": [
"Technische Anforderungen Cloud Infrastructure",
"Compliance Requirements Checkliste"
]
}
Credentials
examples/it-consultant/documents/credentials/2025/credentials.jsonDetail: Credentials →{
"metadata": {
"document_number": "ZD-2025-007",
"title": "AWS Cloud Infrastruktur Zugänge",
"client_name": "MedTech Solutions AG",
"project_name": "AWS Cloud Migration",
"created_at": {
"date": "2025-01-22"
},
"tags": ["AWS", "Cloud", "Produktion", "Staging"],
"security_level": "strictly_confidential",
"notes": "KRITISCH: Zugänge nur für autorisiertes Personal. MFA ist für alle Accounts aktiviert."
},
"services": [
{
"name": "AWS Console - Produktion",
"description": "Amazon Web Services Management Console für Produktionsumgebung",
"url": "https://medtech-prod.signin.aws.amazon.com/console",
"technical": [
{ "key": "Account ID", "value": "123456789012" },
{ "key": "Region", "value": "eu-central-1 (Frankfurt)" },
{ "key": "Account Alias", "value": "medtech-prod" }
],
"ports": [
{ "port": "443", "protocol": "TCP", "description": "HTTPS Console" }
],
"credentials": [
{
"username": "admin@medtech-solutions.de",
"password": "SSO via Azure AD",
"credential_type": "web",
"description": "Administrator - IAM Full Access (MFA erforderlich)"
},
{
"username": "devops@medtech-solutions.de",
"password": "SSO via Azure AD",
"credential_type": "web",
"description": "DevOps - ECS, RDS, CloudWatch, S3"
},
{
"username": "readonly@medtech-solutions.de",
"password": "SSO via Azure AD",
"credential_type": "web",
"description": "ReadOnly - Nur Lesezugriff für Audits"
}
]
},
{
"name": "Amazon RDS - PostgreSQL",
"description": "Managed PostgreSQL Datenbank (Multi-AZ)",
"url": "medtech-prod-db.cluster-xxxxx.eu-central-1.rds.amazonaws.com",
"technical": [
{ "key": "Engine", "value": "PostgreSQL 15.4" },
{ "key": "Instance", "value": "db.r6g.large (Multi-AZ)" },
{ "key": "Storage", "value": "500 GB gp3, verschlüsselt (AES-256)" },
{ "key": "Backup", "value": "Täglich, 35 Tage Retention" }
],
"ports": [
{ "port": "5432", "protocol": "TCP", "description": "PostgreSQL" }
],
"credentials": [
{
"username": "medtech_admin",
"password": "Gespeichert in AWS Secrets Manager",
"credential_type": "database",
"description": "DB Admin - Secret: prod/rds/admin"
},
{
"username": "medtech_app",
"password": "Gespeichert in AWS Secrets Manager",
"credential_type": "database",
"description": "Application User - Secret: prod/rds/app"
}
]
},
{
"name": "AWS ECS Cluster",
"description": "Container-Orchestrierung für Microservices",
"url": "https://eu-central-1.console.aws.amazon.com/ecs",
"technical": [
{ "key": "Cluster", "value": "medtech-prod-cluster" },
{ "key": "Services", "value": "api-gateway, patient-service, billing-service" },
{ "key": "Task Definition", "value": "Fargate (Serverless)" },
{ "key": "Load Balancer", "value": "ALB (Application Load Balancer)" }
],
"ports": [
{ "port": "443", "protocol": "TCP", "description": "HTTPS (ALB)" },
{ "port": "8080", "protocol": "TCP", "description": "API Gateway intern" }
],
"credentials": [
{
"username": "ECR Registry",
"password": "aws ecr get-login-password",
"credential_type": "api_key",
"description": "Docker Registry Login via AWS CLI"
}
]
},
{
"name": "GitHub Repository",
"description": "Source Code und CI/CD Pipelines",
"url": "https://github.com/medtech-solutions",
"technical": [
{ "key": "Organisation", "value": "medtech-solutions" },
{ "key": "Repositories", "value": "api-gateway, patient-service, infra-terraform" },
{ "key": "CI/CD", "value": "GitHub Actions → AWS CodePipeline" }
],
"ports": [],
"credentials": [
{
"username": "medtech-deploy",
"password": "SSH Key oder PAT",
"credential_type": "ssh",
"description": "Service Account für Deployments"
}
]
},
{
"name": "Terraform Cloud",
"description": "Infrastructure as Code State Management",
"url": "https://app.terraform.io/app/medtech-solutions",
"technical": [
{ "key": "Organisation", "value": "medtech-solutions" },
{ "key": "Workspaces", "value": "prod, staging, dev" },
{ "key": "VCS", "value": "GitHub Integration aktiv" }
],
"ports": [],
"credentials": [
{
"username": "terraform-cloud",
"password": "Team API Token in 1Password",
"credential_type": "api_key",
"description": "Terraform Cloud API Token"
}
]
},
{
"name": "Datadog Monitoring",
"description": "Zentrales Monitoring und Alerting",
"url": "https://app.datadoghq.eu",
"technical": [
{ "key": "Region", "value": "EU (Frankfurt)" },
{ "key": "Dashboards", "value": "Production Overview, API Metrics, RDS Health" },
{ "key": "Alerts", "value": "PagerDuty Integration aktiv" }
],
"ports": [],
"credentials": [
{
"username": "devops@medtech-solutions.de",
"password": "SSO via Azure AD",
"credential_type": "web",
"description": "Admin - Vollzugriff auf Dashboards und Alerts"
}
]
}
]
}
Project proposal
examples/it-consultant/documents/proposals/2025/proposal-001.jsonDetail: Project proposal →{
"metadata": {
"title": "Cloud Migration - Infrastructure Modernisierung",
"document_number": "PRO-2025-001",
"client_name": "TechVision GmbH",
"project_name": "Cloud Migration AWS",
"budget": "45.000 - 65.000 EUR",
"timeline": "3-4 Monate (Q1-Q2 2025)",
"version": "1.0",
"status": "Angebot",
"tags": ["Cloud", "AWS", "Migration", "Infrastructure"],
"created_at": {
"date": "2025-01-22"
},
"valid_until": {
"date": "2025-02-28"
},
"authors": ["Max Mustermann"],
"show_toc": true
},
"content": "= Executive Summary\n\nTechVision GmbH plant die Migration ihrer On-Premise Infrastruktur in die AWS Cloud. Dieser Vorschlag beschreibt einen strukturierten Migrations-Ansatz, der Ausfallzeiten minimiert und gleichzeitig moderne Cloud-Native Praktiken implementiert.\n\n*Kernziele:*\n- 99,9% Verfügbarkeit der Systeme\n- 30% Kostenreduktion bei Infrastruktur\n- Automatisiertes Deployment und Skalierung\n- Verbesserte Disaster Recovery (RTO < 1h, RPO < 15min)\n\n= Ausgangssituation\n\n== Aktuelle Infrastruktur\n\n*Server:*\n- 3x Physische Server (Dell PowerEdge)\n- 12x Virtuelle Maschinen (VMware)\n- 2x Datenbank-Server (PostgreSQL, MySQL)\n- 1x File Server (NAS, 10TB)\n\n*Herausforderungen:*\n- Hohe Wartungskosten für Hardware\n- Eingeschränkte Skalierbarkeit\n- Manuelles Deployment-Prozess\n- Keine automatisierten Backups\n- Single Point of Failure bei kritischen Systemen\n\n= Lösungsansatz\n\n== Cloud-Architektur (AWS)\n\n*Compute:*\n- EC2 Instances (Auto Scaling Groups)\n- Container Orchestration mit ECS/Fargate\n- Lambda für Serverless Workflows\n\n*Storage:*\n- S3 für Object Storage\n- EBS für Block Storage\n- EFS für Shared File Systems\n\n*Database:*\n- RDS für PostgreSQL (Multi-AZ)\n- Aurora für MySQL (Read Replicas)\n- ElastiCache (Redis) für Caching\n\n*Networking:*\n- VPC mit Public/Private Subnets\n- Application Load Balancer\n- CloudFront CDN\n- Route53 für DNS\n\n*Security:*\n- IAM Roles & Policies\n- Security Groups & NACLs\n- AWS WAF für Web Application Firewall\n- KMS für Encryption at Rest\n\n*Monitoring:*\n- CloudWatch für Logs und Metrics\n- CloudTrail für Audit Logs\n- X-Ray für Distributed Tracing\n\n== Migrations-Strategie\n\nWir empfehlen einen hybriden Ansatz:\n\n*Rehost (Lift & Shift):* Für Legacy-Systeme (30%)\n- Schnelle Migration ohne Code-Änderungen\n- VM Import nach EC2\n\n*Replatform:* Für Datenbanken und Web-Apps (50%)\n- Nutzung von Managed Services (RDS, ECS)\n- Minimale Code-Anpassungen\n\n*Refactor:* Für kritische Business-Logik (20%)\n- Cloud-Native Redesign\n- Microservices Architektur\n- Serverless Components\n\n= Projektphasen\n\n== Phase 1: Assessment & Planung (2 Wochen)\n\n*Deliverables:*\n- Detailliertes Infrastruktur-Inventar\n- Dependency Mapping\n- Cost Analysis (TCO Vergleich)\n- Detaillierter Migrationsplan\n- Risk Assessment\n\n*Aufwand:* 40 Stunden\n\n== Phase 2: AWS Setup & Foundation (3 Wochen)\n\n*Aktivitäten:*\n- AWS Account Setup (Organizations, Multi-Account Strategy)\n- Landing Zone Konfiguration\n- VPC und Networking Setup\n- IAM Policies und Rollen\n- Security Baseline (CIS Benchmarks)\n- Monitoring und Logging Setup\n\n*Deliverables:*\n- AWS Landing Zone\n- Terraform Infrastructure as Code\n- Security Hardening Dokumentation\n- Monitoring Dashboards\n\n*Aufwand:* 80 Stunden\n\n== Phase 3: Test-Migration (2 Wochen)\n\n*Aktivitäten:*\n- Non-Production Systeme migrieren\n- Testing und Validation\n- Performance Benchmarking\n- Disaster Recovery Tests\n\n*Deliverables:*\n- Migrationsskripte\n- Test-Berichte\n- Angepasste Prozesse\n\n*Aufwand:* 60 Stunden\n\n== Phase 4: Production Migration (4 Wochen)\n\n*Aktivitäten:*\n- Rolling Migration der Production-Systeme\n- Blue-Green Deployment für kritische Apps\n- Datenbank-Migration mit minimaler Downtime\n- DNS Cutover\n- 24/7 Support während Migration\n\n*Deliverables:*\n- Vollständig migrierte Production-Umgebung\n- Cutover-Dokumentation\n- Rollback-Pläne\n\n*Aufwand:* 120 Stunden\n\n== Phase 5: Optimierung & Training (3 Wochen)\n\n*Aktivitäten:*\n- Cost Optimization (Reserved Instances, Savings Plans)\n- Performance Tuning\n- Auto-Scaling Konfiguration\n- Team-Training (AWS Fundamentals, Best Practices)\n- Dokumentation und Runbooks\n\n*Deliverables:*\n- Optimierte Infrastruktur\n- Training-Sessions (3x halbtägig)\n- Vollständige Dokumentation\n- Operations Runbooks\n\n*Aufwand:* 80 Stunden\n\n= Zeitplan\n\n#table(\n columns: (1fr, 1fr, 1fr),\n [*Phase*], [*Dauer*], [*Zeitraum*],\n [1. Assessment], [2 Wochen], [KW 6-7],\n [2. AWS Setup], [3 Wochen], [KW 8-10],\n [3. Test-Migration], [2 Wochen], [KW 11-12],\n [4. Production], [4 Wochen], [KW 13-16],\n [5. Optimierung], [3 Wochen], [KW 17-19]\n)\n\n*Gesamtdauer:* 14 Wochen (ca. 3,5 Monate)\n\n= Kostenaufstellung\n\n== Beratungsleistungen\n\n#table(\n columns: (2fr, 1fr, 1fr, 1fr),\n [*Leistung*], [*Stunden*], [*Satz*], [*Summe*],\n [Assessment & Planung], [40h], [95 EUR], [3.800 EUR],\n [AWS Setup], [80h], [95 EUR], [7.600 EUR],\n [Test-Migration], [60h], [95 EUR], [5.700 EUR],\n [Production Migration], [120h], [95 EUR], [11.400 EUR],\n [Optimierung & Training], [80h], [95 EUR], [7.600 EUR],\n [*Summe Beratung*], [*380h*], [], [*36.100 EUR*]\n)\n\n== AWS Infrastruktur-Kosten (monatlich, geschätzt)\n\n#table(\n columns: (2fr, 1fr),\n [*Service*], [*Kosten/Monat*],\n [EC2 Instances (t3.large, 5x)], [400 EUR],\n [RDS PostgreSQL (Multi-AZ)], [350 EUR],\n [S3 Storage (2TB)], [50 EUR],\n [Load Balancer], [25 EUR],\n [CloudFront CDN], [80 EUR],\n [Backup & Disaster Recovery], [120 EUR],\n [Monitoring & Logging], [75 EUR],\n [*Summe AWS (monatlich)*], [*~1.100 EUR*]\n)\n\n*Hinweis:* Nach Optimierung (Reserved Instances) erwarten wir eine Reduktion auf ca. 750-850 EUR/Monat.\n\n== Gesamtkosten\n\n- *Einmalig (Migration):* 36.100 EUR (netto)\n- *Laufend (AWS):* ~1.100 EUR/Monat (erste 3 Monate)\n- *Laufend (optimiert):* ~800 EUR/Monat (ab Monat 4)\n\n*ROI:* Bei aktuellen On-Premise Kosten von 2.500 EUR/Monat erreichen Sie Break-Even nach ca. 24 Monaten.\n\n= Risiken & Mitigation\n\n== Risiko 1: Datenverlust während Migration\n\n*Wahrscheinlichkeit:* Niedrig\n*Impact:* Kritisch\n*Mitigation:*\n- Vollständige Backups vor Migration\n- Test-Migration zuerst\n- Rollback-Plan für jeden Schritt\n\n== Risiko 2: Performance-Probleme nach Migration\n\n*Wahrscheinlichkeit:* Mittel\n*Impact:* Hoch\n*Mitigation:*\n- Ausführliches Performance-Testing\n- Right-Sizing der Instances\n- Auto-Scaling für Lastspitzen\n\n== Risiko 3: Kosten-Überschreitung\n\n*Wahrscheinlichkeit:* Mittel\n*Impact:* Mittel\n*Mitigation:*\n- AWS Cost Budgets und Alerts\n- Wöchentliches Cost Monitoring\n- Reserved Instances für vorhersagbare Workloads\n\n= Warum wir?\n\n*Erfahrung:*\n- 15+ erfolgreiche Cloud-Migrationen\n- AWS Certified Solutions Architect\n- 8 Jahre Erfahrung mit AWS\n\n*Methodik:*\n- Strukturierter Migrations-Ansatz\n- Minimale Ausfallzeiten\n- Kontinuierliche Kommunikation\n\n*Support:*\n- 3 Monate Post-Migration Support inklusive\n- 24/7 Erreichbarkeit während kritischer Phasen\n- Wissenstransfer an Ihr Team\n\n= Referenzen\n\n*Projekt 1:* E-Commerce Platform Migration (2024)\n- 50+ Server zu AWS\n- Zero-Downtime Migration\n- 40% Kostenreduktion\n\n*Projekt 2:* Fintech SaaS Migration (2023)\n- PCI-DSS Compliance in AWS\n- Multi-Region Setup\n- 99.99% Uptime seit Migration"
}
Specification
examples/it-consultant/documents/specifications/2025/specification-001.jsonDetail: Specification →{
"metadata": {
"title": "API Migration Spezifikation",
"document_number": "SPEC-2025-001",
"subject": "REST API v2.0 - User Management",
"client_name": "DataFlow Analytics AG",
"project_name": "API Migration Projekt",
"version": "1.2",
"status": "Review",
"tags": ["API", "REST", "Migration", "Backend"],
"authors": ["Max Mustermann", "Anna Fischer"],
"created_at": {
"date": "2025-01-05"
},
"last_updated": {
"date": "2025-01-18"
},
"show_toc": true
},
"content": "= Einleitung\n\n== Zweck des Dokuments\n\nDieses Dokument spezifiziert die Anforderungen und das Design der neuen REST API v2.0 für das User Management System von DataFlow Analytics AG.\n\n== Zielgruppe\n\n- Backend-Entwickler\n- Frontend-Entwickler (API-Konsumenten)\n- QA-Team\n- DevOps-Team\n\n== Änderungshistorie\n\n#table(\n columns: (60pt, 80pt, 1fr, 1fr),\n [*Version*], [*Datum*], [*Autor*], [*Änderung*],\n [1.0], [05.01.2025], [Max Mustermann], [Initiale Version],\n [1.1], [12.01.2025], [Anna Fischer], [Authentication Endpoints hinzugefügt],\n [1.2], [18.01.2025], [Max Mustermann], [Rate Limiting spezifiziert]\n)\n\n= Systemübersicht\n\n== Architektur\n\nDie neue API folgt einer modernen REST-Architektur mit folgenden Komponenten:\n\n- *API Gateway:* NGINX als Reverse Proxy\n- *Application Server:* Node.js mit Express.js Framework\n- *Database:* PostgreSQL 14\n- *Cache:* Redis 7\n- *Authentication:* JWT (JSON Web Tokens)\n\n== Technologie-Stack\n\n```javascript\n// Package Dependencies\n{\n \"express\": \"^4.18.0\",\n \"jsonwebtoken\": \"^9.0.0\",\n \"bcrypt\": \"^5.1.0\",\n \"pg\": \"^8.11.0\",\n \"redis\": \"^4.6.0\",\n \"helmet\": \"^7.1.0\",\n \"express-rate-limit\": \"^7.1.0\"\n}\n```\n\n= Funktionale Anforderungen\n\n== User Management\n\n=== REQ-001: Benutzer erstellen [HIGH]\n\n*Beschreibung:* Das System muss es Administratoren ermöglichen, neue Benutzer anzulegen.\n\n*Endpoint:* `POST /api/v2/users`\n\n*Request Body:*\n```json\n{\n \"email\": \"user@example.com\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"role\": \"user\",\n \"permissions\": [\"read\", \"write\"]\n}\n```\n\n*Response (201):*\n```json\n{\n \"id\": \"uuid-v4\",\n \"email\": \"user@example.com\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"role\": \"user\",\n \"createdAt\": \"2025-01-18T10:30:00Z\"\n}\n```\n\n*Validierung:*\n- Email muss gültig und eindeutig sein\n- firstName und lastName sind Pflichtfelder (min. 2 Zeichen)\n- role muss einem der definierten Rollen entsprechen: `admin`, `user`, `readonly`\n\n=== REQ-002: Benutzer abrufen [HIGH]\n\n*Beschreibung:* Abruf eines einzelnen Benutzers anhand der ID\n\n*Endpoint:* `GET /api/v2/users/{userId}`\n\n*Response (200):*\n```json\n{\n \"id\": \"uuid-v4\",\n \"email\": \"user@example.com\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"role\": \"user\",\n \"permissions\": [\"read\", \"write\"],\n \"createdAt\": \"2025-01-10T10:30:00Z\",\n \"updatedAt\": \"2025-01-18T14:20:00Z\",\n \"lastLogin\": \"2025-01-18T09:15:00Z\"\n}\n```\n\n=== REQ-003: Benutzer aktualisieren [MEDIUM]\n\n*Endpoint:* `PATCH /api/v2/users/{userId}`\n\n*Request Body (partial update):*\n```json\n{\n \"firstName\": \"Jane\",\n \"permissions\": [\"read\", \"write\", \"admin\"]\n}\n```\n\n=== REQ-004: Benutzer löschen [MEDIUM]\n\n*Endpoint:* `DELETE /api/v2/users/{userId}`\n\n*Response (204):* No Content\n\n*Hinweis:* Soft-Delete - Benutzer wird als \"deactivated\" markiert, nicht physisch gelöscht\n\n=== REQ-005: Benutzerliste abrufen [HIGH]\n\n*Endpoint:* `GET /api/v2/users`\n\n*Query Parameters:*\n- `page`: Seitennummer (default: 1)\n- `limit`: Einträge pro Seite (default: 20, max: 100)\n- `role`: Filter nach Rolle\n- `search`: Volltextsuche in Name/Email\n- `sort`: Sortierung (z.B. `createdAt:desc`)\n\n*Response (200):*\n```json\n{\n \"data\": [...],\n \"pagination\": {\n \"page\": 1,\n \"limit\": 20,\n \"total\": 157,\n \"pages\": 8\n }\n}\n```\n\n== Authentication & Authorization\n\n=== REQ-010: Login [HIGH]\n\n*Endpoint:* `POST /api/v2/auth/login`\n\n*Request:*\n```json\n{\n \"email\": \"user@example.com\",\n \"password\": \"SecurePass123!\"\n}\n```\n\n*Response (200):*\n```json\n{\n \"accessToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n \"refreshToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n \"expiresIn\": 3600,\n \"user\": {\n \"id\": \"uuid\",\n \"email\": \"user@example.com\",\n \"role\": \"user\"\n }\n}\n```\n\n*Sicherheit:*\n- Passwörter werden mit bcrypt (cost factor 12) gehasht\n- Rate Limiting: 5 Versuche pro 15 Minuten pro IP\n- Account-Sperre nach 10 fehlgeschlagenen Versuchen\n\n=== REQ-011: Token Refresh [HIGH]\n\n*Endpoint:* `POST /api/v2/auth/refresh`\n\n*Request:*\n```json\n{\n \"refreshToken\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n}\n```\n\n=== REQ-012: Logout [MEDIUM]\n\n*Endpoint:* `POST /api/v2/auth/logout`\n\n*Funktion:* Invalidiert das aktuelle Access Token durch Blacklisting in Redis\n\n= Nicht-funktionale Anforderungen\n\n== Performance\n\n- *Response Time:* \\< 200ms für 95% aller Requests (p95)\n- *Throughput:* Min. 1000 Requests pro Sekunde\n- *Concurrent Users:* Bis zu 10.000 gleichzeitige Nutzer\n\n== Sicherheit\n\n- HTTPS-Only (TLS 1.3)\n- CORS-Policy konfiguriert\n- Helmet.js für Security Headers\n- Input Validation & Sanitization\n- SQL Injection Prevention (Prepared Statements)\n- XSS Protection\n\n== Rate Limiting\n\n```javascript\n// Rate Limiting Konfiguration\nconst limiter = rateLimit({\n windowMs: 15 * 60 * 1000, // 15 Minuten\n max: 100, // Max 100 Requests pro Window\n message: 'Too many requests from this IP'\n});\n```\n\n*Spezielle Limits:*\n- Login: 5 Requests / 15 Minuten\n- User Creation: 10 Requests / Stunde\n- Standard: 100 Requests / 15 Minuten\n\n== Monitoring & Logging\n\n- Strukturiertes Logging (JSON-Format)\n- Request/Response Logging\n- Error Tracking mit Sentry\n- Metrics: Prometheus\n- Visualization: Grafana Dashboard\n\n= API-Dokumentation\n\n== OpenAPI Specification\n\nDie vollständige API wird mit OpenAPI 3.0 dokumentiert und unter `/api/v2/docs` verfügbar gemacht (Swagger UI).\n\n== Versionierung\n\n- URL-basierte Versionierung: `/api/v2/...`\n- Alte Version v1 läuft parallel für 6 Monate\n- Deprecation Warnings in Response Headers\n\n= Testing\n\n== Unit Tests\n\n- Code Coverage: Min. 80%\n- Framework: Jest\n- Alle Business Logic Funktionen\n\n== Integration Tests\n\n- Framework: Supertest\n- Alle API Endpoints\n- Positive & Negative Test Cases\n\n== Load Tests\n\n- Tool: k6\n- Szenarien: 100, 500, 1000 concurrent users\n- Ziel: \\< 200ms Response Time bei 1000 Users\n\n= Deployment\n\n== Staging\n\n- Automatisches Deployment bei Merge in `develop` Branch\n- URL: `https://api-staging.dataflow.com`\n\n== Production\n\n- Blue-Green Deployment Strategie\n- URL: `https://api.dataflow.com`\n- Rollback-Mechanismus innerhalb 5 Minuten\n\n= Offene Punkte\n\n- [ ] Entscheidung über OAuth2 Integration für externe Clients\n- [ ] Finalisierung der GDPR-konformen User-Daten-Export Funktion\n- [ ] Definition der Backup & Recovery Strategie"
}
Concept from a .typ file
examples/digitalagentur/documents/concepts/2025/concept.typDetail: Concept from a .typ file →#import "/.docgen/templates/concept/default.typ": concept
// Load company and locale from project root (absolute paths)
#let company = json("/data/company.json")
#let locale = json("/locale/de.json")
#show: concept.with(
title: "Online-Shop Konzept Bio-Hofladen",
document_number: "KO-2025-002",
client_name: "Hofbauer's Biohof",
project_name: "E-Commerce Lösung",
version: "1.0",
status: "draft",
tags: ("E-Commerce", "Shopware", "Bio", "Regional"),
created_at: "2025-01-15",
company: company,
locale: locale,
)
= Ausgangssituation
Hofbauer's Biohof ist ein familiengeführter Bio-Bauernhof in Alfter bei Bonn. Seit über 30 Jahren werden hier Gemüse, Obst und Milchprodukte in Bio-Qualität produziert. Der Verkauf erfolgt bisher ausschließlich über den Hofladen vor Ort und auf zwei Wochenmärkten in der Region.
== Herausforderungen
- *Begrenzte Reichweite:* Kunden müssen physisch zum Hofladen oder Markt kommen
- *Saisonale Schwankungen:* Hohe Nachfrage im Sommer, weniger Kunden im Winter
- *Keine Planbarkeit:* Tagesgeschäft erschwert Anbauplanung
- *Verlorene Stammkunden:* Weggezogene Kunden haben keine Bezugsmöglichkeit mehr
== Ziele des Projekts
1. *Regionaler Online-Vertrieb* im Umkreis von 30 km
2. *Abo-Box System* für planbare, wiederkehrende Bestellungen
3. *Erhöhung der Kundenbindung* durch digitalen Kanal
4. *Optimierung der Anbauplanung* durch Vorbestellungen
= Lösungskonzept
== Shopware 6 als Plattform
Wir empfehlen Shopware 6 als E-Commerce-Plattform:
- Open Source mit aktiver Community
- Deutsche Entwicklung, DSGVO-konform
- Flexible Erweiterbarkeit für Abo-Funktionen
- Gute Performance auch bei wachsenden Produktzahlen
== Kernfunktionen
=== Produktkatalog
Der Shop wird folgende Kategorien abbilden:
#table(
columns: (1fr, 2fr),
[*Kategorie*], [*Beispiele*],
[Gemüse], [Kartoffeln, Karotten, Salate, Kohl, Tomaten],
[Obst], [Äpfel, Birnen, Beeren (saisonal)],
[Milchprodukte], [Frischmilch, Joghurt, Quark, Käse],
[Eier], [Bio-Eier (6er, 10er, 30er Packung)],
[Fleisch], [Rindfleisch, Hähnchen (auf Vorbestellung)],
[Hofprodukte], [Marmelade, Honig, Apfelsaft],
)
=== Abo-Box System
Das Herzstück des Shops: Wöchentliche oder zweiwöchentliche Lieferung einer Gemüsebox.
*Varianten:*
- *Kleine Box* (2 Personen): 15 EUR/Woche
- *Familien-Box* (4 Personen): 28 EUR/Woche
- *Große Box* (6+ Personen): 42 EUR/Woche
*Besonderheiten:*
- Kunde kann Produkte ausschließen (Allergien, Vorlieben)
- Inhalt variiert saisonal
- Pausieren jederzeit möglich
- Automatische Abbuchung via SEPA-Lastschrift
=== Lieferlogistik
#table(
columns: (1fr, 1fr, 1fr),
[*Option*], [*Gebiet*], [*Kosten*],
[Selbstabholung], [Hofladen], [Kostenlos],
[Lieferung], [PLZ 53xxx], [4,90 EUR],
[Lieferung], [PLZ 50xxx, 51xxx], [6,90 EUR],
)
Liefertage: Mittwoch und Samstag
= Technische Umsetzung
== Systemarchitektur
```
┌─────────────────┐ ┌─────────────────┐
│ Shopware 6 │────▶│ PostgreSQL │
│ (Frontend) │ │ (Datenbank) │
└────────┬────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐
│ Mollie │ │ Mailjet │
│ (Zahlungen) │ │ (E-Mails) │
└─────────────────┘ └─────────────────┘
```
== Responsive Design
Der Shop wird für alle Endgeräte optimiert:
- Desktop (ab 1200px)
- Tablet (768px - 1199px)
- Smartphone (bis 767px)
Besonderer Fokus auf Mobile, da viele Kunden unterwegs bestellen.
= Zeitplan
#table(
columns: (auto, 1fr, auto),
[*Phase*], [*Aufgaben*], [*Dauer*],
[1], [Konzeption & Design], [2 Wochen],
[2], [Shop-Entwicklung], [3 Wochen],
[3], [Produktfotografie & Content], [1 Woche],
[4], [Testing & Optimierung], [1 Woche],
[5], [Go-Live & Schulung], [1 Woche],
)
*Geplanter Go-Live:* Anfang April 2025 (vor der Spargelsaison)
= Investitionsübersicht
== Einmalige Kosten
#table(
columns: (2fr, 1fr),
[*Position*], [*Betrag*],
[Shopware 6 Setup & Entwicklung], [4.800 EUR],
[Produktfotografie], [890 EUR],
[Zahlungs- & Versandintegration], [1.140 EUR],
[Schulung & Dokumentation], [450 EUR],
[*Summe netto*], [*7.280 EUR*],
)
== Laufende Kosten (monatlich)
#table(
columns: (2fr, 1fr),
[*Position*], [*Betrag*],
[Hosting & Wartung], [79 EUR],
[Zahlungsgebühren (ca. 1,5%)], [variabel],
[E-Mail-Versand (Mailjet)], [ca. 15 EUR],
)
= Nächste Schritte
1. *Freigabe des Konzepts* durch Frau Hofbauer
2. *Kickoff-Meeting* zur Detailplanung
3. *Bereitstellung* von Logo, Fotos, Produktliste
4. *Start der Entwicklung*
#v(1cm)
_Wir freuen uns auf die Zusammenarbeit und einen erfolgreichen Start in den Online-Handel!_
Documentation from a .typ file
examples/digitalagentur/documents/documentation/2025/documentation.typDetail: Documentation from a .typ file →#import "/.docgen/templates/documentation/default.typ": documentation
// Load company and locale from project root (absolute paths)
#let company = json("/data/company.json")
#let locale = json("/locale/de.json")
#show: documentation.with(
title: "WordPress Benutzerhandbuch",
subject: "Zimmermann Schreinerei Website",
document_number: "DOC-2025-002",
client_name: "Zimmermann Schreinerei GmbH",
project_name: "Website Relaunch",
doc_type: "Benutzerhandbuch",
version: "1.0",
status: "final",
created_at: "2025-01-20",
tags: ("WordPress", "CMS", "Anleitung"),
authors: ("Pixelwerk Digitalagentur",),
company: company,
locale: locale,
)
= Einführung
Dieses Handbuch erklärt die wichtigsten Funktionen Ihrer neuen WordPress-Website. Sie können damit eigenständig Inhalte pflegen, neue Seiten erstellen und Ihren WooCommerce-Shop verwalten.
== Anmeldung
1. Öffnen Sie `https://www.zimmermann-schreinerei.de/wp-admin`
2. Geben Sie Ihren Benutzernamen und Ihr Passwort ein
3. Klicken Sie auf "Anmelden"
#block(
fill: luma(240),
inset: 10pt,
radius: 4pt,
[*Tipp:* Speichern Sie die Login-Seite als Lesezeichen in Ihrem Browser.]
)
= Das Dashboard
Nach der Anmeldung sehen Sie das WordPress-Dashboard. Hier finden Sie:
- *Übersicht:* Schnellzugriff und Statistiken
- *Beiträge:* Blog-Artikel und News
- *Seiten:* Statische Seiten (Über uns, Kontakt, etc.)
- *Medien:* Bilder und Dokumente
- *WooCommerce:* Shop-Verwaltung
= Seiten bearbeiten
== Bestehende Seite bearbeiten
1. Gehen Sie zu *Seiten* → *Alle Seiten*
2. Fahren Sie mit der Maus über die gewünschte Seite
3. Klicken Sie auf "Bearbeiten"
4. Nehmen Sie Ihre Änderungen vor
5. Klicken Sie auf *"Aktualisieren"*
== Der Block-Editor
WordPress verwendet den Block-Editor (Gutenberg). Jeder Inhalt ist ein "Block":
#table(
columns: (1fr, 2fr),
[*Block-Typ*], [*Verwendung*],
[Absatz], [Normaler Text],
[Überschrift], [H2, H3, H4 Überschriften],
[Bild], [Einzelnes Bild einfügen],
[Galerie], [Mehrere Bilder als Galerie],
[Liste], [Aufzählungen und nummerierte Listen],
[Tabelle], [Tabellarische Daten],
)
=== Neuen Block hinzufügen
1. Klicken Sie auf das *+* Symbol
2. Wählen Sie den gewünschten Block-Typ
3. Füllen Sie den Inhalt aus
= Bilder hochladen
== Bilder in die Mediathek laden
1. Gehen Sie zu *Medien* → *Neu hinzufügen*
2. Ziehen Sie Bilder per Drag & Drop ins Fenster
3. Oder klicken Sie auf "Dateien auswählen"
== Bildgrößen
WordPress erstellt automatisch verschiedene Größen:
- *Thumbnail:* 150 × 150 px
- *Mittel:* 300 × 300 px
- *Groß:* 1024 × 1024 px
- *Vollständig:* Originalgröße
#block(
fill: rgb("#fff3cd"),
inset: 10pt,
radius: 4pt,
[*Wichtig:* Laden Sie Bilder nicht größer als 2000px hoch. Große Bilder verlangsamen die Website.]
)
= WooCommerce Shop
== Produkte verwalten
=== Neues Produkt anlegen
1. Gehen Sie zu *Produkte* → *Neu hinzufügen*
2. Geben Sie den Produktnamen ein
3. Fügen Sie eine Beschreibung hinzu
4. Setzen Sie den *Preis* im rechten Bereich
5. Laden Sie ein *Produktbild* hoch
6. Wählen Sie eine *Kategorie*
7. Klicken Sie auf *"Veröffentlichen"*
=== Produkt bearbeiten
1. Gehen Sie zu *Produkte* → *Alle Produkte*
2. Klicken Sie auf das Produkt
3. Ändern Sie Preis, Beschreibung oder Bild
4. Klicken Sie auf *"Aktualisieren"*
== Bestellungen
=== Bestellübersicht
Unter *WooCommerce* → *Bestellungen* sehen Sie alle eingegangenen Bestellungen.
*Status-Farben:*
- 🟡 *Wartend:* Zahlung ausstehend
- 🔵 *In Bearbeitung:* Zahlung eingegangen, Versand vorbereiten
- 🟢 *Fertiggestellt:* Versandt und abgeschlossen
- 🔴 *Storniert:* Bestellung abgebrochen
=== Bestellung bearbeiten
1. Klicken Sie auf die Bestellnummer
2. Ändern Sie den Status nach Versand auf "Fertiggestellt"
3. Der Kunde erhält automatisch eine E-Mail
= Referenzprojekte aktualisieren
Ihre Referenzseite zeigt abgeschlossene Projekte. So fügen Sie neue hinzu:
1. Gehen Sie zu *Seiten* → *Referenzen*
2. Klicken Sie auf "Bearbeiten"
3. Scrollen Sie ans Ende der Projektliste
4. Fügen Sie einen neuen *Galerie-Block* hinzu
5. Laden Sie Projektbilder hoch
6. Fügen Sie einen *Absatz-Block* mit der Beschreibung hinzu
7. Klicken Sie auf *"Aktualisieren"*
= Häufige Fragen
== Kann ich etwas kaputt machen?
Nein. WordPress speichert Revisionen. Sie können jederzeit eine frühere Version wiederherstellen.
== Wie ändere ich das Menü?
Gehen Sie zu *Design* → *Menüs*. Hier können Sie Seiten hinzufügen oder entfernen.
== Ich habe mein Passwort vergessen
Klicken Sie auf der Login-Seite auf "Passwort vergessen" und geben Sie Ihre E-Mail ein.
= Support
Bei Fragen oder Problemen erreichen Sie uns:
- *E-Mail:* support\@pixelwerk.de
- *Telefon:* +49 221 98765432
- *Support-Zeiten:* Mo-Fr 9-17 Uhr
#block(
fill: luma(240),
inset: 10pt,
radius: 4pt,
[Im ersten Monat nach Go-Live ist Support inklusive. Danach bieten wir Wartungsverträge ab 79 EUR/Monat an.]
)
Diagram: flow
examples/diagram-flow/diagram.jsonDetail: Diagram: flow →{
"document": {
"paper": "presentation-16-9",
"margin": "12mm",
"background": "#f8fafc"
},
"diagram": {
"kind": "flow",
"layout": "layered",
"title": "Projektfreigabe",
"subtitle": "Von der Anfrage bis zur Auslieferung"
},
"nodes": [
{
"id": "anfrage",
"label": "Anfrage",
"shape": "rounded",
"style": { "fill": "#ffffff", "stroke": "#1d4ed8" }
},
{
"id": "analyse",
"label": "Analyse",
"shape": "rounded",
"style": { "fill": "#dbeafe", "stroke": "#2563eb" }
},
{
"id": "entscheidung",
"label": "Freigabe?",
"shape": "diamond",
"style": { "fill": "#fef3c7", "stroke": "#d97706" }
},
{
"id": "umsetzung",
"label": "Umsetzung",
"shape": "rounded",
"style": { "fill": "#dcfce7", "stroke": "#16a34a" }
},
{
"id": "qa",
"label": "QA & Abnahme",
"shape": "rounded",
"style": { "fill": "#ede9fe", "stroke": "#7c3aed" }
},
{
"id": "go-live",
"label": "Go-Live",
"shape": "circle",
"style": { "fill": "#fee2e2", "stroke": "#dc2626" }
}
],
"edges": [
{ "from": "anfrage", "to": "analyse", "label": "Briefing" },
{ "from": "analyse", "to": "entscheidung", "label": "Konzept" },
{ "from": "entscheidung", "to": "umsetzung", "label": "Ja" },
{ "from": "umsetzung", "to": "qa", "label": "Build" },
{ "from": "qa", "to": "go-live", "label": "Freigabe" }
]
}
Diagram: timeline
examples/diagram-timeline/diagram.jsonDetail: Diagram: timeline →{
"document": {
"paper": "presentation-16-9",
"margin": "12mm",
"background": "#f8fafc"
},
"diagram": {
"kind": "timeline",
"title": "Produkt-Rollout",
"subtitle": "Phasen vom Kickoff bis zum Launch"
},
"phases": ["Kickoff", "Design", "Build", "Launch"],
"nodes": [
{
"id": "kickoff",
"label": "Kickoff",
"shape": "circle",
"phase": "Kickoff",
"style": { "fill": "#dbeafe", "stroke": "#2563eb" }
},
{
"id": "wireframes",
"label": "Wireframes",
"phase": "Design",
"style": { "fill": "#fef3c7", "stroke": "#d97706" }
},
{
"id": "implementation",
"label": "Implementierung",
"phase": "Build",
"style": { "fill": "#dcfce7", "stroke": "#16a34a" }
},
{
"id": "launch",
"label": "Launch",
"shape": "circle",
"phase": "Launch",
"style": { "fill": "#fee2e2", "stroke": "#dc2626" }
}
],
"edges": [
{ "from": "kickoff", "to": "wireframes", "kind": "direct" },
{ "from": "wireframes", "to": "implementation", "kind": "direct" },
{ "from": "implementation", "to": "launch", "kind": "direct" }
]
}
Diagram: swimlane
examples/diagram-swimlane/diagram.jsonDetail: Diagram: swimlane →{
"document": {
"paper": "presentation-16-9",
"margin": "12mm",
"background": "#f8fafc"
},
"diagram": {
"kind": "swimlane",
"title": "Support-Prozess",
"subtitle": "Ablauf über mehrere Rollen"
},
"lanes": ["Kunde", "Support", "Engineering"],
"nodes": [
{
"id": "request",
"label": "Anfrage senden",
"lane": "Kunde",
"style": { "fill": "#ffffff", "stroke": "#1d4ed8" }
},
{
"id": "triage",
"label": "Ticket triagieren",
"lane": "Support",
"style": { "fill": "#dbeafe", "stroke": "#2563eb" }
},
{
"id": "fix",
"label": "Bug fixen",
"lane": "Engineering",
"style": { "fill": "#dcfce7", "stroke": "#16a34a" }
},
{
"id": "reply",
"label": "Rückmeldung",
"lane": "Support",
"style": { "fill": "#fef3c7", "stroke": "#d97706" }
}
],
"edges": [
{ "from": "request", "to": "triage" },
{ "from": "triage", "to": "fix" },
{ "from": "fix", "to": "reply" }
]
}
Diagram: quadrant
examples/diagram-quadrant/diagram.jsonDetail: Diagram: quadrant →{
"document": {
"paper": "presentation-16-9",
"margin": "12mm",
"background": "#f8fafc"
},
"diagram": {
"kind": "quadrant",
"title": "Feature-Priorisierung",
"subtitle": "Impact vs. Aufwand"
},
"nodes": [
{
"id": "analytics",
"label": "Analytics Dashboard",
"quadrant": "top-right",
"style": { "fill": "#dbeafe", "stroke": "#2563eb" }
},
{
"id": "sso",
"label": "SSO Integration",
"quadrant": "top-left",
"style": { "fill": "#dcfce7", "stroke": "#16a34a" }
},
{
"id": "darkmode",
"label": "Dark Mode",
"quadrant": "bottom-right",
"style": { "fill": "#fef3c7", "stroke": "#d97706" }
},
{
"id": "legacy",
"label": "Legacy Import",
"quadrant": "bottom-left",
"style": { "fill": "#fee2e2", "stroke": "#dc2626" }
}
],
"edges": []
}
Diagram: roadmap
examples/diagram-roadmap/diagram.jsonDetail: Diagram: roadmap →{
"document": {
"paper": "presentation-16-9",
"margin": "12mm",
"background": "#f8fafc"
},
"diagram": {
"kind": "roadmap",
"title": "Roadmap 2026",
"subtitle": "Streams und Quartale"
},
"lanes": ["Platform", "Growth", "Operations"],
"phases": ["Q1", "Q2", "Q3", "Q4"],
"nodes": [
{
"id": "platform-core",
"label": "Core Refactor",
"lane": "Platform",
"phase": "Q1",
"style": { "fill": "#dbeafe", "stroke": "#2563eb" }
},
{
"id": "api-version",
"label": "API v2",
"lane": "Platform",
"phase": "Q3",
"style": { "fill": "#dbeafe", "stroke": "#2563eb" }
},
{
"id": "seo",
"label": "SEO Sprint",
"lane": "Growth",
"phase": "Q2",
"style": { "fill": "#dcfce7", "stroke": "#16a34a" }
},
{
"id": "crm",
"label": "CRM Automation",
"lane": "Growth",
"phase": "Q4",
"style": { "fill": "#dcfce7", "stroke": "#16a34a" }
},
{
"id": "backup",
"label": "Backup Redesign",
"lane": "Operations",
"phase": "Q2",
"style": { "fill": "#fef3c7", "stroke": "#d97706" }
},
{
"id": "monitoring",
"label": "Monitoring Refresh",
"lane": "Operations",
"phase": "Q3",
"style": { "fill": "#fef3c7", "stroke": "#d97706" }
}
],
"edges": [
{ "from": "platform-core", "to": "api-version" },
{ "from": "seo", "to": "crm" },
{ "from": "backup", "to": "monitoring" }
]
}