refactor(wording): "Spende/spenden" -> "Freiwilliger Unterstützungsbeitrag/Beitrag" (v1.7.7)
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 45m18s

Sichtbare Texte umgestellt (Routen /spenden und Code-Namen unverändert):
- Home, Unterstützungsseite (/spenden), Danke-Seite, Layout-Titel
- Admin-Tab "Unterstützung", Texte + Button "Jetzt unterstützen"
- settings-tab Stripe-/Unterstützungs-Konfiguration
- Nutzungsbedingungen/Unterstützen: "Spendenbescheinigung" -> "Bescheinigung"
- Stripe-Checkout-Position: "Freiwilliger Unterstützungsbeitrag für Lageplan"

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Pepe Ziberi
2026-07-23 12:53:11 +02:00
parent 836b231c42
commit 5cdf0e63c9
10 changed files with 23 additions and 23 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "lageplan", "name": "lageplan",
"version": "1.7.6", "version": "1.7.7",
"description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation", "description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation",
"private": true, "private": true,
"scripts": { "scripts": {

View File

@@ -100,7 +100,7 @@ export default function AdminPage() {
<TabsTrigger value="soma" className="gap-2"><AlertTriangle className="w-4 h-4" />SOMA</TabsTrigger> <TabsTrigger value="soma" className="gap-2"><AlertTriangle className="w-4 h-4" />SOMA</TabsTrigger>
<TabsTrigger value="suggestions" className="gap-2"><ClipboardList className="w-4 h-4" />Wörterliste</TabsTrigger> <TabsTrigger value="suggestions" className="gap-2"><ClipboardList className="w-4 h-4" />Wörterliste</TabsTrigger>
<TabsTrigger value="hose-types" className="gap-2"><Settings className="w-4 h-4" />Schläuche</TabsTrigger> <TabsTrigger value="hose-types" className="gap-2"><Settings className="w-4 h-4" />Schläuche</TabsTrigger>
<TabsTrigger value="donate" className="gap-2"><Heart className="w-4 h-4" />Spenden</TabsTrigger> <TabsTrigger value="donate" className="gap-2"><Heart className="w-4 h-4" />Unterstützung</TabsTrigger>
</TabsList> </TabsList>
)} )}
@@ -169,14 +169,14 @@ export default function AdminPage() {
<h3 className="font-semibold text-lg">Lageplan unterstützen</h3> <h3 className="font-semibold text-lg">Lageplan unterstützen</h3>
<p className="text-sm text-muted-foreground mt-1"> <p className="text-sm text-muted-foreground mt-1">
Lageplan ist ein kostenloses Projekt entwickelt von einem aktiven Feuerwehrmann Lageplan ist ein kostenloses Projekt entwickelt von einem aktiven Feuerwehrmann
in seiner Freizeit. Ohne Firma, ohne Investoren. Deine Spende hilft, den Betrieb und die in seiner Freizeit. Ein freiwilliger Beitrag hilft, den Betrieb und die
Weiterentwicklung zu finanzieren. Weiterentwicklung zu finanzieren.
</p> </p>
</div> </div>
</div> </div>
<div className="bg-muted/50 rounded-lg p-4 mb-6"> <div className="bg-muted/50 rounded-lg p-4 mb-6">
<p className="text-sm font-medium mb-2">Wohin fliesst deine Spende?</p> <p className="text-sm font-medium mb-2">Wohin fliesst dein Beitrag?</p>
<ul className="text-sm text-muted-foreground space-y-1"> <ul className="text-sm text-muted-foreground space-y-1">
<li className="flex items-center gap-2"><Shield className="w-3.5 h-3.5 text-primary shrink-0" /> Server-Hosting in der Schweiz (monatliche Kosten)</li> <li className="flex items-center gap-2"><Shield className="w-3.5 h-3.5 text-primary shrink-0" /> Server-Hosting in der Schweiz (monatliche Kosten)</li>
<li className="flex items-center gap-2"><Settings className="w-3.5 h-3.5 text-primary shrink-0" /> Entwicklung neuer Features und Bugfixes</li> <li className="flex items-center gap-2"><Settings className="w-3.5 h-3.5 text-primary shrink-0" /> Entwicklung neuer Features und Bugfixes</li>
@@ -188,7 +188,7 @@ export default function AdminPage() {
<Button asChild> <Button asChild>
<a href="/spenden" target="_blank" rel="noopener noreferrer"> <a href="/spenden" target="_blank" rel="noopener noreferrer">
<Heart className="w-4 h-4 mr-2" /> <Heart className="w-4 h-4 mr-2" />
Jetzt spenden Jetzt unterstützen
</a> </a>
</Button> </Button>
<Button variant="outline" asChild> <Button variant="outline" asChild>

View File

@@ -27,8 +27,8 @@ export async function POST(req: NextRequest) {
price_data: { price_data: {
currency: 'chf', currency: 'chf',
product_data: { product_data: {
name: 'Spende für Lageplan', name: 'Freiwilliger Unterstützungsbeitrag für Lageplan',
description: `Freiwillige Spende von CHF ${amount} für die Weiterentwicklung`, description: `Freiwilliger Unterstützungsbeitrag von CHF ${amount} für die Weiterentwicklung`,
}, },
unit_amount: amountInCents, unit_amount: amountInCents,
}, },

View File

@@ -119,7 +119,7 @@ export default function NutzungsbedingungenPage() {
<li>Beiträge sind freiwillig und erfolgen ohne Anspruch auf eine Gegenleistung.</li> <li>Beiträge sind freiwillig und erfolgen ohne Anspruch auf eine Gegenleistung.</li>
<li>Beiträge begründen keinen Anspruch auf Funktionen, Support, Verfügbarkeit oder bevorzugte Behandlung.</li> <li>Beiträge begründen keinen Anspruch auf Funktionen, Support, Verfügbarkeit oder bevorzugte Behandlung.</li>
<li>Zahlungsanbieter können Gebühren abziehen.</li> <li>Zahlungsanbieter können Gebühren abziehen.</li>
<li>Es wird keine steuerlich abzugsfähige Spendenbescheinigung versprochen.</li> <li>Es wird keine steuerlich abzugsfähige Bescheinigung versprochen.</li>
<li>Bei versehentlicher Zahlung besteht eine Kontaktmöglichkeit zur Prüfung einer Rückerstattung ({legal.supportEmail}).</li> <li>Bei versehentlicher Zahlung besteht eine Kontaktmöglichkeit zur Prüfung einer Rückerstattung ({legal.supportEmail}).</li>
<li>Es wird keine Gemeinnützigkeit oder Steuerbefreiung behauptet, solange diese nicht schriftlich bestätigt ist.</li> <li>Es wird keine Gemeinnützigkeit oder Steuerbefreiung behauptet, solange diese nicht schriftlich bestätigt ist.</li>
</ul> </ul>

View File

@@ -333,8 +333,8 @@ export default function LandingPage() {
Hinter jeder Funktion stecken Stunden an Entwicklung, Testing und Feinschliff. Hinter jeder Funktion stecken Stunden an Entwicklung, Testing und Feinschliff.
Server-Hosting, Domain, SSL-Zertifikate das alles kostet. Ich finanziere das aktuell Server-Hosting, Domain, SSL-Zertifikate das alles kostet. Ich finanziere das aktuell
komplett aus eigener Tasche, weil mir das Projekt am Herzen liegt. komplett aus eigener Tasche, weil mir das Projekt am Herzen liegt.
Wenn du Lageplan nützlich findest, kannst du die Weiterentwicklung mit einer freiwilligen Wenn du Lageplan nützlich findest, kannst du die Weiterentwicklung mit einem freiwilligen
Spende unterstützen. Jeder Beitrag hilft, neue Features zu bauen und die Server am Laufen zu halten. Beitrag unterstützen. Jeder Beitrag hilft, neue Features zu bauen und die Server am Laufen zu halten.
</p> </p>
</div> </div>
</div> </div>
@@ -586,7 +586,7 @@ function SupportSection() {
<Link href="/spenden"> <Link href="/spenden">
<Button className="bg-red-600 hover:bg-red-700 h-12 text-base px-8"> <Button className="bg-red-600 hover:bg-red-700 h-12 text-base px-8">
<Heart className="w-4 h-4 mr-2" /> <Heart className="w-4 h-4 mr-2" />
Zur Spendenseite Zur Unterstützungsseite
</Button> </Button>
</Link> </Link>
</div> </div>

View File

@@ -30,7 +30,7 @@ export default function DankePage() {
</h1> </h1>
<p className="text-xl text-gray-500 mb-2"> <p className="text-xl text-gray-500 mb-2">
Deine Spende ist angekommen. Dein Beitrag ist angekommen.
</p> </p>
<p className="text-gray-400 mb-10 max-w-md mx-auto"> <p className="text-gray-400 mb-10 max-w-md mx-auto">
Dein Beitrag hilft direkt dabei, Lageplan weiterzuentwickeln und die Server am Laufen zu halten. Dein Beitrag hilft direkt dabei, Lageplan weiterzuentwickeln und die Server am Laufen zu halten.
@@ -40,7 +40,7 @@ export default function DankePage() {
<div className="bg-red-50 rounded-2xl p-8 border border-red-100 mb-10"> <div className="bg-red-50 rounded-2xl p-8 border border-red-100 mb-10">
<Heart className="w-8 h-8 text-red-500 mx-auto mb-3" /> <Heart className="w-8 h-8 text-red-500 mx-auto mb-3" />
<p className="text-gray-700 font-medium"> <p className="text-gray-700 font-medium">
&laquo;Jede Spende motiviert mich, weiterzumachen. Danke von Herzen!&raquo; &laquo;Jeder Beitrag motiviert mich, weiterzumachen. Danke von Herzen!&raquo;
</p> </p>
<p className="text-sm text-gray-500 mt-2"> Pepe Ziberi, Entwickler von Lageplan</p> <p className="text-sm text-gray-500 mt-2"> Pepe Ziberi, Entwickler von Lageplan</p>
</div> </div>

View File

@@ -1,8 +1,8 @@
import type { Metadata } from 'next' import type { Metadata } from 'next'
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'Spenden', title: 'Unterstützen',
description: 'Unterstützen Sie die Weiterentwicklung von Lageplan.ch der kostenlosen Krokier-App für Schweizer Feuerwehren.', description: 'Freiwilliger Unterstützungsbeitrag für die Weiterentwicklung von Lageplan.ch der kostenlosen Krokier-App für Schweizer Feuerwehren.',
robots: { index: true, follow: true }, robots: { index: true, follow: true },
} }

View File

@@ -85,7 +85,7 @@ export default function SpendenPage() {
<h1 className="text-4xl font-extrabold text-gray-900 mb-4">Lageplan unterstützen</h1> <h1 className="text-4xl font-extrabold text-gray-900 mb-4">Lageplan unterstützen</h1>
<p className="text-lg text-gray-500 max-w-xl mx-auto"> <p className="text-lg text-gray-500 max-w-xl mx-auto">
Lageplan ist ein kostenloses Herzensprojekt von einem Feuerwehrmann für Feuerwehrleute. Lageplan ist ein kostenloses Herzensprojekt von einem Feuerwehrmann für Feuerwehrleute.
Mit deiner Spende hilfst du, die Weiterentwicklung und den Betrieb zu finanzieren. Mit deinem freiwilligen Beitrag hilfst du, die Weiterentwicklung und den Betrieb zu finanzieren.
</p> </p>
</div> </div>
@@ -94,7 +94,7 @@ export default function SpendenPage() {
<div className="flex items-start gap-4"> <div className="flex items-start gap-4">
<Lightbulb className="w-7 h-7 text-red-500 shrink-0 mt-0.5" /> <Lightbulb className="w-7 h-7 text-red-500 shrink-0 mt-0.5" />
<div> <div>
<h3 className="font-bold text-gray-900 mb-2">Wohin fliesst deine Spende?</h3> <h3 className="font-bold text-gray-900 mb-2">Wohin fliesst dein Beitrag?</h3>
<ul className="space-y-2 text-sm text-gray-600"> <ul className="space-y-2 text-sm text-gray-600">
<li className="flex items-center gap-2"><Shield className="w-4 h-4 text-red-500 shrink-0" /> Server-Hosting und Infrastruktur (monatliche Kosten)</li> <li className="flex items-center gap-2"><Shield className="w-4 h-4 text-red-500 shrink-0" /> Server-Hosting und Infrastruktur (monatliche Kosten)</li>
<li className="flex items-center gap-2"><Sparkles className="w-4 h-4 text-red-500 shrink-0" /> Entwicklung neuer Features (PWA, Vorlagen, Einsatzpläne)</li> <li className="flex items-center gap-2"><Sparkles className="w-4 h-4 text-red-500 shrink-0" /> Entwicklung neuer Features (PWA, Vorlagen, Einsatzpläne)</li>
@@ -206,7 +206,7 @@ export default function SpendenPage() {
{/* CTA */} {/* CTA */}
{stripeConfigured === false ? ( {stripeConfigured === false ? (
<div className="bg-yellow-50 border border-yellow-200 text-yellow-800 rounded-lg p-4 text-sm text-center"> <div className="bg-yellow-50 border border-yellow-200 text-yellow-800 rounded-lg p-4 text-sm text-center">
Spenden sind aktuell nicht möglich. Die Zahlungsabwicklung wird gerade eingerichtet. Beiträge sind aktuell nicht möglich. Die Zahlungsabwicklung wird gerade eingerichtet.
</div> </div>
) : ( ) : (
<Button <Button
@@ -217,7 +217,7 @@ export default function SpendenPage() {
{isLoading ? ( {isLoading ? (
<><Loader2 className="w-4 h-4 mr-2 animate-spin" /> Weiterleitung zu Stripe...</> <><Loader2 className="w-4 h-4 mr-2 animate-spin" /> Weiterleitung zu Stripe...</>
) : ( ) : (
<><Heart className="w-4 h-4 mr-2" /> CHF {amount} spenden</> <><Heart className="w-4 h-4 mr-2" /> CHF {amount} beitragen</>
)} )}
</Button> </Button>
)} )}
@@ -236,7 +236,7 @@ export default function SpendenPage() {
freiwillig und erfolgt ohne Anspruch auf eine Gegenleistung. Daraus entsteht insbesondere kein freiwillig und erfolgt ohne Anspruch auf eine Gegenleistung. Daraus entsteht insbesondere kein
Anspruch auf Funktionen, Support, Verfügbarkeit, bevorzugte Behandlung oder eine bestimmte Anspruch auf Funktionen, Support, Verfügbarkeit, bevorzugte Behandlung oder eine bestimmte
Weiterentwicklung. Zahlungs- und Transaktionsgebühren des Zahlungsanbieters (Stripe) können vom Weiterentwicklung. Zahlungs- und Transaktionsgebühren des Zahlungsanbieters (Stripe) können vom
Beitrag abgezogen werden. Es wird keine steuerlich abzugsfähige Spendenbescheinigung ausgestellt, Beitrag abgezogen werden. Es wird keine steuerlich abzugsfähige Bescheinigung ausgestellt,
solange keine entsprechende behördliche Anerkennung besteht. Es handelt sich um eine einmalige solange keine entsprechende behördliche Anerkennung besteht. Es handelt sich um eine einmalige
Zahlung; es wird keine wiederkehrende Zahlung eingerichtet. Details zur Zahlungsabwicklung siehe{' '} Zahlung; es wird keine wiederkehrende Zahlung eingerichtet. Details zur Zahlungsabwicklung siehe{' '}
<Link href="/datenschutz" className="text-red-600 underline">Datenschutzerklärung</Link>. <Link href="/datenschutz" className="text-red-600 underline">Datenschutzerklärung</Link>.

View File

@@ -22,7 +22,7 @@ export default function UnterstuetzenPage() {
</p> </p>
<p> <p>
Zahlungs- und Transaktionsgebühren des eingesetzten Zahlungsanbieters (Stripe) können vom Beitrag Zahlungs- und Transaktionsgebühren des eingesetzten Zahlungsanbieters (Stripe) können vom Beitrag
abgezogen werden. {legal.projectName} stellt keine steuerlich abzugsfähige Spendenbescheinigung aus, abgezogen werden. {legal.projectName} stellt keine steuerlich abzugsfähige Bescheinigung aus,
solange keine entsprechende behördliche Anerkennung besteht. solange keine entsprechende behördliche Anerkennung besteht.
</p> </p>
<p> <p>

View File

@@ -284,10 +284,10 @@ export function SettingsTab({ onNavigateTab }: SettingsTabProps) {
<div className="border rounded-lg p-6 md:col-span-2"> <div className="border rounded-lg p-6 md:col-span-2">
<h3 className="font-semibold text-lg mb-4 flex items-center gap-2"> <h3 className="font-semibold text-lg mb-4 flex items-center gap-2">
<CreditCard className="w-5 h-5 text-primary" /> <CreditCard className="w-5 h-5 text-primary" />
Stripe / Spenden-Konfiguration Stripe / Unterstützungs-Konfiguration
</h3> </h3>
<p className="text-sm text-muted-foreground mb-4"> <p className="text-sm text-muted-foreground mb-4">
Stripe API-Keys für die Spendenseite konfigurieren. Unterstützt Kreditkarte, Twint und weitere Zahlungsmethoden. Stripe API-Keys für die Unterstützungsseite konfigurieren. Unterstützt Kreditkarte, Twint und weitere Zahlungsmethoden.
Keys findest du im <a href="https://dashboard.stripe.com/apikeys" target="_blank" rel="noopener noreferrer" className="text-primary underline">Stripe Dashboard</a>. Keys findest du im <a href="https://dashboard.stripe.com/apikeys" target="_blank" rel="noopener noreferrer" className="text-primary underline">Stripe Dashboard</a>.
</p> </p>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4"> <div className="grid grid-cols-1 md:grid-cols-2 gap-4">