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",
"version": "1.7.6",
"version": "1.7.7",
"description": "Feuerwehr Lageplan - Krokier-App für Einsatzdokumentation",
"private": true,
"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="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="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>
)}
@@ -169,14 +169,14 @@ export default function AdminPage() {
<h3 className="font-semibold text-lg">Lageplan unterstützen</h3>
<p className="text-sm text-muted-foreground mt-1">
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.
</p>
</div>
</div>
<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">
<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>
@@ -188,7 +188,7 @@ export default function AdminPage() {
<Button asChild>
<a href="/spenden" target="_blank" rel="noopener noreferrer">
<Heart className="w-4 h-4 mr-2" />
Jetzt spenden
Jetzt unterstützen
</a>
</Button>
<Button variant="outline" asChild>

View File

@@ -27,8 +27,8 @@ export async function POST(req: NextRequest) {
price_data: {
currency: 'chf',
product_data: {
name: 'Spende für Lageplan',
description: `Freiwillige Spende von CHF ${amount} für die Weiterentwicklung`,
name: 'Freiwilliger Unterstützungsbeitrag für Lageplan',
description: `Freiwilliger Unterstützungsbeitrag von CHF ${amount} für die Weiterentwicklung`,
},
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 begründen keinen Anspruch auf Funktionen, Support, Verfügbarkeit oder bevorzugte Behandlung.</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>Es wird keine Gemeinnützigkeit oder Steuerbefreiung behauptet, solange diese nicht schriftlich bestätigt ist.</li>
</ul>

View File

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

View File

@@ -30,7 +30,7 @@ export default function DankePage() {
</h1>
<p className="text-xl text-gray-500 mb-2">
Deine Spende ist angekommen.
Dein Beitrag ist angekommen.
</p>
<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.
@@ -40,7 +40,7 @@ export default function DankePage() {
<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" />
<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 className="text-sm text-gray-500 mt-2"> Pepe Ziberi, Entwickler von Lageplan</p>
</div>

View File

@@ -1,8 +1,8 @@
import type { Metadata } from 'next'
export const metadata: Metadata = {
title: 'Spenden',
description: 'Unterstützen Sie die Weiterentwicklung von Lageplan.ch der kostenlosen Krokier-App für Schweizer Feuerwehren.',
title: 'Unterstützen',
description: 'Freiwilliger Unterstützungsbeitrag für die Weiterentwicklung von Lageplan.ch der kostenlosen Krokier-App für Schweizer Feuerwehren.',
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>
<p className="text-lg text-gray-500 max-w-xl mx-auto">
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>
</div>
@@ -94,7 +94,7 @@ export default function SpendenPage() {
<div className="flex items-start gap-4">
<Lightbulb className="w-7 h-7 text-red-500 shrink-0 mt-0.5" />
<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">
<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>
@@ -206,7 +206,7 @@ export default function SpendenPage() {
{/* CTA */}
{stripeConfigured === false ? (
<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>
) : (
<Button
@@ -217,7 +217,7 @@ export default function SpendenPage() {
{isLoading ? (
<><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>
)}
@@ -236,7 +236,7 @@ export default function SpendenPage() {
freiwillig und erfolgt ohne Anspruch auf eine Gegenleistung. Daraus entsteht insbesondere kein
Anspruch auf Funktionen, Support, Verfügbarkeit, bevorzugte Behandlung oder eine bestimmte
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
Zahlung; es wird keine wiederkehrende Zahlung eingerichtet. Details zur Zahlungsabwicklung siehe{' '}
<Link href="/datenschutz" className="text-red-600 underline">Datenschutzerklärung</Link>.

View File

@@ -22,7 +22,7 @@ export default function UnterstuetzenPage() {
</p>
<p>
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.
</p>
<p>

View File

@@ -284,10 +284,10 @@ export function SettingsTab({ onNavigateTab }: SettingsTabProps) {
<div className="border rounded-lg p-6 md:col-span-2">
<h3 className="font-semibold text-lg mb-4 flex items-center gap-2">
<CreditCard className="w-5 h-5 text-primary" />
Stripe / Spenden-Konfiguration
Stripe / Unterstützungs-Konfiguration
</h3>
<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>.
</p>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">