Initial Kaffeekasse SaaS restart
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
<?php require __DIR__ . '/../partials/layout-top.php'; ?>
|
||||
|
||||
<section class="hero">
|
||||
<div class="hero-copy">
|
||||
<span class="eyebrow">Von der Papierliste zur produktiven SaaS</span>
|
||||
<h1>Kaffeeliste, digitale Strichliste und RFID-Roadmap in einem System.</h1>
|
||||
<p class="lead">Die Anwendung verbindet klassische Kaffeekasse, digitale Selbstbuchung und spaetere Geraeteintegration. Mandanten registrieren sich selbst, verwalten Mitglieder, Produkte, Einzahlungen und Papierlisten in einem PHP/MySQL-Stack, der auf Netcup-Webspace laeuft.</p>
|
||||
<div class="button-row">
|
||||
<?php if ($setupComplete): ?>
|
||||
<a class="button button-primary" href="/register">Mandant starten</a>
|
||||
<a class="button button-secondary" href="/admin/login">Plattform betreten</a>
|
||||
<?php else: ?>
|
||||
<a class="button button-primary" href="/install">Installation starten</a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<ul class="metric-row">
|
||||
<li><strong>1</strong><span>gemeinsames Ledger fuer digital, Papier und RFID</span></li>
|
||||
<li><strong>3</strong><span>Pakete fuer Vermarktung und Rollout</span></li>
|
||||
<li><strong>100%</strong><span>Webspace-kompatibler PHP/MySQL-Betrieb</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<aside class="hero-card">
|
||||
<h2>Produktive Ausrichtung</h2>
|
||||
<ul class="feature-list">
|
||||
<li>Mandanten-Self-Service mit Owner-Onboarding</li>
|
||||
<li>Digitale Buchungen fuer Tablet, Browser und Kiosk</li>
|
||||
<li>Papierlisten als Entwurf, Nacherfassung und Ledger-Posting</li>
|
||||
<li>Einzahlungen, Salden und Audit-Trail pro Mandant</li>
|
||||
<li>RFID-Devices, Karten und Event-Inbox fuer die spaetere Automatisierung</li>
|
||||
</ul>
|
||||
<?php if (is_array($stats)): ?>
|
||||
<div class="stats-panel">
|
||||
<div><strong><?= e((string) $stats['tenants']) ?></strong><span>Mandanten in der Datenbank</span></div>
|
||||
<div><strong><?= e((string) $stats['members']) ?></strong><span>Mitglieder</span></div>
|
||||
<div><strong><?= e((string) $stats['events']) ?></strong><span>Buchungsvorfaelle</span></div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<section class="content-grid">
|
||||
<article class="card">
|
||||
<span class="eyebrow">Produkt</span>
|
||||
<h2>Eine Buchungslogik, mehrere Erfassungswege</h2>
|
||||
<p>Jede Kaffee- oder Tee-Buchung landet im selben Ledger. Ob jemand digital klickt, ob ein Admin eine Papierliste erfasst oder ob spaeter ein RFID-Leser Events einspeist: Salden, Historie und Auswertungen bleiben konsistent.</p>
|
||||
</article>
|
||||
<article class="card">
|
||||
<span class="eyebrow">Marketing</span>
|
||||
<h2>Klare Positionierung fuer Teams, Vereine und Coworking</h2>
|
||||
<p>Die Startseite spricht gezielt Organisationen an, die zwischen analoger Kaffeekasse und digitaler Selbstbedienung stehen. Das senkt Erklaerungsaufwand und macht den Upgrade-Pfad zu RFID nachvollziehbar.</p>
|
||||
</article>
|
||||
<article class="card">
|
||||
<span class="eyebrow">Betrieb</span>
|
||||
<h2>Netcup-tauglich statt hyperskalierter Overkill</h2>
|
||||
<p>Pfadbasierte Mandanten, gemeinsamer MySQL-Kern, Cron statt Worker und ein sauberer Webroot auf `public/` sind genau auf klassisches Webhosting zugeschnitten.</p>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="plans">
|
||||
<div class="section-head">
|
||||
<span class="eyebrow">Pakete</span>
|
||||
<h2>Preismodelle fuer die Vermarktung</h2>
|
||||
</div>
|
||||
<div class="plan-grid">
|
||||
<article class="plan-card">
|
||||
<h3>Starter</h3>
|
||||
<p>Fuer kleine Teams und Vereine mit digitaler Buchung und einfacher Kaffeekasse.</p>
|
||||
<ul>
|
||||
<li>Mitglieder, Produkte, digitale Buchungen</li>
|
||||
<li>Einzahlungen und Salden</li>
|
||||
<li>Self-Service-Registrierung</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article class="plan-card highlighted">
|
||||
<h3>Team</h3>
|
||||
<p>Fuer Organisationen, die Papierlisten und digitale Prozesse parallel fahren.</p>
|
||||
<ul>
|
||||
<li>Papierlisten-Workflow mit Nacherfassung</li>
|
||||
<li>Plattform-Dashboard und Audit-Trail</li>
|
||||
<li>Vorbereitung fuer Standortgeraete</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article class="plan-card">
|
||||
<h3>Business</h3>
|
||||
<p>Fuer Standorte mit RFID-Roadmap, Betriebsanforderungen und spaeterem White-Labeling.</p>
|
||||
<ul>
|
||||
<li>RFID-Devices, Karten und Intake-API</li>
|
||||
<li>Release-, Backup- und Deployment-Rahmen</li>
|
||||
<li>Vorlage fuer spaetere Integrationen</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="timeline card">
|
||||
<div class="section-head">
|
||||
<span class="eyebrow">Roadmap</span>
|
||||
<h2>Sauberer Pfad in die Produktion</h2>
|
||||
</div>
|
||||
<ol class="step-list">
|
||||
<li>Plattform installieren und ersten Admin anlegen.</li>
|
||||
<li>Mandant registrieren, Owner-Onboarding abschliessen und Produkte vorbelegen.</li>
|
||||
<li>Digitale Buchungen und Papierlisten parallel im Team einsetzen.</li>
|
||||
<li>Mit RFID-Geraeten spaeter ueber die Event-Inbox anbinden, ohne das Kernledger umzubauen.</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<?php require __DIR__ . '/../partials/layout-bottom.php'; ?>
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php require __DIR__ . '/../partials/layout-top.php'; ?>
|
||||
|
||||
<section class="page-head">
|
||||
<span class="eyebrow">Self-Service</span>
|
||||
<h1>Mandant registrieren</h1>
|
||||
<p>Der Owner legt den ersten Standort an und bekommt automatisch die Grundbausteine fuer digitale Buchung, Papierliste und spaetere RFID-Anbindung.</p>
|
||||
</section>
|
||||
|
||||
<div class="two-column">
|
||||
<form class="card form-card" method="post" action="/register">
|
||||
<?= csrf_field($csrf) ?>
|
||||
<label>
|
||||
<span>Organisationsname</span>
|
||||
<input type="text" name="tenant_name" value="<?= e((string) old('tenant_name')) ?>" required>
|
||||
</label>
|
||||
<label>
|
||||
<span>Kurzname / URL-Slug</span>
|
||||
<input type="text" name="tenant_slug" value="<?= e((string) old('tenant_slug')) ?>" placeholder="mein-team">
|
||||
</label>
|
||||
<label>
|
||||
<span>Paket</span>
|
||||
<select name="plan">
|
||||
<option value="starter">Starter</option>
|
||||
<option value="team" selected>Team</option>
|
||||
<option value="business">Business</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
<span>Standardpreis pro Kaffee in EUR</span>
|
||||
<input type="number" name="default_price_eur" min="0.50" step="0.05" value="<?= e((string) old('default_price_eur', '1.20')) ?>">
|
||||
</label>
|
||||
<label>
|
||||
<span>Owner-Name</span>
|
||||
<input type="text" name="owner_name" value="<?= e((string) old('owner_name')) ?>" required>
|
||||
</label>
|
||||
<label>
|
||||
<span>Owner-E-Mail</span>
|
||||
<input type="email" name="owner_email" value="<?= e((string) old('owner_email')) ?>" required>
|
||||
</label>
|
||||
<label>
|
||||
<span>Owner-Passwort</span>
|
||||
<input type="password" name="owner_password" minlength="12" required>
|
||||
</label>
|
||||
<button class="button button-primary" type="submit">Mandant anlegen</button>
|
||||
</form>
|
||||
|
||||
<aside class="card">
|
||||
<span class="eyebrow">Was automatisch entsteht</span>
|
||||
<ul class="feature-list">
|
||||
<li>Tenant mit Owner-Rolle</li>
|
||||
<li>Systemquellen fuer digital, Papier, Backoffice und RFID</li>
|
||||
<li>Standardprodukte Kaffee, Espresso und Tee</li>
|
||||
<li>Voreinstellung fuer Self-Service und Papierlisten</li>
|
||||
</ul>
|
||||
<p class="muted">Damit ist die Vermarktung sauber: Interessenten landen nicht in einem Technikgeruest, sondern in einem sofort nutzbaren Grundaufbau.</p>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<?php require __DIR__ . '/../partials/layout-bottom.php'; ?>
|
||||
Reference in New Issue
Block a user