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
+31 -36
View File
@@ -9,7 +9,7 @@ export const translations = {
viewFleet: "Flotte ansehen",
heroEyebrow: "MC Cars · Sportwagenvermietung",
heroTitle: "Fahren auf hoechstem Niveau.",
heroTitle: "Fahren auf höchstem Niveau.",
heroLead: "Premium-Sportwagen und Luxusklasse in der Steiermark. Faire Kaution, transparent, sofort startklar.",
statDeposit: "Faire Kaution",
@@ -18,7 +18,7 @@ export const translations = {
fleetEyebrow: "Unsere Flotte",
fleetTitle: "Handverlesen. Gepflegt. Startklar.",
fleetSub: "Filtern Sie nach Marke und Preis. Klicken Sie fuer Details oder buchen Sie direkt.",
fleetSub: "Filtern Sie nach Marke und Preis. Klicken Sie für Details oder buchen Sie direkt.",
filterBrand: "Marke",
filterSort: "Sortierung",
filterPrice: "Max. Preis / Tag",
@@ -37,13 +37,13 @@ export const translations = {
noMatches: "Keine Fahrzeuge gefunden.",
whyEyebrow: "Warum MC Cars",
whyTitle: "Keine Kompromisse zwischen Sicherheit und Fahrspass.",
whyTitle: "Keine Kompromisse zwischen Sicherheit und Fahrspaß.",
whyInsurance: "Versicherungsschutz",
whyInsuranceText: "Vollkasko mit klarem Selbstbehalt. Transparente Kosten auf jedem Kilometer.",
whyFleet: "Premium Flotte",
whyFleetText: "Handverlesene Performance-Modelle, professionell gewartet und sofort startklar.",
whyDeposit: "Faire Kaution",
whyDepositText: "Kein Ueberziehen. Transparente, faire Kaution ohne unnoetige Belastung.",
whyDepositText: "Zwei Kautionsarten: Bar oder PayPal-Kaution. Bei PayPal senden wir einen Deposit-Link. Bar wird aktuell persönlich bei der Fahrzeugübergabe abgewickelt.",
reviewsEyebrow: "Kundenmeinungen",
reviewsTitle: "Erlebnisse, die bleiben.",
@@ -58,50 +58,50 @@ export const translations = {
fieldFrom: "Von",
fieldTo: "Bis",
fieldMessage: "Nachricht",
messagePlaceholder: "Wuensche, Uhrzeit, Anlass...",
messagePlaceholder: "Wünsche, Uhrzeit, Anlass...",
sendRequest: "Anfrage senden",
invalidDates: "Bitte ein gueltiges Datum waehlen (Bis > Von).",
weekendSaturdayOnly: "Im Wochenendmodus bitte einen Samstag waehlen.",
bookingSuccess: "Danke! Wir melden uns in Kuerze per E-Mail.",
invalidDates: "Bitte ein gültiges Datum wählen (Bis > Von).",
weekendSaturdayOnly: "Im Wochenendmodus bitte einen Samstag wählen.",
bookingSuccess: "Danke! Wir melden uns in Kürze per E-Mail.",
bookingFailed: "Anfrage konnte nicht gesendet werden. Bitte erneut versuchen.",
// BPF Wizard
bpfTitle: "Jetzt buchen",
bpfSubtitle: "Waehle dein Wunschfahrzeug, den Zeitraum und konfiguriere deine Buchung nach Wunsch.",
bpfSubtitle: "Wähle dein Wunschfahrzeug, den Zeitraum und konfiguriere deine Buchung nach Wunsch.",
stepVehicleTime: "Fahrzeug & Zeitraum",
stepContact: "Kontaktdaten",
stepVerification: "ID-Verifizierung",
bpfRentalDuration: "Mietdauer",
bpfVehicle: "Fahrzeug",
bpfSelectVehicle: "Fahrzeug waehlen",
bpfSelectVehicle: "Fahrzeug wählen",
bpfDuration: "Mietdauer",
bpfPresetDay: "1 Tag",
bpfPresetWeekend: "Wochenende",
bpfPresetCustom: "Individuell",
bpfPickDate: "Datum waehlen",
bpfPickWeekend: "Wochenende waehlen (Samstag)",
bpfPickDate: "Datum wählen",
bpfPickWeekend: "Wochenende wählen (Samstag)",
bpfStartDate: "Startdatum",
bpfEndDate: "Enddatum",
bpfSelectDate: "Datum waehlen",
bpfSelectDate: "Datum wählen",
bpfNext: "Weiter",
bpfBack: "Zurueck",
bpfBack: "Zurück",
bpfDailyRate: "Tagesmiete",
bpfWeekendRate: "Wochenendmiete",
bpfWeekendDef: "Wochenende: Samstag 9:00 Sonntag 20:00",
bpfMaxKm: "Max. km/Tag",
bpfExtraKm: "Extra km",
bpfPriceOverview: "Preisuebersicht",
bpfSelectForPrice: "Waehle Fahrzeug und Datum fuer eine Preisuebersicht",
bpfPriceOverview: "Preisübersicht",
bpfSelectForPrice: "Wähle Fahrzeug und Datum für eine Preisübersicht",
bpfSubtotal: "Zwischensumme",
bpfVat: "MwSt. (20%)",
bpfTotal: "Gesamtbetrag",
bpfDeposit: "Kaution",
bpfIncludedKm: "Inkludierte Kilometer",
bpfIdUpload: "Ausweis / Fuehrerschein",
bpfIncomeUpload: "Lohnzettel / Gehaltsnachweis",
bpfIdUpload: "Ausweis / Führerschein",
bpfIncomeUpload: "Lohnzettel / Gehaltsnachweis (optional)",
bpfUploadHint: "PDF, JPG, PNG (max. 10 MB)",
bpfClickUpload: "Klicken zum Hochladen",
bpfIdNotice: "Ihre Dokumente werden vertraulich behandelt und dienen ausschliesslich der Identitaetsverifizierung.",
bpfIdNotice: "Ihre Dokumente werden vertraulich behandelt und dienen ausschließlich der Identitätsverifizierung.",
bpfSubmit: "Anfrage absenden",
bpfPerKm: "/km",
bpfDays: "Tage",
@@ -112,7 +112,7 @@ export const translations = {
perWeekend: "Wochenende",
weekendDef: "Sa 9:00 So 20:00",
footerTagline: "Sportwagenvermietung in Oesterreich. Standort: Steiermark (TBD).",
footerTagline: "Sportwagenvermietung in Österreich. Standort: Steiermark (TBD).",
footerLegal: "Rechtliches",
footerContact: "Kontakt",
footerNav: "Navigation",
@@ -121,11 +121,11 @@ export const translations = {
footerTerms: "Mietbedingungen",
copyright: "Alle Rechte vorbehalten.",
close: "Schliessen",
close: "Schließen",
editVehicle: "Fahrzeug bearbeiten",
adminNavWebsite: "Website",
adminChangePw: "Passwort aendern",
adminChangePw: "Passwort ändern",
adminLogout: "Logout",
adminLeads: "Leads",
adminCustomers: "Kunden",
@@ -214,7 +214,7 @@ export const translations = {
whyFleet: "Premium fleet",
whyFleetText: "Hand-picked performance models, professionally maintained and ready to go.",
whyDeposit: "Fair Deposit",
whyDepositText: "No overcharge. A transparent, fair deposit with no unnecessary burden.",
whyDepositText: "Two deposit options: cash or PayPal deposit. For PayPal, we send a deposit link. Cash is currently handled in person at pickup.",
reviewsEyebrow: "Testimonials",
reviewsTitle: "Experiences that last.",
@@ -269,7 +269,7 @@ export const translations = {
bpfDeposit: "Deposit",
bpfIncludedKm: "Included kilometers",
bpfIdUpload: "ID / Driving license",
bpfIncomeUpload: "Pay slip / Income proof",
bpfIncomeUpload: "Pay slip / Income proof (optional)",
bpfUploadHint: "PDF, JPG, PNG (max. 10 MB)",
bpfClickUpload: "Click to upload",
bpfIdNotice: "Your documents are treated confidentially and are used exclusively for identity verification.",
@@ -344,18 +344,13 @@ export const translations = {
},
};
export const REVIEWS = {
de: [
{ quote: "Top Service und perfekt vorbereitete Fahrzeuge. Unser Wochenendtrip war ein Highlight.", author: "Laura K." },
{ quote: "Die Buchung war klar und schnell. Der GT3 war in einem herausragenden Zustand.", author: "Martin P." },
{ quote: "Sehr professionelles Team und ehrliche Kommunikation zu allen Konditionen.", author: "Sina T." },
],
en: [
{ quote: "Excellent service and flawlessly prepared cars. Our weekend trip was unforgettable.", author: "Laura K." },
{ quote: "Booking was clear and fast. The GT3 arrived in outstanding condition.", author: "Martin P." },
{ quote: "Very professional team and transparent communication on all terms.", author: "Sina T." },
],
};
export const REVIEWS = [
{ quote: "Die Buchung war klar und schnell. Der GT3 war in einem herausragenden Zustand.", author: "Martin P.", lang: "de" },
{ quote: "Exzellenter Service und makellos vorbereitete Fahrzeuge. Unser Wochenendtrip war unvergesslich.", author: "James R.", lang: "de" },
{ quote: "Hervorragende Buchungsabwicklung und tadelloses Fahrzeugzustand. Sehr zufrieden.", author: "Thomas W.", lang: "de" },
{ quote: "Professionelles Team und untadelige Aufmerksamkeit zum Detail. Sehr empfohlen.", author: "David M.", lang: "de" },
{ quote: "Booking was clear and fast. The GT3 arrived in outstanding condition.", author: "Jonas P.", lang: "en" },
];
export function getLang() {
return localStorage.getItem("mccars.lang") || "de";