Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Marketing-Webseite und klickbare Demo für MBTimer, eine webbasierte Arbeitszeiterfassung mit Personalverwaltung für Betriebe jeder Branche mit Mitarbeitern. Rein statisch: kein Backend, keine Datenbank, keine Cookies, kein Tracking, keine externen Schriften oder CDNs.
/, /preise, /impressum, /datenschutz): wird beim Build als statisches HTML vorgerendert./demo): läuft komplett im Browser mit erfundenen Daten eines Beispielbetriebs (fiktive „Zahnarztpraxis Sonnenschein“).npm install # Abhängigkeiten installieren
npm run dev # Entwicklungsserver: http://localhost:5173
npm run build # Typprüfung, Build und Prerendering → dist/
npm run preview # gebaute Seite lokal ansehen: http://localhost:4173
Weitere Befehle:
npm test # Unit-Tests (Vitest): Preisrechner, URL-Parameter, Zeitberechnung, Feiertage, Demo-Store
npm run lint # ESLint (inkl. jsx-a11y)
npm run screenshots # Demo-Screenshots für die Webseite neu erzeugen (public/screenshots/*.webp)
npm run screenshots -- --pricing <ordner> # Preisseite Desktop + Handy als PNG
Für npm run screenshots wird einmalig der Playwright-Browser benötigt: npx playwright install chromium.
Das Skript startet selbst einen Dev-Server, meldet sich in der Demo an und fotografiert sie mit fester Uhrzeit 10:15.
Hinweis zu
npm run preview: Der Vite-Preview-Server liefert für/preise(ohne Schrägstrich am Ende) die Startseiten-Datei aus. Die Seite funktioniert trotzdem (sie wird dann im Browser gerendert), nur das Prerendering greift lokal dort nicht. Auf Cloudflare wirdpreise/index.htmldirekt ausgeliefert.
Live: https://mbtimer.vercel.app
Das Vercel-Projekt mbtimer ist mit diesem GitHub-Repository verbunden: Jeder Push auf main wird automatisch
gebaut und veröffentlicht. Andere Branches erhalten Vorschau-URLs.
Konfiguration in vercel.json:
npm run build (inkl. Prerendering), Ausgabe dist/, nur statische Dateien, kein Server-Code.dist/preise/index.html) werden direkt ausgeliefert; alle anderen Pfade
(z. B. /demo/kiosk) bekommen index.html. Ein kleines Inline-Skript blendet deren Inhalt aus, bis die App die
richtige Seite im Browser gerendert hat.trailingSlash: false: /preise/ leitet auf /preise um./assets/ werden ein Jahr lang gecacht.Manuell geht es auch per CLI: npx vercel deploy --prod.
Alle Preise und preisbezogenen Texte stehen ausschließlich in src/config/pricing.ts.
Nirgends sonst sind Beträge hartcodiert – Tarifkarten, Kostenrechner, Vergleichstabelle, FAQ und Meta-Texte
lesen alle aus dieser Datei.
| Feld | Bedeutung |
|---|---|
vatMode | 'net' → Beträge werden standardmäßig brutto („inkl. 19 % MwSt.“) angezeigt, im Rechner gibt es den Schalter „Nettopreise für Unternehmen anzeigen“ (?netto=1); 'kleinunternehmer' → „gem. § 19 UStG keine Umsatzsteuer“, kein Schalter |
vatRate | MwSt.-Satz für die Brutto-Anzeige (z. B. 0.19) |
yearlyFreeMonths | Gratis-Monate bei Jahreszahlung (2 → Jahrespreis = 10 × Monatspreis) |
trialDays | Testzeitraum (erscheint in „30 Tage kostenlos testen …“) |
tiers | Tarife: name, maxEmployees (Grenze; null = individuelle Kalkulation), monthlyNet (netto/Monat; null = „auf Anfrage“), tagline, extras, optional badge (z. B. „Beliebt“) |
setupService | Einrichtungsservice: price (einmalig), label, items |
includedFeatures | Funktionen, die in allen Tarifen enthalten sind |
calculator | Bereich des Mitarbeiter-Reglers (1–60; Werte über der höchsten Grenze zeigen „50+“) |
Ebenfalls dort: PRICE_DISCLAIMER (Pflichthinweis „Unverbindliche Beispielrechnung – kein Angebot …“),
priceNote() (Steuerhinweis brutto/netto), vatFactor() (Umrechnung netto → brutto) und trialNote().
Regeln, die der Code automatisch einhält:
Nach Änderungen bitte npm test ausführen. Die Tests in
src/site/pricing/calculate.test.ts prüfen die Tarifgrenzen
1/10/11/25/26/50/51, Jahrespreis, Ersparnis, Einrichtung, Pro-Kopf-Wert, Brutto und ungültige Eingaben.
Sie gehen von den aktuellen Werten aus (Starter/Team/Plus: 49/89/149 €, Grenzen 10/25/50) und müssen bei geänderten Preisen
mit angepasst werden.
Eine Rechnung lässt sich als Link teilen, z. B. /preise?ma=18&zahlweise=jahr&einrichtung=1 (optional &brutto=1).
Webseitentexte (Hero, Funktionen, FAQ, Kontakt) stehen in src/config/site.ts,
Seitentitel und Meta-Beschreibungen in src/site/seo.ts.
Rechtliches und Kontakt:
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗