La prévisualisation s'affiche ici dès que vous saisissez un titre…
Dashboard
Vue d'ensemble de l'API RideXplorers
Données RCDB + Coaster.Cloud
Attractions
—
RCDB + Coaster.Cloud
Parcs
—
RCDB + Coaster.Cloud
Matchs confirmés
—
Coaster.Cloud ↔ RCDB
Matchs en attente
—
À valider dans Matching
Attractions RCDB
—
IDs 1 – 999 999
Attractions CC-only
—
IDs ≥ 1 000 000
ThemeParks.wiki (temps réel)
Destinations + parcs
—
Catalogue TPW
Entités TPW
—
Attractions / shows / restaurants
Parcs matchés
—
— pending
En opération
—
sur — entités tracked
Communauté
Utilisateurs
—
Comptes enregistrés
Sessions actives
—
Connexions en cours
Cadences observées
—
— depuis 24 h
Specs à valider
—
— approuvées · — rejetées
Système
Santé système
Chargement…
Processus PM2
Chargement…
Jobs récents
Centre de jobs en cours d'implémentation (piste B). Les jobs lancés depuis l'admin (matching, test data, services) apparaîtront ici en temps réel avec leur statut et leur historique.
Activité récente (Better-Auth)
| Action | Utilisateur | IP | Date |
|---|
Monitoring
Métriques temps réel du serveur
CPU Load (1m)
—
Mémoire utilisée
—
Disque utilisé
—
Uptime serveur
—
API : —
Utilisation ressources
CPU load0
Mémoire0%
Disque0%
Processus PM2
| # | Nom | Statut | CPU | RAM | Redémarrages | PID | Uptime |
|---|
Système
Processus PM2 et journaux applicatifs
Zone dangereuse — Serveur
Scraping & Import
Mise à jour complète de la base de données
🕐 Scheduler automatique
Relance le pipeline complet à intervalle aléatoire (48h–120h par défaut) — sans doublon avec le bouton manuel
Chargement…
Prochain run
—
Dernier run
—
Fenêtre aléatoire
—
minimum — maximum
Configuration avancée
📜 Historique des runs
Chargement…
⚡ Rafraîchissement complet
Override manuel — le scheduler automatique gère les runs récurrents
En attente
Scraping individuel
Coasters complets
Scrape tous les coasters + photos depuis RCDB
Parcs à thème
Scrape les parcs depuis RCDB
Coasters aléatoires
Scrape un sous-ensemble aléatoire
Mapping photos
Associe les photos aux coasters
coaster.cloud
Scrape parcs + attractions depuis coaster.cloud
Console — Cliquez sur une carte pour afficher ses logs
Import JSON → SQL
Importe les fichiers JSON scraptés dans PostgreSQL (truncate + reload)
Parcs à thème
theme-parks.json → DB
Attractions
coasters.json → DB
Attractions brutes
coasters-raw.json → DB
Coaster.Cloud
Matching + enrichissement CC → DB
Aucun import actif
Historique scraping
| # | Script | Statut | Début | Fin | Logs |
|---|
Centre de jobs
Historique des actions admin avec leur statut et résultat
Utilisateurs
Comptes, sessions, audit et données de test
| Nom | Rôle | Statut | Créé | Actions |
|---|
Matching
Valider les correspondances entre les sources externes et RCDB
Live Data
Monitoring temps réel des temps d'attente et du polling ThemeParks.wiki / Disneyland Paris
Contributions
Observations de cadence et propositions de specs soumises par les Explorers
Observations cadence
—
— users / — attractions
Cadence (24h)
—
Sessions enregistrées
Propositions de specs
—
— en attente
Specs approuvées
—
— rejetées
Cadence d'embarquement
| Attraction | Parc | Utilisateur | Dispatches | Durée | Dispatches/h | Headway | Date |
|---|
Propositions de specs
| Attraction | Parc | Utilisateur | Champ | Valeur | Source | Statut | Date | Actions |
|---|
Routes API
Activer ou désactiver chaque endpoint individuellement
News
Gestion des articles du blog (table
blog_news)Articles
—
Visibles
—
Cachés
Parcs
—
Attractions
—
Articles
| ID | Image | Titre | Type | Parc / Attraction | Pays | Statut | Mise à jour | Actions |
|---|
Notifications
Alertes utilisateurs (temps d'attente, statut), devices APNs et push manuel.
Alertes
–
–
Devices iOS
–
–
Déclenchées 24h
–
–
APNs
–
–
Répartition par type
Alertes
| Utilisateur | Attraction | Type | Payload | Statut | Créée | Last fire | Actions |
|---|---|---|---|---|---|---|---|
| Chargement… | |||||||
Newsletter
Abonnés Listmonk — source de vérité pour les emailings
ℹ️
Newsletter ≠ comptes app.
S'inscrire à la newsletter sur
S'inscrire à la newsletter sur
ridexplorers.com n'ouvre pas de compte sur l'app ni sur le backend. Inversement, les utilisateurs de l'app ne reçoivent pas la newsletter sauf opt-in explicite. Cette page liste les abonnés gérés par Listmonk (mailing externe) ; les comptes de l'app sont sous Communauté → Utilisateurs.
Abonnés
—
Total Listmonk
Actifs
—
status = enabled
Nouveaux ce mois
—
Inscriptions du mois
Bloqués / désactivés
— / —
disabled / blocklisted
Segment Listmonk
Avec compte app
—
Abonnés newsletter qui ont aussi un compte sur l'app. Bascule auto via Better-Auth.
Segment Listmonk
Sans compte app
—
Cible idéale pour un push « rejoignez-nous sur l'app » ou un teaser TestFlight.
Par liste
Par source d'import
Inscriptions (6 derniers mois)
Campagnes récentes
Toutes →
Modèles d'email
Prêts à coller dans une campagne Listmonk
Abonnés
| Nom | Statut | Compte app | Source | Listes | Inscrit le |
|---|
OSM – POIs des parcs
27 types indexés (toilettes, resto, transport, boutiques…) depuis OpenStreetMap via Overpass. © OpenStreetMap contributors.
Parcs avec coords
–
Parcs syncés
–
Parcs avec POIs
–
POIs indexés
–
Toilettes
–
Parcs en erreur
–
Synchronisation
Le sync interroge l'API Overpass autour du centroïde de chaque parc (rayon
OVERPASS_RADIUS_M). Une seule requête par parc couvre les 27 types (services, resto, transport, famille, shops). Les parcs syncés il y a moins de 30 jours sont sautés — utiliser « Force all » pour outrepasser. Logs live sur la page Scraping.
Parcs
Opérateurs
Rattachement des parcs aux chaînes (Disney, Universal, Six Flags…). L'heuristique automatique tagge sur le nom ; corrige les faux positifs et tague les non rattachés ici.
Répartition
Chargement…
Logos des opérateurs
PNG / JPEG / WebP / SVG / GIF / AVIF (≤ 5 MB). Le serveur valide via sharp puis normalise en PNG (max 1024×1024). Cache-bust automatique à chaque mise à jour.
| Logo | Opérateur | Actions |
|---|---|---|
| Chargement… | ||
Sélection :
0
| Nom | Ville | Pays | Opérateur |
|---|
Fichiers
Upload de fichiers arbitraires (PDF, images, archives, ...) avec URL publique
api.ridexplorers.com/files/<slug>.Uploader un fichier
Tous formats acceptes (≤ 50 MB). Le slug est l'identifiant dans l'URL publique : si vide, un slug aleatoire est genere. Caracteres autorises : lettres, chiffres,
-, _, . (max 128, pas de ..).
Aucun fichier selectionne
Fichiers uploades
| Fichier | Slug | Type | Taille | Uploadé | Actions |
|---|---|---|---|---|---|
| Chargement… | |||||
Sécurité & anti-scraping
Rate limit nginx + helmet + CrowdSec. Modifications synchronisées sur les deux whitelists via un helper sudo. Détails : docs/security/anti-scraping.md.
Status global
Whitelist (nginx + CrowdSec)
IPs jamais rate-limitées et jamais bannies
L'ajout/retrait modifie atomiquement
/etc/nginx/conf.d/ridexplorers-rate-limit.conf et /etc/crowdsec/parsers/s02-enrich/ridexplorers-whitelist.yaml puis reload les deux services.| IP | Libellé | Action |
|---|---|---|
| Chargement… | ||
Bannir manuellement une IP
Décision LAPI locale
Crée une décision dans CrowdSec qui est immédiatement propagée au bouncer firewall (DROP au niveau nftables).
Décisions actives (CrowdSec)
0 / 0
Sources : CAPI = blocklist communautaire pull toutes les 10 s ; crowdsec = décision LAPI locale déclenchée par un scenario (http-crawl, http-bad-user-agent, etc.).
| IP | Scenario | Source | Durée | Expire | Action |
|---|---|---|---|---|---|
| Chargement… | |||||
Alertes récentes (overflows locaux)
0 / 0
Chaque ligne = un seuil de scenario CrowdSec dépassé sur ce serveur (avant intégration CAPI). Utile pour comprendre quelles IPs déclenchent vos protections locales.
| IP source | Scenario | Pays | AS | Events | Quand |
|---|---|---|---|---|---|
| Chargement… | |||||