Leer lassen = Datum wird automatisch berechnet
Leer lassen = Datum wird automatisch berechnet
Leer lassen = Datum wird automatisch berechnet
Leer lassen = Datum wird automatisch berechnet
Erstelle Packlisten für verschiedene Ride-Typen. Jede Liste kann beliebig viele Einträge mit Gewicht haben.
Zentrale Verwaltung aller Ausrüstungsgegenstände. Objekte von hier werden in Loadout und Packlisten verwendet.
Wähle Gegenstände aus dem Katalog für die Loadout-Seite. Die Reihenfolge entspricht dem Katalog.
Kontaktanfragen werden auf dem Pi gespeichert und per E-Mail an [email protected] weitergeleitet (Self-Hosted via Pi-API + Gmail SMTP). Eingegangene Nachrichten sind unter Nachrichten in der Sidebar einsehbar.
Alle eingegangenen Nachrichten aus dem Kontaktformular. Nachrichten älter als 12 Monate sind rot markiert (DSGVO-Löschfrist).
Fotos, die eingeloggte Mitglieder hochgeladen haben. Nach deiner Freigabe erscheinen sie im Bild-Pool der Galerie.
Bilder können hinzugefügt, entfernt und als "Hoch" (doppelte Höhe) oder "Breit" (doppelte Breite) markiert werden.
Der neueste sichtbare Beitrag erscheint auf der Hauptseite. Beiträge sind nach Datum sortiert.
📦 Gegenstände werden im verwaltet.
Erstelle Packlisten und wähle Gegenstände aus dem Katalog aus. Gegenstände zuerst im Katalog anlegen.
Diese Fragen erscheinen auf der Startseite als Akkordeon + als FAQPage Schema.org für KI-Suchmaschinen (AEO/GEO).
Einstellungen für map.html. Events und Rideouts werden über die jeweilige "Auf Karte anzeigen"-Checkbox beim GPX-Upload eingeblendet.
Fixe Startpunkte der wöchentlichen Rideouts. Diese Marker erscheinen auf map.html unabhängig von einzelnen Rides.
Diese Angaben sind gesetzlich vorgeschrieben und erscheinen auf der öffentlichen impressum.html. Pflichtfelder: Name, Adresse, E-Mail.
Nur ausfüllen wenn abweichend von den Angaben oben (z.B. bei redaktionell journalistischen Inhalten).
Tipp: Ein vollständiger Haftungsausschluss-Text kann z.B. von eRecht24.de kostenlos generiert werden.
Pflichtangaben: Name, Anschrift, E-Mail-Adresse.
Bei Vereinen: Vertretungsberechtigter Vorstand + Registergericht + Registernummer.
Empfehlung: Vor Veröffentlichung rechtliche Beratung einholen oder einen Impressumsgenerator nutzen.
Rollen vergeben, Accounts sperren/entsperren, Passwort-Reset auslösen und DSGVO-Aktionen durchführen.
Featured Events können hier erneut in den Newsletter aufgenommen werden, auch wenn sie seit dem letzten Versand nicht neu sind.
Übersicht der geplanten Features. Klicke auf einen Eintrag für die ausführliche Dokumentation.
Eigene Feature-Ideen & Notizen, die im Browser gespeichert werden.
Referenz fuer alle im System vorkommenden Fehlermeldungen. Nutze die Suche um eine konkrete Fehlermeldung schnell zu finden oder stoebere durch die Domaenen.
| Code | Bedeutung | Typische Ursache |
|---|---|---|
400 | Bad Request | Input-Validierung fehlgeschlagen (zu kurz, zu lang, Pflichtfeld fehlt, falsches Format) |
401 | Unauthorized | JWT abgelaufen oder ungueltig. Frontend sollte neu einloggen. Bei Admin-Seiten: Re-Login ueber login.html |
403 | Forbidden | Eingeloggt, aber Rolle/Owner reicht nicht (z.B. Member versucht Admin-Endpoint). Auch: Account gesperrt. |
404 | Not Found | ID gibt es nicht (mehr). Bei Uploads/Messages oft: bereits geloescht. |
409 | Conflict | Zustand passt nicht zur Aktion (2FA schon aktiv, letzter Admin, Mail nicht veraendert, ...) |
410 | Gone | Eintrag wurde bereits anonymisiert/geloescht. Repeat-Call abfangen. |
413 | Payload Too Large | Bild > 3 MB Base64 (express.json limit). Client-Kompression pruefen. |
429 | Rate-Limit | Zu viele Requests. Pro-Route verschieden (Gallery-Upload 10/h, Export 10/h, Magic-Link 5/h, Kampagne 3/h) |
500 | Interner Fehler | Server-Bug oder DB-Problem. Logs pruefen: pm2 logs mag-biking-api --lines 30 |
501 | Not Implemented | Feature nicht konfiguriert (z.B. Strava-OAuth ohne Client-ID in .env) |
| Du siehst | Bedeutet | Diagnose |
|---|---|---|
| „Fehler beim Laden der Benutzerliste" | Backend 500 von /api/admin/users |
Pi-API Code veraltet? deploy.sh laufen lassen. Dann Pi-Logs: pm2 logs |
| „Nicht eingeloggt" beim Admin | JWT fehlt in localStorage (mb_access_token) |
Login via login.html. Bei abgelaufener Session automatischer Logout normal nach 7 Tagen. |
| „403 – Keine Berechtigung" im Admin | JWT ist gueltig, aber Rolle != admin/editor | In Benutzerverwaltung pruefen: eigene Rolle richtig? Ggf. ueber einen anderen Admin setzen lassen. |
| Admin-Queue zeigt Zahl aber keine Bilder | CSP-Violation beim Laden von api.mag-biking.com |
admin.html CSP img-src muss https://api.mag-biking.com enthalten. Hart-Refresh (SW-Cache). |
| Galerie-Slider bewegt sich nicht | prefers-reduced-motion im System aktiv |
Seit 20260424: animation-duration auf 600s statt 0, d.h. extrem langsam. Vorher kompletter Stopp. |
| Hero-Stat zeigt „0" | IntersectionObserver hat nicht gefeuert ODER data-target ist 0 | Seit 20260424: 3s-Fallback im counter.js forced die Animation. Content-Data pruefen (hero.stats[*].value). |
| Mobile-Upload oeffnet nur Kamera | capture="environment"-Attribut |
Seit 20260424 entfernt. Cache killen (SW + Browser). |
| Magic-Link fuehrt nicht zu Admin | redirect-Param ging beim Klick auf Email-Link verloren |
Seit 20260423: Puffer in localStorage (mb_pending_redirect) fuer Flow ueberleben. |
| Community-Bild nicht in Galerie | Upload ist noch nicht approved ODER Admin-Split-Logik: „junge" Items bleiben im oberen Strip | Admin-Galerie-Queue oeffnen + freigeben. Nach 7 Tagen wandern Items automatisch in die untere Galerie. |
# API-Logs in Echtzeit: pm2 logs mag-biking-api # Letzte 30 Eintraege (ohne Follow): pm2 logs mag-biking-api --lines 30 --nostream # Status + Uptime: pm2 info mag-biking-api # Nach Deploy neu starten (lädt .env neu): pm2 restart mag-biking-api --update-env # DB-Gesundheit: last 10 audit-log Eintraege sqlite3 /home/lucas/mag-biking-api/mag-biking.db \ "SELECT created_at, action, target_user_id FROM audit_log ORDER BY created_at DESC LIMIT 10"