Admin Panel
Vorschau
Schickt die aktuell gewählte Vorschau-Variante mit Beispieldaten an deine Admin-Adresse – auch mit noch nicht gespeicherten Änderungen.
Betreff:
Mail-Aktivität
Lade Protokoll…
Registrierungen verwalten
Lade Registrierungen...
Anmeldungen für Treffen
Wer sich über das Anmeldeformular auf der Webseite für ein Treffen angemeldet hat – gruppiert nach Termin.
📨 Jede Anmeldung löst automatisch eine Bestätigungs-Mail an den Absender aus. Betreff und Aussehen dieser Mail lassen sich im Tab E-Mail anpassen (mit Live-Vorschau).
Lädt…
Anträge auf Mitgliedschaft
Wer das Formular „Mitglied werden“ auf der Webseite ausgefüllt hat – neueste zuerst.
📨 Jeder Antrag löst automatisch eine Bestätigungs-Mail an den Antragsteller und eine Meldung an den Vorstand aus. Empfänger und SMTP-Einstellungen im Tab E-Mail.
Lädt…
Neues internes Foto / Rolle
Pinnwand Moderation
Besucherstatistiken
Besucher nach Land
Betriebssysteme
Browser
Top Bildschirmauflösungen
Besucherprotokoll (Letzter Besuch pro IP)
| Letzter Besuch | IP Adresse | Land | Browser | Betriebssystem | Auflösung |
|---|
Lade Protokoll...
Benutzerverwaltung
Neuen Benutzer anlegen
Bestehende Mitglieder
Lade Benutzer...
Datei-Verwaltung (Assets)
Hier sehen Sie eine Liste aller hochgeladenen Bilder und Dokumente. Sie können nicht mehr benötigte Dateien hier endgültig löschen.
Lade alle Dateien...
🔥 Firebase Projekt
| Projekt-ID | vwbusclub-webseite |
| Projekt-Nummer | 422043806194 |
| Hosting URL | https://vwbusclub-webseite.web.app |
| Admin URL | https://vwbusclub-webseite.web.app/admin.html |
| Firebase Konsole | console.firebase.google.com |
| Storage Bucket | vwbusclub-webseite.firebasestorage.app |
| Auth Domain | vwbusclub-webseite.firebaseapp.com |
| SuperAdmin E-Mail | support@mhwe.net |
| Firebase CLI Konto | mhwe.services@gmail.com |
📁 Firestore Collections
| Collection | Zweck | Wichtige Felder |
|---|---|---|
| boardMembers | Vorstandsrollen + Fotos | imageUrl, name, email, phone, photoId |
| internalPhotos | Interne Galerie / Vorstandsfotos | imageUrl, storagePath, text, published |
| guestPhotos | Öffentliche Bullifotos | imageUrl, storagePath, published |
| events | Termine / Veranstaltungen | title, text, startDate, endDate, imageUrl, published |
| documents | Dokumente (PDF) | title, storagePath, coverUrl, coverSize, published |
| bulliMagPdfs | Bulli MAG Ausgaben (PDF) | title, storagePath, coverUrl, coverSize, published |
| sponsors | Sponsoren | displayName, logoUrl, sponsorUrl, published |
| pinnboardPosts | Pinnwand (Baum via parentId) | type, title, content, imageUrl, parentId, public, locked, authorId |
| memberProfiles | Mitglieder-Profile (Doc-ID = uid) | displayName, email, phone, bio, avatarUrl, emailNotify |
| chatMessages | Gruppen- / Kanal-Nachrichten | text, authorId, authorName, authorAvatar, channel, imageUrl, createdAt |
| directMessages | 1-zu-1 Direktnachrichten | text, authorId, participants[2], createdAt, editedAt |
| chatReads | Gelesen-Zeitstempel je Mitglied | group, dm_<uid> (ms-Zeitstempel) |
| dmReads | Gelesen-Quittungen für DMs | participants[2], <uid>: ms |
| presence | Online-Status (Doc-ID = uid) | lastActive, status, customStatus, typingIn |
| channels | Chat-Kanäle | name, createdBy, createdAt |
| siteContent | Impressum, SEO, Rollen | Docs: impressum, seo (inkl. chatUrl), boardRoleNames, boardRoleVisibility |
| userPermissions | Zugriffsrechte je Benutzer | email, displayName, permissions {read, write je Bereich} |
| userRegistrations | Selbstregistrierungen (Freigabe-Queue) | email, firstName, lastName, status (pending/approved) |
| eventRegistrations | Treffen-Anmeldungen (1 Datensatz je Teilnehmer & Treffen) | firstName, lastName, email, busType, plate, persons, remark, eventId, eventTitle, eventDate, status, ip, ipCountry, updatedIp, cancelledIp |
| membershipApplications | Mitgliedschaftsanträge | firstName, lastName, birthDate, couple, Adresse, photoUrl, … |
| visitorLog | Besucherprotokoll / Statistik | ip, country, browser, os, timestamp |
| mailConfig/smtp | SMTP-Zugangsdaten (nur Admin) | host, port, secure, user, pass, fromName, fromAddress, toAddress |
| mailLog | Mail-Versandprotokoll (nur Function schreibt) | type, to, subject, status, error, response, createdAt |
⚡ Cloud Functions
| Funktion | Trigger | Aufgabe |
|---|---|---|
| sharemeta | HTTP GET /share/** | Server-seitige Open-Graph-Tags für Social-Vorschau (Facebook, WhatsApp) |
| onNewRegistration | Firestore onCreate userRegistrations/{id} | Benachrichtigungs-Mail an Admin bei neuer Mitgliederanmeldung |
| onRegistrationApproved | Firestore onUpdate userRegistrations/{id} | Freischalt-Mail an Benutzer wenn status → approved |
| onDirectMessage | Firestore onCreate directMessages/{id} | E-Mail-Benachrichtigung bei neuer DM (Standard: an, Opt-out im Profil). Kein Mail wenn Empfänger Chat gerade aktiv liest (<30s). |
Region: us-central1 · Runtime: Node.js 22 · Projekt: vwbusclub-webseite
🗂️ Storage Ordner
Bucket: vwbusclub-webseite.firebasestorage.app · CORS: GET/HEAD von allen Origins erlaubt (nötig für PDF-Anzeige auf iOS)
🔗 Externe Dienste & Links
| Vereinspost | vereinpost-446828451109.europe-west1.run.appCloud Run · Projekt: vereinpost-app |
| Externer Chat | nicht konfiguriert |
| Formulare | Native Firebase-Formulare (kein Cognito mehr): Treffen → eventRegistrations, Mitgliedschaft → membershipApplications, Konto → userRegistrations |
| Geo-IP Fallback | ipwho.is → geojs.io → ipapi.co |
⚙️ Deployment
# Alles deployen
firebase deploy --project vwbusclub-webseite
# Nur Hosting (index.html + admin.html)
firebase deploy --only hosting --project vwbusclub-webseite
# Nur Functions
firebase deploy --only functions --project vwbusclub-webseite
# Vereinspost (Cloud Run)
cd ~/Claude-Projekte/vereinpost
gcloud run deploy vereinpost --source . --region europe-west1 --project vereinpost-app