feat: complete CMS v2 with Docker, Fischerei, Meetings, Verband modules + UX audit fixes
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 6m26s
Workflow / ⚫️ Test (push) Has been skipped

Major changes:
- Docker Compose: full Supabase stack (11 services) equivalent to supabase CLI
- Fischerei module: 16 DB tables, waters/species/stocking/catch books/competitions
- Sitzungsprotokolle module: meeting protocols, agenda items, task tracking
- Verbandsverwaltung module: federation management, member clubs, contacts, fees
- Per-account module activation via Modules page toggle
- Site Builder: live CMS data in Puck blocks (courses, events, membership registration)
- Public registration APIs: course signup, event registration, membership application
- Document generation: PDF member cards, Excel reports, HTML labels
- Landing page: real Com.BISS content (no filler text)
- UX audit fixes: AccountNotFound component, shared status badges, confirm dialog,
  pagination, duplicate heading removal, emoji→badge replacement, a11y fixes
- QA: healthcheck fix, API auth fix, enum mismatch fix, password required attribute
This commit is contained in:
Zaid Marzguioui
2026-03-31 16:35:46 +02:00
parent 16648c92eb
commit ebd0fd4638
176 changed files with 17133 additions and 981 deletions

View File

@@ -170,7 +170,34 @@
"holidayPasses": "Ferienpässe",
"eventDate": "Datum",
"eventLocation": "Ort",
"capacity": "Plätze"
"capacity": "Plätze",
"allEvents": "Alle Veranstaltungen",
"locations": "Orte",
"totalCapacity": "Kapazität gesamt",
"noEvents": "Keine Veranstaltungen vorhanden",
"noEventsDescription": "Erstellen Sie Ihre erste Veranstaltung, um loszulegen.",
"name": "Name",
"status": "Status",
"paginationPage": "Seite {page} von {totalPages}",
"paginationPrevious": "Vorherige",
"paginationNext": "Nächste",
"registrationsOverview": "Anmeldungen aller Veranstaltungen im Überblick",
"totalRegistrations": "Anmeldungen gesamt",
"withRegistrations": "Mit Anmeldungen",
"overviewByEvent": "Übersicht nach Veranstaltung",
"noEventsForRegistrations": "Erstellen Sie eine Veranstaltung, um Anmeldungen zu erhalten.",
"utilization": "Auslastung",
"event": "Veranstaltung",
"holidayPassesDescription": "Ferienpässe und Ferienprogramme verwalten",
"newHolidayPass": "Neuer Ferienpass",
"noHolidayPasses": "Keine Ferienpässe vorhanden",
"noHolidayPassesDescription": "Erstellen Sie Ihren ersten Ferienpass.",
"allHolidayPasses": "Alle Ferienpässe",
"year": "Jahr",
"price": "Preis",
"validFrom": "Gültig von",
"validUntil": "Gültig bis",
"newEventDescription": "Veranstaltung oder Ferienprogramm anlegen"
},
"finance": {
"title": "Finanzen",
@@ -259,7 +286,15 @@
"finance.write": "Finanzen bearbeiten",
"finance.sepa": "SEPA-Einzüge ausführen",
"documents.generate": "Dokumente generieren",
"newsletter.send": "Newsletter versenden"
"newsletter.send": "Newsletter versenden",
"fischerei.read": "Fischerei lesen",
"fischerei.write": "Fischerei bearbeiten",
"meetings.read": "Sitzungsprotokolle lesen",
"meetings.write": "Sitzungsprotokolle bearbeiten",
"meetings.delete": "Sitzungsprotokolle löschen",
"verband.read": "Verbandsverwaltung lesen",
"verband.write": "Verbandsverwaltung bearbeiten",
"verband.delete": "Verbandsverwaltung löschen"
},
"status": {
"active": "Aktiv",
@@ -267,5 +302,477 @@
"archived": "Archiviert",
"locked": "Gesperrt",
"deleted": "Gelöscht"
},
"fischerei": {
"title": "Fischerei",
"description": "Gewässer, Fischarten, Besatz, Pachten, Fangbücher und Wettbewerbe verwalten",
"dashboard": {
"title": "Übersicht",
"watersCount": "Gewässer",
"speciesCount": "Fischarten",
"activeLeases": "Aktive Pachten",
"pendingCatchBooks": "Offene Fangbücher",
"upcomingCompetitions": "Kommende Wettbewerbe",
"stockingCostYtd": "Besatzkosten (lfd. Jahr)",
"recentStocking": "Letzte Besatzaktionen",
"pendingReview": "Zur Prüfung ausstehend"
},
"waters": {
"title": "Gewässer",
"newWater": "Neues Gewässer",
"editWater": "Gewässer bearbeiten",
"name": "Name",
"shortName": "Kurzname",
"waterType": "Gewässertyp",
"description": "Beschreibung",
"surfaceArea": "Fläche (ha)",
"length": "Länge (m)",
"width": "Breite (m)",
"avgDepth": "Durchschnittstiefe (m)",
"maxDepth": "Maximaltiefe (m)",
"outflow": "Abfluss",
"location": "Lage/Standort",
"county": "Landkreis",
"gpsCoordinates": "GPS-Koordinaten",
"lfvNumber": "LFV-Nummer",
"lfvName": "LFV-Name",
"costShares": "Kostenanteile",
"electrofishing": "Elektrofischerei-Genehmigung beantragt",
"costCenter": "Kostenstelle",
"archived": "Archiviert",
"showArchived": "Archivierte anzeigen",
"speciesRules": "Fischarten & Regelungen",
"stockingHistory": "Besatzhistorie",
"leases": "Pachten",
"inspectors": "Kontrolleure",
"map": "Karte",
"catchStats": "Fangstatistik",
"waterTypes": {
"fluss": "Fluss",
"bach": "Bach",
"see": "See",
"teich": "Teich",
"weiher": "Weiher",
"kanal": "Kanal",
"stausee": "Stausee",
"baggersee": "Baggersee",
"sonstige": "Sonstige"
},
"basicData": "Grunddaten",
"dimensions": "Abmessungen",
"geography": "Geografie",
"administration": "Verwaltung"
},
"species": {
"title": "Fischarten",
"newSpecies": "Neue Fischart",
"editSpecies": "Fischart bearbeiten",
"name": "Name",
"nameLatin": "Lateinischer Name",
"nameLocal": "Lokaler Name",
"maxAge": "Max. Alter (Jahre)",
"maxWeight": "Max. Gewicht (kg)",
"maxLength": "Max. Länge (cm)",
"protectedMinSize": "Schonmaß (cm)",
"protectionPeriod": "Schonzeit",
"protectionStart": "Schonzeit Beginn (MM.TT)",
"protectionEnd": "Schonzeit Ende (MM.TT)",
"spawningSeason": "Sonderschonzeit (SZG)",
"kFactor": "K-Faktor",
"kFactorAvg": "K-Faktor (Durchschnitt)",
"kFactorMin": "K-Faktor (Min)",
"kFactorMax": "K-Faktor (Max)",
"pricePerUnit": "Preis pro Einheit",
"maxCatchPerDay": "Max. Fang/Tag",
"maxCatchPerYear": "Max. Fang/Jahr",
"individualRecording": "Einzelerfassung",
"active": "Aktiv",
"biometrics": "Biometrische Daten",
"protection": "Schutzbestimmungen",
"quotas": "Fangbegrenzungen"
},
"stocking": {
"title": "Besatz",
"newStocking": "Besatz eintragen",
"date": "Besatzdatum",
"water": "Gewässer",
"species": "Fischart",
"quantity": "Anzahl (Stück)",
"weight": "Gewicht (kg)",
"ageClass": "Altersklasse",
"cost": "Kosten (EUR)",
"supplier": "Lieferant",
"remarks": "Bemerkungen",
"ageClasses": {
"brut": "Brut",
"soemmerlinge": "Sömmerlinge",
"einsoemmerig": "1-sömmrig",
"zweisoemmerig": "2-sömmrig",
"dreisoemmerig": "3-sömmrig",
"vorgestreckt": "Vorgestreckt",
"setzlinge": "Setzlinge",
"laichfische": "Laichfische",
"sonstige": "Sonstige"
},
"totalCost": "Gesamtkosten",
"totalQuantity": "Gesamtmenge"
},
"leases": {
"title": "Pachten",
"newLease": "Neue Pacht",
"editLease": "Pacht bearbeiten",
"lessor": "Verpächter",
"lessorAddress": "Adresse des Verpächters",
"startDate": "Beginn",
"endDate": "Ende",
"duration": "Laufzeit (Jahre)",
"initialAmount": "Anfangsbetrag (EUR)",
"fixedIncrease": "Feste jährl. Erhöhung (EUR)",
"percentageIncrease": "Prozentuale jährl. Erhöhung (%)",
"paymentMethod": "Zahlungsart",
"specialAgreements": "Sondervereinbarungen",
"currentAmount": "Aktueller Jahresbetrag",
"paymentMethods": {
"bar": "Bar",
"lastschrift": "Lastschrift",
"ueberweisung": "Überweisung"
}
},
"catchBooks": {
"title": "Fangbücher",
"newCatchBook": "Neues Fangbuch",
"member": "Mitglied",
"year": "Jahr",
"fishingDays": "Angeltage",
"totalCatches": "Gesamtfänge",
"status": "Status",
"verification": "Bewertung",
"submit": "Einreichen",
"review": "Prüfen",
"approve": "Akzeptieren",
"reject": "Ablehnen",
"submitted": "Eingereicht am",
"checked": "Geprüft",
"flyFisher": "Fliegenfischer",
"cardNumbers": "Erlaubnisschein-Nr.",
"statuses": {
"offen": "Offen",
"eingereicht": "Eingereicht",
"geprueft": "Geprüft",
"akzeptiert": "Akzeptiert",
"abgelehnt": "Abgelehnt"
},
"verifications": {
"sehrgut": "Sehr gut",
"gut": "Gut",
"ok": "OK",
"schlecht": "Schlecht",
"falsch": "Falsch",
"leer": "Leer"
}
},
"catches": {
"title": "Fänge",
"newCatch": "Fang eintragen",
"date": "Datum",
"species": "Fischart",
"water": "Gewässer",
"quantity": "Anzahl",
"length": "Länge (cm)",
"weight": "Gewicht (g)",
"kFactor": "K-Faktor",
"sizeCategory": "Größenkategorie",
"gender": "Geschlecht",
"permit": "Erlaubnisschein"
},
"permits": {
"title": "Erlaubnisscheine",
"newPermit": "Neuer Erlaubnisschein",
"name": "Bezeichnung",
"shortCode": "Kurzcode",
"primaryWater": "Hauptgewässer",
"totalQuantity": "Gesamtmenge",
"forSale": "Zum Verkauf",
"quotas": "Kontingente"
},
"inspectors": {
"title": "Gewässer-Kontrolleure",
"assignInspector": "Kontrolleur zuweisen",
"removeInspector": "Kontrolleur entfernen",
"assignmentStart": "Beginn",
"assignmentEnd": "Ende"
},
"competitions": {
"title": "Wettbewerbe",
"newCompetition": "Neuer Wettbewerb",
"name": "Bezeichnung",
"date": "Datum",
"water": "Gewässer",
"maxParticipants": "Max. Teilnehmer",
"scoring": "Wertung",
"scoreByCount": "Nach Anzahl",
"scoreByHeaviest": "Nach Schwerster",
"scoreByTotalWeight": "Nach Gesamtgewicht",
"scoreByLongest": "Nach Längstem",
"scoreByTotalLength": "Nach Gesamtlänge",
"participants": "Teilnehmer",
"addParticipant": "Teilnehmer hinzufügen",
"results": "Ergebnisse",
"computeResults": "Ergebnisse berechnen",
"categories": "Kategorien",
"rank": "Platz"
},
"suppliers": {
"title": "Lieferanten",
"newSupplier": "Neuer Lieferant",
"name": "Name",
"contactPerson": "Ansprechpartner",
"phone": "Telefon",
"email": "E-Mail",
"address": "Adresse"
},
"statistics": {
"title": "Statistiken",
"catchesBySpecies": "Fänge nach Fischart",
"catchesByWater": "Fänge nach Gewässer",
"catchesByYear": "Fänge nach Jahr",
"stockingOverview": "Besatzübersicht",
"totalCatches": "Gesamtfänge",
"totalWeight": "Gesamtgewicht (kg)",
"avgLength": "Durchschn. Länge (cm)",
"avgKFactor": "Durchschn. K-Faktor",
"filterYear": "Jahr filtern",
"filterWater": "Gewässer filtern"
},
"export": {
"exportStocking": "Besatz exportieren",
"exportCatches": "Fänge exportieren",
"formatCsv": "CSV",
"formatExcel": "Excel"
}
},
"meetings": {
"title": "Sitzungsprotokolle",
"description": "Sitzungen, Tagesordnungspunkte und Beschlüsse verwalten",
"dashboard": {
"title": "Übersicht",
"totalMeetings": "Sitzungen gesamt",
"openDecisions": "Offene Beschlüsse",
"upcomingMeetings": "Kommende Sitzungen",
"recentProtocols": "Letzte Protokolle"
},
"bodies": {
"title": "Gremien",
"newBody": "Neues Gremium",
"editBody": "Gremium bearbeiten",
"deleteBody": "Gremium löschen",
"name": "Name",
"shortName": "Kurzname",
"description": "Beschreibung",
"chairperson": "Vorsitzende(r)",
"members": "Mitglieder",
"meetingCycle": "Sitzungszyklus",
"active": "Aktiv",
"cycles": {
"weekly": "Wöchentlich",
"biweekly": "Zweiwöchentlich",
"monthly": "Monatlich",
"quarterly": "Vierteljährlich",
"biannual": "Halbjährlich",
"annual": "Jährlich",
"asNeeded": "Nach Bedarf"
}
},
"sessions": {
"title": "Sitzungen",
"newSession": "Neue Sitzung",
"editSession": "Sitzung bearbeiten",
"deleteSession": "Sitzung löschen",
"body": "Gremium",
"date": "Datum",
"startTime": "Beginn",
"endTime": "Ende",
"location": "Ort",
"status": "Status",
"agenda": "Tagesordnung",
"protocol": "Protokoll",
"attendees": "Anwesende",
"absentees": "Abwesende",
"guests": "Gäste",
"recorder": "Protokollführer(in)",
"statuses": {
"planned": "Geplant",
"inProgress": "Laufend",
"completed": "Abgeschlossen",
"cancelled": "Abgesagt"
}
},
"agendaItems": {
"title": "Tagesordnungspunkte",
"newItem": "Neuer TOP",
"editItem": "TOP bearbeiten",
"deleteItem": "TOP löschen",
"number": "TOP-Nr.",
"subject": "Betreff",
"description": "Beschreibung",
"presenter": "Berichterstatter(in)",
"duration": "Dauer (Min.)",
"type": "Art",
"attachments": "Anlagen",
"notes": "Notizen",
"types": {
"information": "Information",
"discussion": "Diskussion",
"decision": "Beschluss",
"election": "Wahl",
"report": "Bericht",
"miscellaneous": "Verschiedenes"
}
},
"decisions": {
"title": "Beschlüsse",
"newDecision": "Neuer Beschluss",
"editDecision": "Beschluss bearbeiten",
"deleteDecision": "Beschluss löschen",
"number": "Beschluss-Nr.",
"subject": "Betreff",
"text": "Beschlusstext",
"result": "Ergebnis",
"votesFor": "Ja-Stimmen",
"votesAgainst": "Nein-Stimmen",
"abstentions": "Enthaltungen",
"responsible": "Verantwortlich",
"deadline": "Frist",
"status": "Status",
"remarks": "Bemerkungen",
"results": {
"accepted": "Angenommen",
"rejected": "Abgelehnt",
"deferred": "Vertagt",
"withdrawn": "Zurückgezogen"
},
"statuses": {
"open": "Offen",
"inProgress": "In Bearbeitung",
"completed": "Erledigt",
"overdue": "Überfällig"
}
},
"attendance": {
"title": "Anwesenheit",
"present": "Anwesend",
"absent": "Abwesend",
"excused": "Entschuldigt",
"arrivedLate": "Verspätet erschienen",
"leftEarly": "Vorzeitig gegangen"
},
"protocol": {
"generate": "Protokoll generieren",
"preview": "Vorschau",
"export": "Exportieren",
"sign": "Unterschreiben",
"finalize": "Fertigstellen",
"formatPdf": "PDF",
"formatDocx": "Word"
}
},
"verband": {
"title": "Verbandsverwaltung",
"description": "Mitgliedsvereine, Kontaktpersonen, Beiträge und Statistiken verwalten",
"dashboard": {
"title": "Übersicht",
"totalClubs": "Mitgliedsvereine gesamt",
"totalMembers": "Mitglieder gesamt",
"pendingDues": "Ausstehende Beiträge",
"upcomingEvents": "Kommende Veranstaltungen"
},
"clubs": {
"title": "Mitgliedsvereine",
"newClub": "Neuer Verein",
"editClub": "Verein bearbeiten",
"deleteClub": "Verein löschen",
"name": "Vereinsname",
"shortName": "Kurzname",
"number": "Vereinsnummer",
"address": "Adresse",
"postalCode": "PLZ",
"city": "Ort",
"phone": "Telefon",
"email": "E-Mail",
"website": "Webseite",
"founded": "Gründungsjahr",
"memberCount": "Mitgliederzahl",
"joinedDate": "Beitrittsdatum",
"status": "Status",
"contacts": "Kontaktpersonen",
"dues": "Beiträge",
"notes": "Bemerkungen",
"statuses": {
"active": "Aktiv",
"inactive": "Inaktiv",
"suspended": "Ruhend",
"withdrawn": "Ausgetreten"
}
},
"contacts": {
"title": "Kontaktpersonen",
"newContact": "Neue Kontaktperson",
"editContact": "Kontaktperson bearbeiten",
"deleteContact": "Kontaktperson löschen",
"firstName": "Vorname",
"lastName": "Nachname",
"role": "Funktion",
"phone": "Telefon",
"email": "E-Mail",
"isPrimary": "Hauptkontakt",
"roles": {
"chairman": "Vorsitzende(r)",
"viceChairman": "Stellv. Vorsitzende(r)",
"treasurer": "Kassenwart(in)",
"secretary": "Schriftführer(in)",
"youthLeader": "Jugendleiter(in)",
"boardMember": "Vorstandsmitglied",
"delegate": "Delegierte(r)",
"other": "Sonstige"
}
},
"dues": {
"title": "Beiträge",
"newDue": "Neuer Beitrag",
"editDue": "Beitrag bearbeiten",
"year": "Jahr",
"amount": "Betrag (EUR)",
"dueDate": "Fälligkeitsdatum",
"paidDate": "Bezahlt am",
"status": "Status",
"invoiceNumber": "Rechnungsnummer",
"remarks": "Bemerkungen",
"statuses": {
"open": "Offen",
"paid": "Bezahlt",
"overdue": "Überfällig",
"waived": "Erlassen",
"partial": "Teilbezahlt"
},
"bulkCreate": "Beiträge generieren",
"bulkCreateDescription": "Beiträge für alle aktiven Vereine erstellen",
"totalOpen": "Gesamt offen",
"totalPaid": "Gesamt bezahlt"
},
"statistics": {
"title": "Statistiken",
"membersByClub": "Mitglieder nach Verein",
"membersTrend": "Mitgliederentwicklung",
"duesOverview": "Beitragsübersicht",
"clubsByRegion": "Vereine nach Region",
"filterYear": "Jahr filtern"
},
"export": {
"exportClubs": "Vereine exportieren",
"exportContacts": "Kontaktpersonen exportieren",
"exportDues": "Beiträge exportieren",
"formatCsv": "CSV",
"formatExcel": "Excel"
}
}
}

View File

@@ -75,7 +75,10 @@
"documents": "Dokumente",
"newsletter": "Newsletter",
"events": "Veranstaltungen",
"siteBuilder": "Website"
"siteBuilder": "Website",
"fischerei": "Fischerei",
"meetings": "Sitzungsprotokolle",
"verband": "Verbandsverwaltung"
},
"roles": {
"owner": {

View File

@@ -31,8 +31,8 @@
"privacyPolicy": "Datenschutzerklärung",
"privacyPolicyDescription": "Unsere Datenschutzerklärung und Datennutzung",
"contactDescription": "Kontaktieren Sie uns bei Fragen oder Feedback",
"contactHeading": "Senden Sie uns eine Nachricht",
"contactSubheading": "Wir melden uns schnellstmöglich bei Ihnen",
"contactHeading": "Wir sind für Sie da",
"contactSubheading": "Persönliche Beratung, Testzugänge und individuelle Angebote — sprechen Sie uns an.",
"contactName": "Ihr Name",
"contactEmail": "Ihre E-Mail-Adresse",
"contactMessage": "Ihre Nachricht",
@@ -41,78 +41,78 @@
"contactError": "Fehler beim Senden Ihrer Nachricht",
"contactSuccessDescription": "Wir haben Ihre Nachricht erhalten und melden uns schnellstmöglich",
"contactErrorDescription": "Beim Senden ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut",
"footerDescription": "Die All-in-One-Verwaltungsplattform für Vereine, Clubs und Organisationen. Entwickelt von Com.BISS GmbH.",
"copyright": Copyright {year} {product}. Alle Rechte vorbehalten.",
"footerDescription": "Vereins- und Verbandsverwaltung aus Bayern — persönlich, zuverlässig und fair seit 2004. Entwickelt von Com.BISS GmbH, Schierling.",
"copyright": 2004{year} Com.BISS GmbH. Alle Rechte vorbehalten.",
"heroPill": "Die nächste Generation der Vereinsverwaltung",
"heroTitle": "Verwalten Sie Ihre Organisation. Einfach und effizient.",
"heroSubtitle": "MyEasyCMS ist die All-in-One-Plattform für Vereine, Clubs und Organisationen. Verwalten Sie Mitglieder, Kurse, Veranstaltungen, Finanzen und mehr — alles an einem Ort.",
"heroPill": "Seit 2004 — 22 Jahre Erfahrung",
"heroTitle": "Vereinsverwaltung, die mitwächst",
"heroSubtitle": "Von der Mitgliederverwaltung bis zum SEPA-Einzug — die Software, der Vereine und Verbände in ganz Bayern seit zwei Jahrzehnten vertrauen. 69.000 verwaltete Mitglieder, 90+ angebundene Vereine.",
"trustedBy": "Vertraut von Vereinen und Clubs in ganz Deutschland",
"trustAssociations": "Vereine",
"trustSchools": "Bildungseinrichtungen",
"trustClubs": "Sport- & Angelvereine",
"trustOrganizations": "Gemeinnützige Organisationen",
"trustedBy": "Vertraut von Vereinen und Verbänden in ganz Bayern",
"trustAssociations": "3 Bezirksfischereiverbände",
"trustSchools": "VHS & Bildungseinrichtungen",
"trustClubs": "90+ Vereine angebunden",
"trustOrganizations": "Stadt Regensburg seit 2010",
"featuresHeading": "Alles, was Ihre Organisation braucht",
"featuresSubheading": "Von der Mitgliederverwaltung bis zur Finanzbuchhaltung — alle Werkzeuge in einer modernen, benutzerfreundlichen Plattform.",
"featuresHeading": "Alles, was Ihr Verein braucht",
"featuresSubheading": "MYeasyCMS wurde speziell für die Bedürfnisse von Vereinen und Verbänden entwickelt — modular aufgebaut, webbasiert und über jeden Browser nutzbar.",
"featuresLabel": "Kernmodule",
"featureMembersTitle": "Mitgliederverwaltung",
"featureMembersDesc": "Verwalten Sie alle Mitglieder mit Abteilungen, Beitragsverfolgung, Mitgliedsausweisen, Anträgen und detaillierten Statistiken.",
"featureMembersDesc": "Stammdaten, Kontaktinformationen, Mandate, Ehrungen, Historie und Notizen — alles an einem Ort. Mit Abteilungen, Beitragsverfolgung und Mitgliedsausweisen.",
"featureCoursesTitle": "Kursverwaltung",
"featureCoursesDesc": "Organisieren Sie Kurse mit Terminplanung, Dozentenzuweisung, Anwesenheitsverfolgung, Kategorien und Standorten.",
"featureCoursesDesc": "Kurs-, Dozenten- und Teilnehmerverwaltung mit Kalender, Ferien- und Feiertagsberücksichtigung, Kostenkalkulation und Online-Anmeldung.",
"featureBookingsTitle": "Raumbuchungen",
"featureBookingsDesc": "Buchen Sie Räume und Ressourcen mit einem visuellen Kalender, verwalten Sie Gäste und prüfen Sie die Verfügbarkeit.",
"featureBookingsDesc": "Reservierungsverwaltung mit Belegungsübersicht, Ferienberücksichtigung und Schlüsselmanagement für den Gebäudezugang.",
"featureEventsTitle": "Veranstaltungsverwaltung",
"featureEventsDesc": "Planen und verwalten Sie Veranstaltungen mit Anmeldungen, Ferienpässen und Teilnehmerverfolgung.",
"featureFinanceTitle": "Finanzen & Abrechnung",
"featureFinanceDesc": "Erstellen Sie Rechnungen, verwalten Sie Zahlungen und SEPA-Lastschrifteinzüge — behalten Sie Ihre Finanzen mühelos im Griff.",
"featureNewsletterTitle": "Newsletter",
"featureNewsletterDesc": "Erstellen und versenden Sie professionelle Newsletter mit Vorlagen. Halten Sie Ihre Mitglieder informiert.",
"featureEventsDesc": "Planen und verwalten Sie Veranstaltungen mit Anmeldungen, Ferienpässen und Teilnehmerverfolgung — in Zusammenarbeit mit der Stadt Regensburg entwickelt.",
"featureFinanceTitle": "Beiträge & SEPA",
"featureFinanceDesc": "Beitrags- und Gebührenverwaltung, SEPA-Lastschriftmandate, XML-Export und Kontenführung nach Geschäftsjahren. Rechnungen und Zahlungen im Griff.",
"featureNewsletterTitle": "E-Mail & Newsletter",
"featureNewsletterDesc": "E-Mail-Kommunikation mit Mitgliedern und Newsletter-Versand mit Vorlagen. Halten Sie Ihre Mitglieder informiert.",
"showcaseHeading": "Ein leistungsstarkes Dashboard auf einen Blick",
"showcaseDescription": "Erhalten Sie einen vollständigen Überblick über Ihre Organisation mit unserem intuitiven Dashboard. Greifen Sie auf alles zu — Mitglieder, Kurse, Veranstaltungen und Finanzen — von einer zentralen Stelle aus.",
"showcaseDescription": "Erhalten Sie einen vollständigen Überblick über Ihre Organisation — Mitglieder, Kurse, offene Rechnungen und Veranstaltungen — alles von einer zentralen Stelle aus. Schnellaktionen für die häufigsten Aufgaben.",
"additionalFeaturesHeading": "Und es gibt noch mehr",
"additionalFeaturesSubheading": "Zusätzliche Werkzeuge, die jeden Aspekt der täglichen Arbeit Ihrer Organisation vereinfachen.",
"additionalFeaturesSubheading": "Zusätzliche Werkzeuge, die jeden Aspekt der täglichen Vereinsarbeit vereinfachen.",
"additionalFeaturesLabel": "Weitere Funktionen",
"featureDocumentsTitle": "Dokumentenverwaltung",
"featureDocumentsDesc": "Erstellen Sie Dokumente aus Vorlagen, verwalten Sie Dateien und halten Sie alle wichtigen Unterlagen organisiert.",
"featureSiteBuilderTitle": "Website-Baukasten",
"featureSiteBuilderDesc": "Erstellen und verwalten Sie die Website Ihrer Organisation ohne Programmierkenntnisse. Aktualisieren Sie Inhalte ganz einfach.",
"featureDocumentsTitle": "Dokumente & Ausweise",
"featureDocumentsDesc": "Mitgliedsausweise, Rechnungen, Etiketten, Berichte, Briefe und Zertifikate — aus Vorlagen generiert, exportierbar als PDF und Excel.",
"featureSiteBuilderTitle": "Vereins-Website",
"featureSiteBuilderDesc": "Erstellen Sie die öffentliche Website Ihres Vereins ohne Programmierkenntnisse — mit Drag-and-Drop-Editor, Veranstaltungen und Kursangebot direkt aus dem CMS.",
"featureModulesTitle": "Individuelle Module",
"featureModulesDesc": "Erweitern Sie die Plattform mit maßgeschneiderten Modulen für Ihre spezifischen Anforderungen. Importieren Sie Daten und passen Sie Einstellungen an.",
"featureModulesDesc": "Erweitern Sie die Plattform mit eigenen Datenmodulen für Gewässer, Fangbücher, Arbeitsdienste oder beliebige weitere Vereinsdaten.",
"whyChooseHeading": "Warum Organisationen MyEasyCMS wählen",
"whyChooseDescription": "Entwickelt mit über 20 Jahren Erfahrung im Dienste von Vereinen, Clubs und gemeinnützigen Organisationen in ganz Deutschland.",
"whyResponsiveTitle": "Mobilfreundlich",
"whyResponsiveDesc": "Greifen Sie von jedem Gerät auf Ihre Daten zu. Unser responsives Design funktioniert perfekt auf Desktop, Tablet und Smartphone.",
"whySecureTitle": "Sicher & Zuverlässig",
"whySecureDesc": "Ihre Daten sind mit erstklassiger Sicherheit geschützt. Regelmäßige Backups stellen sicher, dass nichts verloren geht.",
"whySupportTitle": "Persönlicher Support",
"whySupportDesc": "Erhalten Sie direkten, persönlichen Support von unserem Team. Wir sprechen Ihre Sprache und verstehen Ihre Bedürfnisse.",
"whyGdprTitle": "DSGVO-konform",
"whyGdprDesc": "Vollständig konform mit der europäischen Datenschutz-Grundverordnung. Die Daten Ihrer Mitglieder werden sorgfältig behandelt.",
"whyChooseHeading": "Warum Vereine Com.BISS vertrauen",
"whyChooseDescription": "2004 schlossen sich fünf Frauen zusammen und gründeten eine Web-Agentur. Seitdem arbeiten wir Hand in Hand mit unseren Kunden — persönlich, fair und zuverlässig. Geschäftsführerinnen: Brit Schiergl und Elisabeth Zehetbauer.",
"whyResponsiveTitle": "Persönlich",
"whyResponsiveDesc": "Wir kennen unsere Kunden und deren Anforderungen. Kein anonymes Ticketsystem — direkter Kontakt mit den Menschen, die Ihre Software entwickeln.",
"whySecureTitle": "Zuverlässig",
"whySecureDesc": "22 Jahre Kundenbeziehungen sprechen für sich. Wir unterstützen Sie auch außerhalb der üblichen Arbeitszeiten — schnell und unkompliziert.",
"whySupportTitle": "Fair",
"whySupportDesc": "Faire Preise, schnelle und flexible Umsetzung der Kundenwünsche. Neuentwicklungen und Änderungen zu festen Preisen — keine Überraschungen.",
"whyGdprTitle": "100% Server in Deutschland",
"whyGdprDesc": "Sitz in Schierling bei Regensburg. Server in Deutschland. DSGVO-konform. Ihre Daten bleiben hier.",
"howItWorksHeading": "In drei einfachen Schritten loslegen",
"howItWorksSubheading": "Die Einrichtung Ihrer Organisation auf MyEasyCMS dauert nur wenige Minuten.",
"howStep1Title": "Konto erstellen",
"howStep1Desc": "Registrieren Sie sich kostenlos und richten Sie Ihr Organisationsprofil ein. Keine Kreditkarte erforderlich.",
"howItWorksSubheading": "Die Einrichtung Ihres Vereins auf MYeasyCMS dauert nur wenige Minuten.",
"howStep1Title": "Testzugang anfragen",
"howStep1Desc": "Fordern Sie einen kostenlosen Testzugang an — wir richten alles für Sie ein und führen Sie persönlich durch die Plattform.",
"howStep2Title": "Module konfigurieren",
"howStep2Desc": "Aktivieren Sie die benötigten Module — Mitglieder, Kurse, Veranstaltungen, Finanzen — und passen Sie diese an Ihren Workflow an.",
"howStep3Title": "Team einladen",
"howStep3Desc": "Fügen Sie Teammitglieder mit verschiedenen Rollen und Berechtigungen hinzu. Verwalten Sie Ihre Organisation gemeinsam.",
"howStep2Desc": "Aktivieren Sie die benötigten Module — Mitglieder, Beiträge, Gewässer, SEPA — und passen Sie diese an Ihren Verein an.",
"howStep3Title": "Vereinsverwaltung starten",
"howStep3Desc": "Importieren Sie Ihre bestehenden Mitgliederlisten und legen Sie sofort los — mit persönlicher Unterstützung durch unser Team.",
"pricingPillLabel": "Kostenlos starten",
"pricingPillText": "Keine Kreditkarte erforderlich.",
"pricingHeading": "Faire Preise für alle Arten von Organisationen",
"pricingSubheading": "Starten Sie mit unserem kostenlosen Tarif und upgraden Sie, wenn Sie bereit sind.",
"pricingPillLabel": "Faire Preise",
"pricingPillText": "Keine Begrenzung der Benutzeranzahl",
"pricingHeading": "Faire Preise nach Vereinsgröße",
"pricingSubheading": "Alle Funktionen inklusive. Keine versteckten Kosten. Persönliche Einrichtung bei jedem Tarif.",
"ctaHeading": "Bereit, die Verwaltung Ihrer Organisation zu vereinfachen?",
"ctaDescription": "Schließen Sie sich hunderten von Vereinen, Clubs und Organisationen an, die MyEasyCMS bereits nutzen.",
"ctaButtonPrimary": "Jetzt kostenlos starten",
"ctaButtonSecondary": "Kontakt aufnehmen",
"ctaNote": "Keine Kreditkarte erforderlich. Kostenloser Tarif verfügbar."
"ctaHeading": "Bereit für eine Verwaltung, die einfach funktioniert?",
"ctaDescription": "Fordern Sie einen kostenlosen Testzugang an — oder lassen Sie sich persönlich beraten. Telefon: 09451 9499-09.",
"ctaButtonPrimary": "Kostenlosen Testzugang anfragen",
"ctaButtonSecondary": "Persönlich beraten lassen",
"ctaNote": "Kein Risiko. Persönliche Einrichtung inklusive. DSGVO-konform."
}