Files
kaffeekasse-saas/landing.php
T
clemens cb799c7c66 Deployment-Vorbereitung: Domain-Split und Legacy-/Debug-Seiten entfernt
- index.php zeigt bei abweichendem Host (APP_HOST-Env) die Landingpage
  statt des Dashboards, damit kaffeeliste.de und app.kaffeeliste.de aus
  demselben Webspace bedient werden koennen. Ohne gesetztes APP_HOST
  (lokale Entwicklung) unveraendertes Verhalten.
- landing.php verlinkt Login/Registrierung ueber APP_HOST fest auf die
  App-Domain, damit Besucher der Marketingdomain dort landen.
- functionsLDAP.php entfernt (nur ueber die tote IIS/AUTH_USER-Branch
  erreichbar, vollstaendig durch app/saas-auth.php ersetzt); zugehoerige
  tote AD/LDAP-Variablen aus config.php und der AUTH_USER-Zweig aus
  functions.php entfernt.
- mailausgebe.php, umfrage.php, umfrageergebnisse.php entfernt: aus der
  Navigation nicht erreichbare Debug-/Einzweck-Seiten ohne echte
  Berechtigungspruefung (mailausgebe.php dumpte alle Mitglieder-E-Mails,
  umfrageergebnisse.php hatte nur einen auskommentierten Basic-Auth-
  Block). scripts/http-smoke.php entsprechend bereinigt.
2026-07-17 11:37:41 +02:00

151 lines
9.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php require_once __DIR__ . '/app/bootstrap.php'; ?>
<!DOCTYPE HTML>
<html lang="de">
<head>
<title>Kaffeeliste die digitale Kaffeekasse für Teams</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<meta name="description" content="Kaffeeliste ist die digitale Kaffeekasse für Teams, Büros und Vereine: Striche erfassen, Guthaben im Blick behalten, bequem per PayPal ausgleichen." />
<link rel="stylesheet" href="assets/css/main.css" />
<link rel="stylesheet" href="assets/css/public.css" />
</head>
<body class="is-preload public-page">
<div class="public-shell">
<section class="public-hero">
<nav class="public-nav" aria-label="Hauptnavigation">
<strong>Kaffeeliste</strong>
<ul class="actions">
<li><a href="<?php echo htmlspecialchars(app_primary_url('login.php'), ENT_QUOTES, 'UTF-8'); ?>" class="button">Login</a></li>
<li><a href="<?php echo htmlspecialchars(app_primary_url('register.php'), ENT_QUOTES, 'UTF-8'); ?>" class="button primary">Registrieren</a></li>
</ul>
</nav>
<div class="public-hero-content">
<h1>Die Kaffeekasse, die von allein mitrechnet</h1>
<p>Schluss mit Strichlisten auf Papier und Kopfrechnen beim Kassensturz: Kaffeeliste hält für dein Team, Büro oder deinen Verein fest, wer wie viele Striche gemacht hat, wer bezahlt hat und wer gerade offen ist jederzeit einsehbar, für jeden nachvollziehbar.</p>
<ul class="actions">
<li><a href="<?php echo htmlspecialchars(app_primary_url('register.php'), ENT_QUOTES, 'UTF-8'); ?>" class="button primary big">Kostenlos einrichten</a></li>
<li><a href="<?php echo htmlspecialchars(app_primary_url('login.php'), ENT_QUOTES, 'UTF-8'); ?>" class="button big">Zur App</a></li>
</ul>
</div>
</section>
<section class="public-section">
<header class="major">
<h2>So funktioniert's</h2>
</header>
<div class="public-grid public-steps">
<article class="public-feature">
<span class="public-step-number">1</span>
<h3>Kaffee nehmen</h3>
<p>Wie bisher: Kaffee holen, Tee, Wasser ganz ohne App am Automaten oder an der Maschine selbst.</p>
</article>
<article class="public-feature">
<span class="public-step-number">2</span>
<h3>Strich setzen</h3>
<p>Der Strich landet in der Kaffeeliste entweder durch eine verantwortliche Person gesammelt oder, wenn gewünscht, direkt selbst im eigenen Dashboard.</p>
</article>
<article class="public-feature">
<span class="public-step-number">3</span>
<h3>Bei Bedarf bezahlen</h3>
<p>Der aktuelle Stand ist jederzeit sichtbar. Ausgleich bequem per PayPal, wenn dein Team das nutzt ganz ohne Bargeld und Wechselgeld.</p>
</article>
</div>
</section>
<section class="public-section">
<header class="major">
<h2>Alles rund um die Kaffeekasse</h2>
</header>
<div class="public-grid">
<article class="public-feature">
<h3>Mitglieder &amp; Rollen</h3>
<p>Mitglieder anlegen, deaktivieren oder anonymisieren. Zugang mit passender Rolle (Admin, Kassenwart, Mitglied) gezielt vergeben oder wieder entziehen.</p>
</article>
<article class="public-feature">
<h3>Guthaben &amp; Einzahlungen</h3>
<p>Striche, Einzahlungen und Korrekturen laufen über ein durchgängiges Journal jede Buchung bleibt nachvollziehbar, auch nachträglich.</p>
</article>
<article class="public-feature">
<h3>PayPal-Zahlung</h3>
<p>Offene Beträge lassen sich optional direkt per PayPal ausgleichen, inklusive automatischem Abgleich in der Liste.</p>
</article>
<article class="public-feature">
<h3>CSV-Import &amp; Export</h3>
<p>Zahlungen aus einem PayPal-Export einlesen, mit Vorschau und Dublettenprüfung vor der Übernahme. Kaffeeliste als PDF für den Ausdruck exportieren.</p>
</article>
<article class="public-feature">
<h3>Mandantenfähig</h3>
<p>Jeder Kunde arbeitet in einem eigenen, streng getrennten Bereich mit eigenen Mitgliedern, Einstellungen und Buchungen.</p>
</article>
<article class="public-feature">
<h3>Hinweise &amp; Info-Mails</h3>
<p>Aktuelle Hinweise für alle sichtbar einblenden, und bei Bedarf eine Info-Mail mit dem aktuellen Stand an alle Mitglieder verschicken.</p>
</article>
</div>
</section>
<section class="public-section public-demo">
<header class="major">
<h2>So sieht's in der App aus</h2>
<p>Klares Layout, aufgeräumte Tabellen, alles auf einen Blick die Kaffeeliste bleibt bewusst eine Arbeitsoberfläche statt einer verspielten Marketing-App.</p>
</header>
<div class="public-demo-frame">
<img src="assets/images/demo-kaffeeliste.png" alt="Ausschnitt aus der Kaffeeliste: Gesamtübersicht mit aktivem Mitglied, Stand, Ausgabe, Strichen und Einzahlungen" loading="lazy">
</div>
</section>
<section class="public-section">
<header class="major">
<h2>Häufige Fragen</h2>
</header>
<div class="public-faq">
<div class="public-panel">
<h3>Wie schnell ist meine Kaffeeliste startklar?</h3>
<p>Kundenkonto anlegen, Mitglieder eintragen, loslegen. Es ist keine Einrichtung durch uns nötig, und die bestehenden Abläufe rund um Striche und Einzahlungen bleiben dieselben.</p>
</div>
<div class="public-panel">
<h3>Sind unsere Daten von denen anderer Kunden getrennt?</h3>
<p>Ja. Jeder Kunde hat einen eigenen, isolierten Bereich für Mitglieder, Buchungen und Einstellungen. Diese Trennung ist fester Bestandteil der App und wird automatisiert geprüft.</p>
</div>
<div class="public-panel">
<h3>Wer darf in unserem Team was ändern?</h3>
<p>Ihr vergebt Rollen wie Administrator, Kassenwart oder Mitglied gezielt pro Person und könnt den Zugang jederzeit wieder entziehen, ohne den Mitgliedseintrag selbst zu löschen.</p>
</div>
<div class="public-panel">
<h3>Können wir unsere Daten exportieren oder löschen lassen?</h3>
<p>Ja. Ihr könnt alle gespeicherten Daten jederzeit als Export herunterladen und einzelne Mitglieder oder euren gesamten Kundenbereich selbstständig wieder entfernen lassen.</p>
</div>
<div class="public-panel">
<h3>Müssen wir PayPal nutzen?</h3>
<p>Nein, PayPal ist optional und lässt sich in den Mandant-Einstellungen aktivieren. Einzahlungen können weiterhin auch manuell erfasst werden.</p>
</div>
</div>
</section>
<section class="public-section public-cta">
<header class="major">
<h2>Bereit für eine Kaffeekasse, die mitdenkt?</h2>
<p>In wenigen Minuten eingerichtet, für dein ganzes Team nutzbar.</p>
</header>
<ul class="actions">
<li><a href="<?php echo htmlspecialchars(app_primary_url('register.php'), ENT_QUOTES, 'UTF-8'); ?>" class="button primary big">Kundenkonto anlegen</a></li>
<li><a href="<?php echo htmlspecialchars(app_primary_url('login.php'), ENT_QUOTES, 'UTF-8'); ?>" class="button big">Zur App</a></li>
</ul>
</section>
</div>
<footer class="public-footer-links">
<a href="impressum.php">Impressum</a>
<a href="agb.php">AGB</a>
<a href="datenschutz.php">Datenschutz</a>
<a href="preise.php">Preise</a>
</footer>
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
</body>
</html>