feat: add RPC for public lead creation and update migrations in docker-compose files

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
LagoESP
2026-04-29 16:33:01 +02:00
parent e85b319c93
commit bc61ffa206
9 changed files with 139 additions and 76 deletions
+18 -18
View File
@@ -19,7 +19,7 @@
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menue"></button>
<button class="menu-toggle" aria-label="Menü"></button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
@@ -37,7 +37,7 @@
<section class="hero" id="home">
<div class="shell">
<p class="eyebrow" data-i18n="heroEyebrow">MC Cars · Sportwagenvermietung</p>
<h1 data-i18n="heroTitle">Fahren auf hoechstem Niveau.</h1>
<h1 data-i18n="heroTitle">Fahren auf höchstem Niveau.</h1>
<p class="lead" data-i18n="heroLead">Premium-Sportwagen und Luxusklasse in der Steiermark. Kautionsfrei, transparent, sofort startklar.</p>
<div class="hero-cta">
@@ -60,7 +60,7 @@
<div>
<p class="eyebrow" data-i18n="fleetEyebrow">Unsere Flotte</p>
<h2 data-i18n="fleetTitle">Handverlesen. Gepflegt. Startklar.</h2>
<p class="sub" data-i18n="fleetSub">Filtern Sie nach Marke und Preis. Klicken Sie fuer Details oder buchen Sie direkt.</p>
<p class="sub" data-i18n="fleetSub">Filtern Sie nach Marke und Preis. Klicken Sie für Details oder buchen Sie direkt.</p>
</div>
</div>
@@ -95,7 +95,7 @@
<div class="section-head">
<div>
<p class="eyebrow" data-i18n="whyEyebrow">Warum MC Cars</p>
<h2 data-i18n="whyTitle">Keine Kompromisse zwischen Sicherheit und Fahrspass.</h2>
<h2 data-i18n="whyTitle">Keine Kompromisse zwischen Sicherheit und Fahrspaß.</h2>
</div>
</div>
@@ -113,7 +113,7 @@
<article class="why-card">
<div class="icon"></div>
<h3 data-i18n="whyDeposit">Faire Kaution</h3>
<p data-i18n="whyDepositText">Kein Ueberziehen. Transparente, faire Kaution ohne unnoetige Belastung.</p>
<p data-i18n="whyDepositText">Kein Überziehen. Transparente, faire Kaution ohne unnötige Belastung.</p>
</article>
</div>
</div>
@@ -139,7 +139,7 @@
<div class="shell">
<div class="bpf-header">
<h2 data-i18n="bpfTitle">Jetzt buchen</h2>
<p class="sub" data-i18n="bpfSubtitle">Waehle dein Wunschfahrzeug, den Zeitraum und konfiguriere deine Buchung nach Wunsch.</p>
<p class="sub" data-i18n="bpfSubtitle">Wähle dein Wunschfahrzeug, den Zeitraum und konfiguriere deine Buchung nach Wunsch.</p>
</div>
<!-- Step indicators -->
@@ -161,7 +161,7 @@
<div class="bpf-field">
<label data-i18n="bpfVehicle">Fahrzeug</label>
<select id="bpfCar">
<option value="" data-i18n="bpfSelectVehicle">Fahrzeug waehlen</option>
<option value="" data-i18n="bpfSelectVehicle">Fahrzeug wählen</option>
</select>
</div>
@@ -191,13 +191,13 @@
<!-- Day mode: single date picker -->
<div class="bpf-field bpf-date-day" id="bpfDateDay" style="display:none;">
<label data-i18n="bpfPickDate">Datum waehlen</label>
<label data-i18n="bpfPickDate">Datum wählen</label>
<input type="date" id="bpfDayDate" />
</div>
<!-- Weekend mode: pick the Saturday -->
<div class="bpf-field bpf-date-weekend" id="bpfDateWeekend" style="display:none;">
<label data-i18n="bpfPickWeekend">Wochenende waehlen (Samstag)</label>
<label data-i18n="bpfPickWeekend">Wochenende wählen (Samstag)</label>
<input type="date" id="bpfWeekendDate" />
<p class="bpf-weekend-def" data-i18n="bpfWeekendDef">Wochenende: Samstag 9:00 Sonntag 20:00</p>
</div>
@@ -242,11 +242,11 @@
</div>
<div class="bpf-field">
<label data-i18n="fieldMessage">Nachricht</label>
<textarea id="bpfMessage" rows="3" data-i18n-placeholder="messagePlaceholder" placeholder="Wuensche, Uhrzeit, Anlass..."></textarea>
<textarea id="bpfMessage" rows="3" data-i18n-placeholder="messagePlaceholder" placeholder="Wünsche, Uhrzeit, Anlass..."></textarea>
</div>
<div class="bpf-nav">
<button class="btn ghost" type="button" id="bpfBack2" data-i18n="bpfBack">Zurueck</button>
<button class="btn ghost" type="button" id="bpfBack2" data-i18n="bpfBack">Zurück</button>
<button class="btn" type="button" id="bpfNext2" data-i18n="bpfNext">Weiter</button>
</div>
</div>
@@ -254,10 +254,10 @@
<!-- Step 3: ID Verification -->
<div class="bpf-panel" id="bpfStep3" style="display:none;">
<h3 class="bpf-panel-title">🔐 <span data-i18n="stepVerification">ID-Verifizierung</span></h3>
<p class="muted" style="margin-bottom:1.5rem;">Bitte laden Sie einen gueltigen Ausweis sowie einen aktuellen Lohnzettel / Gehaltsnachweis hoch.</p>
<p class="muted" style="margin-bottom:1.5rem;">Bitte laden Sie einen gültigen Ausweis sowie einen aktuellen Lohnzettel / Gehaltsnachweis hoch.</p>
<div class="bpf-field">
<label data-i18n="bpfIdUpload">Ausweis / Fuehrerschein *</label>
<label data-i18n="bpfIdUpload">Ausweis / Führerschein *</label>
<div class="bpf-upload-box" id="uploadId">
<span class="bpf-upload-icon"></span>
<span data-i18n="bpfClickUpload">Klicken zum Hochladen</span>
@@ -268,7 +268,7 @@
</div>
<div class="bpf-field">
<label data-i18n="bpfIncomeUpload">Lohnzettel / Gehaltsnachweis *</label>
<label data-i18n="bpfIncomeUpload">Lohnzettel / Gehaltsnachweis (optional)</label>
<div class="bpf-upload-box" id="uploadIncome">
<span class="bpf-upload-icon"></span>
<span data-i18n="bpfClickUpload">Klicken zum Hochladen</span>
@@ -280,11 +280,11 @@
<div class="bpf-notice">
<span></span>
<p data-i18n="bpfIdNotice">Ihre Dokumente werden vertraulich behandelt und dienen ausschliesslich der Identitaetsverifizierung.</p>
<p data-i18n="bpfIdNotice">Ihre Dokumente werden vertraulich behandelt und dienen ausschließlich der Identitätsverifizierung.</p>
</div>
<div class="bpf-nav">
<button class="btn ghost" type="button" id="bpfBack3" data-i18n="bpfBack">Zurueck</button>
<button class="btn ghost" type="button" id="bpfBack3" data-i18n="bpfBack">Zurück</button>
<button class="btn" type="button" id="bpfSubmit" data-i18n="bpfSubmit">Anfrage absenden</button>
</div>
</div>
@@ -292,7 +292,7 @@
<!-- Price sidebar -->
<aside class="bpf-sidebar" id="bpfSidebar">
<p class="bpf-sidebar-placeholder" data-i18n="bpfSelectForPrice">Waehle Fahrzeug und Datum fuer eine Preisuebersicht</p>
<p class="bpf-sidebar-placeholder" data-i18n="bpfSelectForPrice">Wähle Fahrzeug und Datum für eine Preisübersicht</p>
<div class="bpf-sidebar-content" id="bpfSidebarContent" style="display:none;"></div>
</aside>
</div>
@@ -310,7 +310,7 @@
<span class="logo-mark">MC</span>
<span>MC Cars</span>
</div>
<p style="color:var(--muted);font-size:0.9rem;max-width:40ch;" data-i18n="footerTagline">Sportwagenvermietung in Oesterreich. Standort: Steiermark (TBD).</p>
<p style="color:var(--muted);font-size:0.9rem;max-width:40ch;" data-i18n="footerTagline">Sportwagenvermietung in Österreich. Standort: Steiermark (TBD).</p>
</div>
<div>