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)
- Mit aktiver Anmeldung: Finde deinen Ort unter
/de/places/{slug}(Deep Link ohne Session: zuerst Anmeldung mitnext). - Scrolle auf der Detailseite zum Akkordeon Mehr Infos & Aktionen und oeffne den Tab Beanspruchen
- 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.
- Das Team prueft den Claim und entscheidet ueber die Genehmigung. Eine Bestaetigung kommt per E-Mail an die in deinem Konto hinterlegte Adresse.
- Nach Genehmigung erhaeltst du die Rolle
BUSINESS_OWNERund 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. - Direkte URL
/de/claimexistiert als Info-Landing-Page (3-Schritte-Erklaerung mit Link zur Ortssuche/de/places). Die Seite ist oeffentlich; die Uebersicht/de/placesund Place-Details erfordern eine Session — ohne Login leitet die App zur Anmeldung. Das eigentliche Claim-Formular liegt auf der jeweiligen Place-Detailseite. - Reichst du denselben Ort innerhalb von 12 Stunden erneut ein, blockt ein Cooldown die Doppel-Einreichung.
- 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:
- Desktop & Mobile Shell: Aktenkoffer-Icon (Reihenfolge: + → Aktenkoffer → Glocke → Verbindungen → Nachrichten → Avatar)
- 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).
- Ein Ort (Standard): Vorschau mit Ort bearbeiten (Workspace), Neuigkeit verfassen, Statistiken, Oeffentliche Seite; Footer nur Plan & Abrechnung (kein zweiter Link zum gleichen Workspace).
- Zwei oder mehr Orte: Vorschau listet bis zu drei Orte + Alle Orte anzeigen; volle Liste unter
/de/business. - Profil → Uebersicht: Karte Business-Profil (Tarif als lesbare Bezeichnung; optional Link Erste Schritte ansehen solange Onboarding offen ist).
- Plan & Abrechnung: Ueber Profil → Zahlungen & Abo (
/account/billing), Link in der Header-Vorschau, im Ort-Workspace oder auf der Mehrfach-Ortsliste.
3. Wichtigste Bereiche
| Seite | Route | Beschreibung |
|---|---|---|
| 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/business | Nur bei 2+ eigenen Orten oder Team-Mitglied-only — schlanke Kartenliste, optional Links Plan & Abrechnung / Team (Enterprise) |
| Einstieg (Onboarding) | /de/business/getting-started | Checkliste Claim → Profil → Medien → erster Post; Hinweis im Tab Statistiken am Ort solange offen |
| Team (Enterprise) | /de/business/team | Bis zu 5 Mitarbeitende einladen; Einladung annehmen unter /de/business/team/accept?token=… |
| Spenden (NC-Orte) | /de/business/places/{placeId}/donations | IBAN/GiroCode fuer Vereine und Moscheen — MerhabaMap beruehrt keine Gelder |
| Vertrieb ENTERPRISE | /de/business/sales | Kontaktformular fuer Kontingente, Partnerschaft oder Sonstiges (PRO sieht den Link ebenfalls fuer Enterprise-Upgrades) |
| Upgrade-Info | /de/business/upgrade | Manueller Antrag (SEPA/Sonderfaelle); Standardweg ist Mein Konto → Zahlungen & Abo |
| Abrechnung (Stripe) | /de/account/billing | Self-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
| Tarif | Kurzbezeichnung in der UI | Typische Freischaltungen |
|---|---|---|
| FREE | Basis | Ort pflegen, 1 sichtbares Bild, begrenzte Posts je nach Commercial-Policy |
| PRO | PRO (ggf. PRO Testphase) | Statistiken, mehr Posts, Kontakt-Buttons, Kurz-URL, Karussell (kommerziell) |
| ENTERPRISE | Enterprise | Alles 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
- 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).
- 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)
- Klicke "Speichern"
Ort-Bilder (Detailseite)
- Oeffne
/de/business/places/{placeId} - Wechsle zum Tab Medien
- Waehle eine Datei (JPG, PNG oder WebP, max. 5 MB) und klicke Hochladen
- Das erste Bild wird automatisch zum Hauptbild der oeffentlichen Detailseite — damit ersetzt du Google-Places-Fotos
- Per Hover kannst du Bilder entfernen; das naechste Bild rueckt als Hauptbild nach
Tarif-Limits:
| Tarif | Bilder sichtbar | Karussell auf Detailseite |
|---|---|---|
| FREE | 1 | nein |
| PRO (kommerziell) | bis 20 | ja (ab 2 Bildern) |
| PRO (Verein/Moschee) | bis 20 hochladbar, 1 sichtbar | nein |
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
- Oeffne
/de/business/places/{placeId} - Wechsle zum Tab Beiträge → Bereich "Neuigkeit erstellen"
- 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.
- 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)
- Klicke Veröffentlichen
- 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.
- 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
- Oeffne
/de/business/places/{placeId}→ Tab Beiträge - 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
- Ablehnungen findest du zusaetzlich unter Mitteilungen
Oeffentliche Seite pruefen
- Oeffne
/de/business/places/{placeId} - Klicke oben Öffentliche Seite ansehen (oder nutze den Link zur Detailseite)
- Du landest auf
/de/places/{slug} - 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":
- Oeffne die oeffentliche Detailseite des Events oder Ortes
- Klicke Teilen → Pfeil-Knopf rechts → Insta-Story-Bild herunterladen
- Es startet ein Download eines 1080×1920 PNG (9:16, ideal fuer Instagram-Story, WhatsApp-Status, TikTok-Story)
- 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
- 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
- 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):
- Ort-Workspace → Tab Statistiken (
/de/business/places/{placeId}?tab=growth) - Zeitraum oben rechts: 7 / 30 Tage (PRO), zusaetzlich 90 Tage (ENTERPRISE) — URL-Parameter
insightsRange. - KPIs mit Trend ggü. der gleich langen Vorperiode: Aufrufe, Klicks, Beitrags-Ansichten, Interaktionen.
- Verlauf: Taegliches Balkendiagramm aller Interaktionen.
- Kanaele: Detailseite, Feed & Listen, Suche, Beitraege.
- Beitrags-Performance: Impressionen, Klicks, CTR pro Business-Post.
- Bei ENTERPRISE zusaetzlich: Aufschluesselung aller eigenen Orte (wenn mehr als einer).
- 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.
Featured-Anfrage (redaktionell, keine Auto-Freischaltung)
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):
- Oeffne
/de/account/billing. - 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.
- Klicke bei deinem Wunschtarif auf „PRO monatlich/jaehrlich buchen" (oder ENTERPRISE) — du wirst auf die Stripe-Checkout-Seite geleitet.
- Bezahle per Kreditkarte (oder den in deiner Region angebotenen Zahlungsarten). Nach erfolgreichem Checkout landest du zurueck auf
/de/account/billing. - 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:
- Oeffne
/de/business/upgrade(oder folge dem Teaser unterhalb deiner Posts → „Mehr erfahren"). - Die Seite zeigt, welche Features mit PRO / ENTERPRISE verfuegbar sind.
- Fuelle das Antragsformular aus (Firma, Firmen-Adresse, Kontakt-E-Mail, optional VAT-ID + Notiz) und sende es ab.
- 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.
- 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):
- Nicht-kommerziell. Kommerzielle oder gemischte Places bekommen die Funktion nie. Diese monetisieren ueber das PRO-Abo.
- Vom Senior-Admin freigegebener Claim. Erst nach
APPROVED-Claim darfst du IBAN-Daten hinterlegen — ein automatisch zugeordneter Owner reicht nicht. - 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:
- 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.
- 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:
- Oeffne
/de/business/team(aus Business-Hub > "Team verwalten", nur sichtbar wenn die Feature-Matrix fuer dich Team-Seats erlaubt) - Die Seite zeigt: Aktive Seats (akzeptierte Einladungen), Offene Einladungen (versendet, noch nicht angenommen), Verfuegbare Plaetze (Limit minus bereits vergebene Seats)
- 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> - Einladung zurueckziehen: Button "Zurueckziehen" an jeder offenen Einladung — Token wird invalidiert, Eingeladener kann nicht mehr akzeptieren
- Seat entfernen: Button "Entfernen" an aktiven Seats — das Team-Mitglied verliert sofort die Berechtigung, fuer deine Places zu posten
- 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:
- Der Eingeladene oeffnet den Link
/{locale}/business/team/accept?token=… - Nicht eingeloggt? → Weiterleitung auf Sign-in mit
?next=-Parameter, Token bleibt in der URL erhalten - Eingeloggt: Seite zeigt Firmenname, Einladender-Name und "Einladung annehmen" / "Ablehnen"
- Annehmen: Viewer bekommt einen Seat, wird auf
/de/businessumgeleitet und kann ab sofort Posts im Namen des Ortes erstellen - Token-Schutz: Nach Annahme oder Ablauf ist der Token verbraucht. Ein zweiter Aufruf zeigt einen Fehlerhinweis, kein stilles Doppel-Akzeptieren
5. Haeufige Aktionen
| Aktion | Wo | Wie |
|---|---|---|
| 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=growth | Insights-V2-Dashboard (PRO+) |
| Spenden einrichten (NON_COMMERCIAL) | /de/business/places/{placeId}/donations | Methode IBAN waehlen, IBAN + Empfaenger-Name eingeben |
| Upgrade (Self-Serve) | /de/account/billing | Stripe-Checkout + Portal |
| Upgrade (manueller Antrag) | /de/business/upgrade | Formular fuer Sonderfaelle |
| Team verwalten (ENTERPRISE) | /de/business/team | Einladungen + Seats fuer Kollegen |
| Team-Einladung annehmen | /de/business/team/accept?token=… | Link aus der E-Mail oeffnen |
| Business-Status auf dem Smartphone | Mobile-App → Drawer → Business-Profil | Read-only-Uebersicht (Tier, Trial, Funktionen, Team-Sitze, eigene + delegierte Orte). Aenderungen oeffnen die Web-Oberflaeche im In-App-Browser. |
| Abo-Status auf dem Smartphone | Mobile-App → Drawer → Zahlungen & Abo | Read-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.