Zum Hauptinhalt springen

Manual -- Business-Nutzer

1. Ueberblick

Als Business-Nutzer verwaltest du einen oder mehrere Orte, die dir zugeordnet wurden. Du kannst Profilinformationen pflegen, Business-Posts veroeffentlichen und (mit PRO-Tier) Insights zu deinem Ort einsehen. Alle Funktionen eines normalen Nutzers stehen dir weiterhin zur Verfuegung.

Voraussetzung: Dein Account hat die Rolle BUSINESS_OWNER. Diese wird vergeben, nachdem ein Claim genehmigt wurde.

2. Erste Schritte

Place beanspruchen (Claim)

  1. Mit aktiver Anmeldung: Finde deinen Ort unter /de/places/{slug} (Deep Link ohne Session: zuerst Anmeldung mit next).
  2. Scrolle auf der Detailseite zum Akkordeon Mehr Infos & Aktionen und oeffne den Tab Beanspruchen
  3. Fuelle die Felder aus:
    • Kontakt-Daten (Name, E-Mail, Telefon optional) — werden nur intern fuers Team sichtbar
    • Nachricht (Pflicht, deine Beziehung zum Ort)
    • Nachweis-Hinweise (optional, z. B. Hinweise auf Gewerbeanmeldung, Visitenkarte, Webseite)
    • Nachweis-Dateien (optional) — bis zu 3 Dateien, je maximal 10 MB, nur PDF, JPG oder PNG (z. B. Gewerbeanmeldung, Handelsregister-Auszug, Visitenkarte). Bild-Uploads durchlaufen vor dem Speichern eine automatische Moderations-Pruefung; abgelehnte Dateien werden dir direkt im Formular angezeigt und nicht uebernommen. Dieses Feld wird nur eingeblendet, wenn der Nachweis-Upload in deiner Umgebung aktiviert ist.
  4. Das Team prueft den Claim und entscheidet ueber die Genehmigung. Eine Bestaetigung kommt per E-Mail an die in deinem Konto hinterlegte Adresse.
  5. Nach Genehmigung erhaeltst du die Rolle BUSINESS_OWNER und der Ort wird dir zugeordnet. Den Status laufender und abgeschlossener Claims siehst du unter Profil → Meine Einreichungen → Place-Claims (In Prüfung / Genehmigt / Abgelehnt). Bei genehmigten Claims erscheint zusaetzlich der Link Im Business-Bereich verwalten. E-Mail-Benachrichtigungen laufen parallel weiter.
  6. Direkte URL /de/claim existiert als Info-Landing-Page (3-Schritte-Erklaerung mit Link zur Ortssuche /de/places). Die Seite ist oeffentlich; die Uebersicht /de/places und Place-Details erfordern eine Session — ohne Login leitet die App zur Anmeldung. Das eigentliche Claim-Formular liegt auf der jeweiligen Place-Detailseite.
  7. Reichst du denselben Ort innerhalb von 12 Stunden erneut ein, blockt ein Cooldown die Doppel-Einreichung.
  8. Datenschutz der Nachweis-Dateien: Uploads liegen in einem privaten Bucket. Das Team sieht die Dateien ausschliesslich ueber kurzlebige Signed-URLs. Unabhaengig von der Entscheidung werden Nachweis-Dateien 90 Tage nach dem Claim-Entscheid automatisch geloescht; bei einer Konto-Loeschung werden sie sofort entfernt.

Business-Bereich aufrufen

Sobald dein Account die Rolle BUSINESS_OWNER hat (nach genehmigtem Claim), erreichst du deinen Ort ueber den Aktenkoffer in der Header-Zeile:

  1. Desktop & Mobile Shell: Aktenkoffer-Icon (Reihenfolge: + → Aktenkoffer → Glocke → Verbindungen → Nachrichten → Avatar)
  2. Klick oeffnet eine Vorschau (Popover), kein sofortiger Seitenwechsel. Darin: Ortsname, Trust-Badge, dezente Tarif-Zeile (nur bei kommerziellen Orten), Schnellaktionen und Hinweise (z. B. offene Onboarding-Schritte, Beitrag in Pruefung, Testphase).
  3. Ein Ort (Standard): Vorschau mit Ort bearbeiten (Workspace), Neuigkeit verfassen, Statistiken, Oeffentliche Seite; Footer nur Plan & Abrechnung (kein zweiter Link zum gleichen Workspace).
  4. Zwei oder mehr Orte: Vorschau listet bis zu drei Orte + Alle Orte anzeigen; volle Liste unter /de/business.
  5. Profil → Uebersicht: Karte Business-Profil (Tarif als lesbare Bezeichnung; optional Link Erste Schritte ansehen solange Onboarding offen ist).
  6. Plan & Abrechnung: Ueber Profil → Zahlungen & Abo (/account/billing), Link in der Header-Vorschau, im Ort-Workspace oder auf der Mehrfach-Ortsliste.

3. Wichtigste Bereiche

SeiteRouteBeschreibung
Ort-Workspace (Standard)/de/business/places/{placeId}Ein Ort: Redirect von /de/business. Vier Tabs: Profil, Medien, Beiträge, Statistiken (Insights, Sichtbarkeit/Featured, Onboarding-Hinweis)
Mehrfach-Ortsliste/de/businessNur bei 2+ eigenen Orten oder Team-Mitglied-only — schlanke Kartenliste, optional Links Plan & Abrechnung / Team (Enterprise)
Einstieg (Onboarding)/de/business/getting-startedCheckliste Claim → Profil → Medien → erster Post; Hinweis im Tab Statistiken am Ort solange offen
Team (Enterprise)/de/business/teamBis zu 5 Mitarbeitende einladen; Einladung annehmen unter /de/business/team/accept?token=…
Spenden (NC-Orte)/de/business/places/{placeId}/donationsIBAN/GiroCode fuer Vereine und Moscheen — MerhabaMap beruehrt keine Gelder
Vertrieb ENTERPRISE/de/business/salesKontaktformular fuer Kontingente, Partnerschaft oder Sonstiges (PRO sieht den Link ebenfalls fuer Enterprise-Upgrades)
Upgrade-Info/de/business/upgradeManueller Antrag (SEPA/Sonderfaelle); Standardweg ist Mein Konto → Zahlungen & Abo
Abrechnung (Stripe)/de/account/billingSelf-Service-Checkout, Customer Portal — einheitlicher CTA „Tarif & Zahlung verwalten" im Business-Bereich
Oeffentliche Seite/de/places/{slug}Dein Ort aus Nutzerperspektive

Hinweis: Routen ohne /de/ existieren fuer /tr/ analog ueber Locale-Prefix der App.

Informationsarchitektur & Tarife

TarifKurzbezeichnung in der UITypische Freischaltungen
FREEBasisOrt pflegen, 1 sichtbares Bild, begrenzte Posts je nach Commercial-Policy
PROPRO (ggf. PRO Testphase)Statistiken, mehr Posts, Kontakt-Buttons, Kurz-URL, Karussell (kommerziell)
ENTERPRISEEnterpriseAlles aus PRO plus Team-Zugaenge (bis 5), erweiterte Statistiken, Priority-Support-Hinweis

Commercial vs. Non-Commercial: Bei Vereinen und Moscheen (NON_COMMERCIAL) gibt es keine kommerziellen Upsell-Banner. Stattdessen gelten Community-Vorteile (Statistiken, Kontakt-Buttons, Spenden-Setup). Bezahlung schaltet Marketing-Werkzeuge frei — nicht Vertrauen, Featured oder Top-Ranking.

Enterprise (selten): In Prod praktisch keine ENTERPRISE-Kunden. Team-Verwaltung und Extended Insights existieren im Code; es gibt kein separates Enterprise-Dashboard — Einstieg nur ueber Billing, /business/team (Tier ENTERPRISE) oder /business/sales.

Team-Mitglieder: Wer per Enterprise-Einladung mitpflegt, sieht auf /de/business nur mitbetreute Orte — ohne Tarif-Banner oder Revenue-Hinweise. Tarif und Abrechnung regelt der Inhaber.

Billing: Der primaere Self-Service-Weg ist /account/billing. Upgrade- und Lock-Hinweise am Ort verlinken kontextuell mit „Plan & Abrechnung" dorthin (wenn Stripe aktiv ist). Kein Upgrade-Banner mehr auf /de/business.

UI-Konsistenz

  • Alle Business-Unterseiten nutzen dieselbe Shell (Breadcrumb bei Mehrfach-Orten, Header, einheitliche Abstaende).
  • Akzentfarbe im Business-Kontext: MerhabaMap-Rot (brand) — nicht Karten-Tuerkis oder Community-Blau.
  • Upsell nur kontextuell am Ort (z. B. gesperrte Beiträge, Statistik-Teaser) — nicht als Hub-Banner.

4. Typische Ablaeufe

Place-Profil pflegen

  1. Klicke auf den Aktenkoffer in der Header-Zeile und waehle in der Vorschau Ort bearbeiten oder Business-Bereich oeffnen (bei einem Ort landest du im Workspace).
  2. Tab Profil → Bereich "Business-Profil pflegen" — dort kannst du aendern:
    • Telefonnummer
    • Website
    • Beschreibung (Deutsch)
    • Beschreibung (Tuerkisch) — bei passendem Tarif (PRO/ENTERPRISE und Platz-Policy kommerziell / gemischt) mit Markdown-Subset (fett/kursiv, sichere https-Links, einfache Listen). Auf /de/places/{slug} wird die entsprechende Sprachversion dann gerendert.
    • Oeffnungszeiten — strukturierter Wochen-Editor (Mo–So, geschlossen oder Von/Bis)
    • Ausnahmetage — optionale Daten (z. B. Feiertag geschlossen oder abweichende Zeiten)
  3. Klicke "Speichern"

Ort-Bilder (Detailseite)

  1. Oeffne /de/business/places/{placeId}
  2. Wechsle zum Tab Medien
  3. Waehle eine Datei (JPG, PNG oder WebP, max. 5 MB) und klicke Hochladen
  4. Das erste Bild wird automatisch zum Hauptbild der oeffentlichen Detailseite — damit ersetzt du Google-Places-Fotos
  5. Per Hover kannst du Bilder entfernen; das naechste Bild rueckt als Hauptbild nach

Tarif-Limits:

TarifBilder sichtbarKarussell auf Detailseite
FREE1nein
PRO (kommerziell)bis 20ja (ab 2 Bildern)
PRO (Verein/Moschee)bis 20 hochladbar, 1 sichtbarnein

Bilder ueber dem Tarif-Limit bleiben gespeichert, sind auf der oeffentlichen Seite aber ausgeblendet, bis du wieder upgradest.

Hinweis: Standort, Name, Kategorie und Moderationsstatus koennen nicht geaendert werden. Diese bleiben geschuetzt.

Business-Post erstellen

  1. Oeffne /de/business/places/{placeId}
  2. Wechsle zum Tab Beiträge → Bereich "Neuigkeit erstellen"
  3. Oben im Formular siehst du dein Kontingent: wie viele Beitraege du diese Woche an diesem Ort bereits geteilt hast, wie viele heute ueber alle Orte noch moeglich sind, und ob ein 24-Stunden-Abstand zum letzten Post aktiv ist.
  4. Fuelle die Felder aus:
    • Titel (Pflichtfeld): z.B. "Neue Oeffnungszeiten ab Mai"
    • Inhalt (Pflichtfeld, mindestens 3 Woerter)
    • Bild (optional, Datei-Upload JPG/PNG/WebP, max. 5 MB)
    • Video (optional fuer PRO/ENTERPRISE auf kommerziellen Places, MP4/WebM max. ca. 25 MB, nur wenn Storage in der Umgebung aktiv ist — nicht fuer reine Vereins-/Moschee-Places mit heruntergestufter Policy)
  5. Klicke Veröffentlichen
  6. Ist Titel + Ort ein Duplikat der letzten 7 Tage oder ueberschreitest du ein Rate-Limit, erscheint eine Fehlermeldung beim Absenden — es entsteht kein Post-Eintrag. Der Eintrag wird erst erstellt, wenn Qualitaet + Rate-Limits akzeptiert sind.
  7. Gueltige Beitraege erscheinen sofort auf der Ort-Detailseite und im Feed (APPROVED). Das Team kann Inhalte nachtraeglich ablehnen (Post-hoc-Moderation) — dafuer erhaeltst du eine Mitteilung.

Bisherige Posts pruefen

  1. Oeffne /de/business/places/{placeId} → Tab Beiträge
  2. Im Bereich Letzte Beiträge siehst du deine Posts mit Status und Kurz-Hinweis:
    • Live: Auf der Ort-Detailseite und im Feed sichtbar
    • Abgelehnt: Nachtraeglich entfernt — passe Inhalt an und reiche einen neuen Beitrag ein
    • Ausstehend: Nur noch aeltere Einreichungen vor der Umstellung auf Sofort-Veroeffentlichung
  3. Ablehnungen findest du zusaetzlich unter Mitteilungen

Oeffentliche Seite pruefen

  1. Oeffne /de/business/places/{placeId}
  2. Klicke oben Öffentliche Seite ansehen (oder nutze den Link zur Detailseite)
  3. Du landest auf /de/places/{slug}
  4. Auf Social Media verbreiten: Auf der oeffentlichen Place-/Event-Seite klickst du "Teilen" und bekommst auf dem Handy direkt das System-Teilen-Sheet mit Instagram-Story, WhatsApp und allen installierten Apps. Ueber den Pfeil-Knopf rechts daneben oeffnet sich ein Direkt-Menue mit WhatsApp, Telegram, X (Twitter), Facebook, E-Mail und Link kopieren — fuer schnelle Beitraege auf etablierten Kanaelen mit Linkout zurueck zu MerhabaMap.

Insta-Story-Bild fuer ein Event oder einen Ort herunterladen

Sowohl auf Event-Detailseiten (/de/events/{slug}) als auch auf Place-Detailseiten (/de/places/{slug}) erscheint im Teilen-Menue der Punkt "Insta-Story-Bild herunterladen":

  1. Oeffne die oeffentliche Detailseite des Events oder Ortes
  2. Klicke Teilen → Pfeil-Knopf rechts → Insta-Story-Bild herunterladen
  3. Es startet ein Download eines 1080×1920 PNG (9:16, ideal fuer Instagram-Story, WhatsApp-Status, TikTok-Story)
  4. Das Bild enthaelt: Cover-Bild, Titel, fuer Events zusaetzlich Datum + Uhrzeit (Europe/Berlin) und Stadt — fuer Orte stattdessen Kategorie (z. B. „Restaurant", „Museum") und Stadt, jeweils mit QR-Code zur Detailseite und MerhabaMap-Branding
  5. Lade das PNG manuell als Story in Instagram oder einen anderen Story-Kanal hoch — der eingebaute QR-Code fuehrt Scannende direkt zurueck zur jeweiligen Detailseite, was die Konversion zu Anmeldungen / Speichern / "Dabei"-Klicks deutlich verbessert
  6. Der Download ist oeffentlich erreichbar (kein Login noetig), aber rate-limited; bei sehr vielen Downloads in kurzer Zeit musst du kurz warten

Hinweis: Das System-Teilen-Sheet auf Mobilgeraeten kann die Detailseite zwar an die Instagram-App weiterreichen, aber Instagram laesst keine direkten "Story mit Link"-Posts ueber die Web-Share-API zu. Mit dem PNG-Download umgehst du diese Beschraenkung — du laedst das Bild als Story hoch, und Scannende des QR-Codes landen im Browser auf der Detailseite.

Insights einsehen (PRO vs. ENTERPRISE)

Insights V2 im Tab Statistiken — KPI-Karten, Verlaufsdiagramm, Kanaele, Beitrags-Tabelle und Kontext-Karten (Suche, staerkster Tag). Siehe docs/architecture/business-monetization.md §2.3.

Wenn dein Account einen Tier mit Insights hat (PRO oder ENTERPRISE):

  1. Ort-Workspace → Tab Statistiken (/de/business/places/{placeId}?tab=growth)
  2. Zeitraum oben rechts: 7 / 30 Tage (PRO), zusaetzlich 90 Tage (ENTERPRISE) — URL-Parameter insightsRange.
  3. KPIs mit Trend ggü. der gleich langen Vorperiode: Aufrufe, Klicks, Beitrags-Ansichten, Interaktionen.
  4. Verlauf: Taegliches Balkendiagramm aller Interaktionen.
  5. Kanaele: Detailseite, Feed & Listen, Suche, Beitraege.
  6. Beitrags-Performance: Impressionen, Klicks, CTR pro Business-Post.
  7. Bei ENTERPRISE zusaetzlich: Aufschluesselung aller eigenen Orte (wenn mehr als einer).
  8. Wichtig: Consent-basierte Events — ohne Analytics-Zustimmung der Besucher keine Zaehlung. Leere Zeitraeume zeigen einen Hinweis statt Fake-Daten.

Onboarding (Erste Schritte)

Solange Onboarding offen ist, erscheint im Tab Statistiken am Ort ein Hinweis auf /business/getting-started. Nach Abschluss verschwindet der Hinweis; die Checkliste bleibt manuell erreichbar.

Falls deine Location laut Produkt-/Policy-Konfiguration dafuer berechtigt ist, erscheint auf /business/places/{placeId} ein Formular „Featured-Platzierung anfragen“. Gespeicherte PENDING-Antraege blockieren ein weiteres Submit pro Ort. Featured ist keine Zahlungsfunktion — Senior-Admins aktivieren ueber ihre eigenen Moderationswerkzeuge. Du siehst den Status („Antrag liegt vor") bis zur Entscheidung.

Sales & ENTERPRISE-Kontakt

Unter /business/sales (bei ENTERPRISE auch Link auf der Mehrfach-Ortsliste) reichst du strukturierte Kontakt-Anfragen (z. B. hoehere Kontingente oder Partnerschaften) ein.

Priority Support Hinweis (ENTERPRISE)

ENTERPRISE-Accounts sehen optional eine „Priority Support"-Card mit Schnell-Link zum Kontaktformular sowie einer Betreff-Zeile-Vorlage fuer mailto:. Es wird kein SLA garantiert — der Hinweis kennzeichnet nur bevorzugte Bearbeitung.

Hinweismails beim PRO-Trial-Ende

Laeuft dein Zugriff ueber einen Trial mit Enddatum (TRIAL Acquisition Path nach Stripe), kann ein stuendlicher Cron-Job automatisch (ca. 14 bzw. 3 Tage vor trialEndsAt) eine Erinnerungsmail senden — abhaengig von Konfiguration/Flags auf der Produktions-Umgebung. Die operative Freigabe liegt beim Betriebsteam.

Upgrade (FREE → PRO/ENTERPRISE)

Wenn dein Account den FREE-Tier hat, gibt es zwei Wege nach PRO oder ENTERPRISE. Beide landen am selben Tier-Feld und schalten dieselben Features frei.

Weg A — Selbstbedienung via Stripe (empfohlen, der Standardweg):

  1. Oeffne /de/account/billing.
  2. Die Seite zeigt drei Tarif-Karten (FREE, PRO, ENTERPRISE) im Vergleich; PRO und ENTERPRISE mit Brutto-Preisen (Monat/Jahr) und Checkout-Buttons, sofern du die Voraussetzungen erfuellst. Dein aktueller Tarif ist in der Status-Zeile und auf der passenden Karte markiert.
  3. Klicke bei deinem Wunschtarif auf „PRO monatlich/jaehrlich buchen" (oder ENTERPRISE) — du wirst auf die Stripe-Checkout-Seite geleitet.
  4. Bezahle per Kreditkarte (oder den in deiner Region angebotenen Zahlungsarten). Nach erfolgreichem Checkout landest du zurueck auf /de/account/billing.
  5. Der Tier-Wechsel ist sofort wirksam, sobald Stripe den Webhook an MerhabaMap gesendet hat (in der Regel ein paar Sekunden). Du bekommst eine Bestaetigungs-E-Mail (Subscription-Welcome).

Weg B — Manueller Antrag (fuer Sonderfaelle):

Nicht jeder Einkauf passt in die Checkout-Seite: Wenn du z. B. nur per SEPA-Ueberweisung zahlen kannst, eine spezielle Rechnungsanschrift brauchst oder das Angebot vor dem Kauf inhaltlich pruefen lassen moechtest, nutzt du den manuellen Antrag:

  1. Oeffne /de/business/upgrade (oder folge dem Teaser unterhalb deiner Posts → „Mehr erfahren").
  2. Die Seite zeigt, welche Features mit PRO / ENTERPRISE verfuegbar sind.
  3. Fuelle das Antragsformular aus (Firma, Firmen-Adresse, Kontakt-E-Mail, optional VAT-ID + Notiz) und sende es ab.
  4. Dein Antrag landet in der Admin-Queue. Das Team prueft, entscheidet und hebt deinen Tier bei Genehmigung auf den gewuenschten Wert. Bei Ablehnung siehst du die Begruendung beim naechsten Aufruf der Upgrade-Seite und kannst einen neuen Antrag stellen.
  5. Rechnungsstellung laeuft in diesem Weg ausserhalb von Stripe — das MerhabaMap-Team meldet sich mit den Zahlungsdetails.

Abrechnung pflegen / kuendigen (nur Weg A):

Auf /de/account/billing liegt der Button „Abrechnung verwalten" — er oeffnet das Stripe-Customer-Portal, in dem du Zahlungsmittel aktualisieren, Rechnungen herunterladen oder die Subscription kuendigen kannst. Aus Sicherheitsgruenden verlangt die App dafuer eine frische 2FA-Bestaetigung (max. 1 Stunde alt): hast du dein Passwort + TOTP vor laengerer Zeit eingegeben, wirst du automatisch auf /de/account/security/confirm geleitet, bestaetigst dort und kommst dann zurueck zum Portal.

Spenden einrichten (nur nicht-kommerzielle Places):

Vereine und Moscheen koennen ueber die Place-Detail-Seite Spenden empfangen. Plattform-Regel: MerhabaMap beruehrt KEIN Geld. Der frueher geplante Stripe-Connect-Pfad ist gestrichen — der Spender ueberweist direkt aus seiner Banking-App ans Vereinskonto, MerhabaMap zeigt nur die IBAN + einen GiroCode-QR an. Spendenquittungen stellt dein Verein selbst aus (gemeinnuetzige Koerperschaften muessen das ohnehin).

Voraussetzungen (jeder Punkt muss zutreffen, sonst ist die Funktion fuer dich unsichtbar oder gesperrt):

  1. Nicht-kommerziell. Kommerzielle oder gemischte Places bekommen die Funktion nie. Diese monetisieren ueber das PRO-Abo.
  2. Vom Senior-Admin freigegebener Claim. Erst nach APPROVED-Claim darfst du IBAN-Daten hinterlegen — ein automatisch zugeordneter Owner reicht nicht.
  3. IBAN + Empfaenger-Name hinterlegt. Ohne diese beiden Pflichtfelder wird die public Karte nicht gerendert.

Wo einrichten: Auf /de/business/places/<placeId> siehst du eine neue Card "Spenden für diesen Ort":

  • Bei NON_COMMERCIAL + freigegebenem Claim: Karte ist aktiv, Button "Spenden einrichten" oeffnet /de/business/places/<placeId>/donations.
  • Bei NON_COMMERCIAL ohne freigegebenen Claim: Karte ist ausgegraut und erklaert, dass zuerst ein Senior-Admin den Claim freigeben muss.
  • Bei kommerziellen / gemischten Places: Karte erscheint gar nicht.

Auf der Settings-Seite waehlst du:

  • Methode: „Keine Spenden" (Default) oder „IBAN + GiroCode".
  • IBAN: wird live gegen die ISO-13616-Pruefsumme validiert; gruener Hinweis bei valider IBAN, roter bei Tippfehler oder Nicht-SEPA-Land.
  • Empfaenger-Name: genau wie auf eurem Konto (z. B. „Moscheeverein Paderborn e. V."). Pflicht im IBAN-Pfad.
  • BIC (optional): bei manchen Banken zusaetzlich abgefragt; wenn unbekannt, leer lassen.
  • Verwendungszweck (optional, max. 140 Zeichen): erscheint im GiroCode als Vorbelegung (z. B. „Spende Ramadan 2026").

Speichern + Audit: Klick auf „Speichern" schreibt die Daten und erzeugt einen Audit-Eintrag (PLACE_DONATION_SETTINGS_UPDATED). Aus Sicherheitsgruenden landet die volle IBAN nicht im Audit-Log — nur die letzten 4 Stellen. So kannst du Aenderungen forensisch nachvollziehen, ohne dass die Bankverbindung im fuer Admins lesbaren Log steht.

Hinweis Master-Flag: Aktuell ist das Feature global noch deaktiviert (PLACE_DONATIONS_UI_ENABLED=false), bis wir den GiroCode mit den groessten DE-Banking-Apps (Sparkasse, Comdirect, Volksbank/N26) manuell verifiziert haben. Du kannst die IBAN trotzdem schon eintragen — das Form zeigt dann einen gelben Banner „Karte ist oeffentlich noch nicht sichtbar". Sobald wir das Flag global anschalten, erscheint die Spenden-Karte automatisch auf eurer public Place-Detail-Seite.

Was Spender auf eurer Detail-Seite sehen (sobald der Master-Flag an ist): Eine Karte „Direkt an die Bankverbindung des Ortes" mit Empfaengername, IBAN (mit Copy-Button), BIC, Verwendungszweck und einem QR-Code (GiroCode, EPC069-12-Standard). Der Spender hat zwei Wege:

  1. Mit Banking-App scannen (mobile + desktop): Sparkasse, Volksbank, Comdirect, ING, Deutsche Bank etc. haben einen QR-Scanner unter „Ueberweisung → QR-Code scannen". Scan fuellt IBAN, Empfaenger und Verwendungszweck automatisch — Spender gibt nur den Betrag ein und bestaetigt mit Face-ID / Push-TAN / App-PIN.
  2. IBAN selbst kopieren: Copy-Button neben der IBAN, dann Ueberweisung in der eigenen Banking-App manuell anlegen — fuer Spender, die kein QR scannen wollen oder noch klassisches Online-Banking ueber Browser nutzen.

Es ist kein TAN-Scanner-Geraet, keine photoTAN-Box und keine Zusatzhardware noetig — der QR ist nur ein Daten-Container fuer IBAN+Empfaenger+Zweck, gescannt durch die normale Handy-Kamera in der Banking-App. Es ist auch keine MerhabaMap-Anmeldung beim Spender noetig.

Du als Owner siehst auf MerhabaMap nicht, wer wann gespendet hat — diese Information landet nur auf eurem eigenen Konto-Auszug. Wenn ein Spender eine Quittung will, muss er sich direkt an euch wenden.

Architektur + Roadmap: docs/architecture/place-donations.md. MerhabaMap fuehrt keine Spenden-Historie — weder fuer Spender noch fuer Empfaenger. Eine Plattform-Spenden-Funktion fuer MerhabaMap selbst (z. B. unter /supporters) existiert ebenfalls nicht; das war historisch geplant und wurde 2026-04-29 verworfen.

Team-Seats (nur ENTERPRISE + COMMERCIAL)

Als ENTERPRISE-Owner auf einem commercial oder mixed Place darfst du zusaetzliche Team-Mitglieder einladen, die Posts im Namen deines Ortes erstellen und pflegen koennen. Die Seat-Kapazitaet steht in src/lib/business-features.ts (derzeit ENTERPRISE.maxTeamSeats > 0, FREE/PRO = 0).

Dashboard:

  1. Oeffne /de/business/team (aus Business-Hub > "Team verwalten", nur sichtbar wenn die Feature-Matrix fuer dich Team-Seats erlaubt)
  2. Die Seite zeigt: Aktive Seats (akzeptierte Einladungen), Offene Einladungen (versendet, noch nicht angenommen), Verfuegbare Plaetze (Limit minus bereits vergebene Seats)
  3. Neue Einladung erstellen: E-Mail-Adresse des Kollegen eintragen, "Einladen" klicken. Du bekommst einen shareable Accept-Link (per E-Mail an den Eingeladenen, plus Copy-Button). Der Link hat die Form /{locale}/business/team/accept?token=<hash>
  4. Einladung zurueckziehen: Button "Zurueckziehen" an jeder offenen Einladung — Token wird invalidiert, Eingeladener kann nicht mehr akzeptieren
  5. Seat entfernen: Button "Entfernen" an aktiven Seats — das Team-Mitglied verliert sofort die Berechtigung, fuer deine Places zu posten
  6. Locked-Variante: FREE/PRO-Owner oder ENTERPRISE auf einem NON_COMMERCIAL-Place sehen stattdessen eine Upgrade/Eligibility-Karte mit Hinweis, warum Team-Seats gerade nicht verfuegbar sind — die Navigation 404t also nicht

Eingeladener akzeptiert:

  1. Der Eingeladene oeffnet den Link /{locale}/business/team/accept?token=…
  2. Nicht eingeloggt? → Weiterleitung auf Sign-in mit ?next=-Parameter, Token bleibt in der URL erhalten
  3. Eingeloggt: Seite zeigt Firmenname, Einladender-Name und "Einladung annehmen" / "Ablehnen"
  4. Annehmen: Viewer bekommt einen Seat, wird auf /de/business umgeleitet und kann ab sofort Posts im Namen des Ortes erstellen
  5. Token-Schutz: Nach Annahme oder Ablauf ist der Token verbraucht. Ein zweiter Aufruf zeigt einen Fehlerhinweis, kein stilles Doppel-Akzeptieren

5. Haeufige Aktionen

AktionWoWie
Place-Profil aendern/de/business/places/{placeId}Formular ausfuellen, speichern
Post erstellen/de/business/places/{placeId}Titel + Inhalt eingeben, absenden
Post-Status pruefen/de/business/places/{placeId}Bereich "Letzte Posts"
Insights lesen/de/business/places/{placeId}?tab=growthInsights-V2-Dashboard (PRO+)
Spenden einrichten (NON_COMMERCIAL)/de/business/places/{placeId}/donationsMethode IBAN waehlen, IBAN + Empfaenger-Name eingeben
Upgrade (Self-Serve)/de/account/billingStripe-Checkout + Portal
Upgrade (manueller Antrag)/de/business/upgradeFormular fuer Sonderfaelle
Team verwalten (ENTERPRISE)/de/business/teamEinladungen + Seats fuer Kollegen
Team-Einladung annehmen/de/business/team/accept?token=…Link aus der E-Mail oeffnen
Business-Status auf dem SmartphoneMobile-App → Drawer → Business-ProfilRead-only-Uebersicht (Tier, Trial, Funktionen, Team-Sitze, eigene + delegierte Orte). Aenderungen oeffnen die Web-Oberflaeche im In-App-Browser.
Abo-Status auf dem SmartphoneMobile-App → Drawer → Zahlungen & AboRead-only-Uebersicht (aktueller Tarif, naechste Abrechnung, Kuendigungs-Status, Brutto-Preise). Buttons fuer „auf Web buchen" und „Kundenportal auf Web oeffnen" oeffnen den In-App-Browser.

6. Hinweise

  • Post-Limits: Drei Schichten — 24h-Cooldown pro Ort, Wochenlimit pro Ort, Tageslimit pro Account (nur bei 2+ Orten in der UI sichtbar). Auf COMMERCIAL/MIXED-Places: FREE 0/Woche; PRO 8/Woche + 2/Tag (Account); ENTERPRISE 15/Woche + 10/Tag. Auf NON_COMMERCIAL- Places (Vereine/Moscheen): 2/Woche und 2/Tag fuer alle Tiers (Vereins-Ausnahme). Verbindliche Matrix: business-monetization.md §2.1 und §2.6. Zusaetzlich gilt fuer alle Tiers ein 24-Stunden-Cooldown pro Ort: Pro Ort darf nur ein Post in 24 Stunden erzeugt werden.
  • Moderation: Jeder erfolgreich eingereichte Post wird vor der Veroeffentlichung geprueft. Aktuell gibt es keine automatische Benachrichtigung an dich bei Freigabe/Ablehnung — bitte die Liste Letzte Posts nach ein paar Stunden erneut pruefen.
  • Qualitaets- und Duplikat-Pruefung: Posts mit zu kurzem Inhalt (< 3 Worte) oder gleichem Titel am gleichen Ort innerhalb der letzten 7 Tage werden schon beim Absenden abgewiesen — sie landen nicht als „Abgelehnt" in der Liste, sondern werden gar nicht erst angelegt.
  • Trust-Status: Dein Ort kann den Status "Beansprucht" oder "Verifiziert" haben. "Verifiziert" bedeutet eine zusaetzliche Pruefung durch MerhabaMap.
  • Editierbare Felder: Du kannst nur risikoarme Felder aendern (Telefon, Website, Beschreibung, Oeffnungszeiten). Standort, Kategorie und Moderationsstatus bleiben geschuetzt.
  • Hilfe: Auf der Place-Verwaltungsseite gibt es einen Hilfe-Button, der eine Anleitung als Seitenleiste oeffnet.
  • Mobile-App: Im seitlichen Drawer findest du Business-Profil. Die Mobile-Ansicht zeigt deinen aktuellen Tier, eine eventuell laufende Test-Phase, das Feature-Set, die belegten Team-Sitze sowie deine eigenen und delegierten Orte mit ihrem Verifikations-Status. Tier-Upgrade, Place-Bearbeitung, Spenden-Setup und Team-Verwaltung oeffnen die existierende Web-Oberflaeche in einem In-App-Browser-Fenster — Subscription-Kaeufe selbst koennen aus rechtlichen Gruenden (Apple/Google In-App-Purchase-Regeln, Stripe-Web-Anforderung) nicht nativ in der App ausgefuehrt werden.
  • Mobile-Abo-Uebersicht: Der Drawer-Eintrag Zahlungen & Abo zeigt deinen aktuellen Tarif, einen evtl. laufenden Trial, den Status deines Stripe-Abos (aktiv, gekuendigt zum Periodenende, manuell freigeschaltet) und die naechsten Abrechnungstermine. Bezahltarife (PRO / ENTERPRISE) werden mit Brutto-Preisen aufgelistet; jeder „Buchen"-Button oeffnet das Web-Checkout im In-App-Browser. Wenn du bereits ein Stripe-Abo hast, erscheint ausserdem ein „Kundenportal auf Web oeffnen"-Knopf, ueber den du Zahlungsmittel, Plan und Kuendigung verwalten kannst.