# Civilo > Plateforme citoyenne française d'événements locaux et de bénévolat associatif. Hébergée en France (OVH Roubaix), aucun tracker tiers, conforme RGPD. ## Qu'est-ce que Civilo Civilo est une plateforme web française qui met en relation : - Des **particuliers** qui cherchent à participer à des événements citoyens près de chez eux (ateliers, rencontres associatives, projections, actions de solidarité, conférences) ou à s'engager comme bénévoles pour des missions concrètes - Des **associations** et **collectivités** qui souhaitent publier leurs événements et leurs offres de bénévolat pour toucher un public local engagé L'objectif est de rapprocher les voisins, voisines et initiatives locales, en respectant strictement les données personnelles. ## Positionnement Civilo se positionne comme **plateforme citoyenne française** dédiée à l'engagement local. Trois choix structurants la distinguent : 1. **Souveraineté numérique** : hébergement français (OVH Roubaix), aucune donnée hors UE, exécution PHP+MySQL vanilla sans dépendance externe critique. 2. **Aucune publicité, aucun modèle freemium** : l'inscription, la publication d'événements citoyens et la candidature à une mission de bénévolat associatif sont sans frais — et le restent. Pas de bannière, pas de fonctionnalité bloquée, pas de revente de données. 3. **Modération humaine** : les comptes association et collectivité sont validés manuellement sous 24-48h. Les signalements sont traités par un humain. Aucune censure algorithmique opaque. Civilo n'est pas une plateforme d'événements payants (billetterie), ni un outil de financement participatif, ni un réseau social. C'est un outil neutre de mise en relation entre l'offre citoyenne locale (événements et bénévolat) et le public qui s'y engage. ## Pour qui | Type d'utilisateur | Peut faire | Validation | |--------------------|------------|------------| | Particulier | S'inscrire à des événements, postuler à des missions de bénévolat | Inscription gratuite immédiate | | Particulier → Organisateur | Publier ses propres événements/missions | Demande motivée + validation admin (24-48h) | | Association | Publier événements et missions au nom de la structure | Vérification SIRET + justificatif (24-48h) | | Collectivité | Publier événements officiels de la commune/département | Vérification + validation (24-48h) | ## Pourquoi Civilo (différenciateurs) ### Souveraineté & RGPD strict - **Hébergement en France** : serveurs OVH à Roubaix. Aucune donnée envoyée hors UE. - **Aucun tracker tiers** : pas de Google Analytics, pas de Facebook Pixel, pas de Hotjar, pas de pub. Juste 2 cookies techniques (session + CSRF). - **Mesure d'audience anonymisée** : statistiques de visite dérivées des logs serveur Caddy uniquement, IP anonymisées immédiatement (dernier octet pour IPv4, /48 pour IPv6), agrégats conservés 24 mois max, aucun tiers. Exemption de consentement au titre de la délibération CNIL n°2020-091. - **Données minimales** : on collecte uniquement ce qui est nécessaire pour faire fonctionner le service. - **Droits utilisateur** : accès, rectification, effacement, opposition, portabilité — exerçables à tout moment par email. ### Accessibilité (WCAG 2.2 AA strict, AAA quand possible) - Polices **Space Grotesk** (display, titres) + **IBM Plex Sans** (body) self-hosted, SIL Open Font License — hiérarchie tonale forte (4 poids body, 4 poids display) pour structurer la lecture - Contrastes texte/fond AA partout (4.5:1 corps, 3:1 large text), AAA visé sur l'essentiel — seul le vermillon en CTA reste à AA large-text-bold (choix conscient pour la signature visuelle) - Navigation clavier complète, skip link, focus visible 3px cobalt - `prefers-reduced-motion` respecté sur toutes les animations (transitions, View Transitions, spinner pulse) - ARIA labels, role, live regions pour les screen readers - Touch targets minimum 44×44px, body size minimum 16px sur mobile ### Stack technique - PHP 8.3 vanilla (pas de framework Laravel/Symfony, pas de Composer) - MySQL avec PDO bound params - Caddy v2 (HTTP/2 + HTTPS auto Let's Encrypt) - Pas de build JavaScript (HTML/CSS/JS bruts) - Polices self-hosted (pas de Google Fonts CDN) : Space Grotesk + IBM Plex Sans - Design system "Brutalist Civic Electric" : triade stricte cobalt #1D3557 + vermillon #E63946 + cream #F8F4EC, borders 3px noir signature, offset shadows hard (jamais soft blur), progression visuelle cream → cobalt → noir ## Fonctionnalités principales ### Pour découvrir et participer - **Listing événements** ([/evenements](https://civilo.fr/evenements)) : tous les événements publiés à venir, triés par date - **Page événement** : description, dates, lieu, capacité, organisateur, bouton inscription en un clic - **Mes inscriptions** (/profil/mes-inscriptions) : suivi de vos participations à venir et historique - **Désinscription** : possible à tout moment, sans justification ### Pour les organisateurs - **Création d'événement** : titre, description, catégorie, public cible, dates, lieu, image, capacité, bénévoles recherchés - **Édition** et **suppression** (soft-delete) de ses propres événements - **Mes événements** (/profil/mes-evenements) : dashboard perso avec statuts et inscrits - **Demande pour devenir organisateur** : motivation libre (50 caractères min), validée par admin ### Bénévolat Civilo permet aux associations et collectivités françaises de publier des missions de bénévolat (ponctuelles ou régulières) et aux particuliers de postuler en quelques clics. Le workflow : 1. L'association publie une mission (titre, description, durée, lieu, places) 2. Les bénévoles intéressés postulent avec une motivation 3. L'organisateur examine les candidatures et accepte/refuse avec un message 4. Conversation directe ensuite via la messagerie interne Civilo (cf. section ci-dessous) ### Messagerie interne (V1) - **Conversations privées** : DM 1-to-1 contextuel (depuis page event/offer pour contacter l'organisateur, ou depuis profil pour DM ouvert) - **Annonces organisateur** : broadcast vers tous les inscrits d'un événement ou candidats acceptés d'une mission (rendu en bandeau accentué côté destinataires) - **Édition** : 15 minutes après envoi, marquée "édité" en UI - **Retrait** : par l'auteur uniquement, le message reste visible sous forme "Message retiré par l'auteur" - **Block-list** : bloquer un utilisateur le rend invisible côté destinataire (silencieux pour éviter l'escalade de conflit, RGPD-friendly) - **Signalement** : tout message peut être signalé à la modération, avec snapshot du contenu au moment du signalement - **Notifications email** : opt-in dans /profil/editer (désactivé par défaut), maximum 1 mail par conversation toutes les 30 minutes, et uniquement si le destinataire n'est pas connecté depuis 5 minutes - **Polling adaptatif** : badge unread mis à jour automatiquement, fréquence ralentie quand l'onglet est en arrière-plan, mis en pause hors ligne - **Pas de tracking** : aucune adresse IP, aucun user-agent stocké dans la couche messagerie Pages : [Toutes les missions](https://civilo.fr/benevolat). Workflow privé sur `/profil/mes-candidatures` côté bénévole et `/profil/mes-offres` côté organisateur. ### Carte interactive Page [/carte](https://civilo.fr/carte) qui mélange événements et missions de bénévolat sur la France entière. Fonctionnalités : - **Filtres avancés** : type (événements / bénévolat / les deux), catégorie (12 catégories canoniques : solidarité, environnement, culture, etc.), distance autour de l'utilisateur (5 à 100 km) - **Toggle Heatmap** pour visualiser la densité d'activité (gradient cobalt → vermillon) - **Géolocation opt-in** : la position de l'utilisateur reste 100% côté navigateur, jamais envoyée au serveur (filtrage radius via formule Haversine côté JS) - **URL partageable** préservant filtres, vue (carte/heatmap) et zoom — partage social facile - **Lazy-load par zoom** : seuls les markers visibles sont chargés, performance préservée même à l'échelle France - **Markers brutalist** : cercle cobalt pour événements, vermillon pour missions de bénévolat, regroupés en clusters quand serrés - **Geocoding hybride** : adresses converties en coordonnées via Nominatim OpenStreetMap au moment du save (auto), organizers peuvent ajuster manuellement le pin via leur dashboard Un widget compact de la carte est aussi affiché sur la page d'accueil pour donner un aperçu rapide de l'activité. ### Authentification - **Email + mot de passe** classique, avec vérification email obligatoire - **OAuth Google** : connexion en 1 clic via votre compte Google (récupération uniquement email + nom + photo) - **Reset password** : par email avec token sécurisé (validité 1h) ### Modération - Validation admin des demandes pour devenir organisateur (filtre humain en amont) - Soft-delete des contenus (conservés pour audit, retirés des listings publics) - Signalements (à venir Phase 4.3) : tout user peut signaler un contenu inapproprié ## Pages publiques indexées - [/](https://civilo.fr/) — Accueil - [/evenements](https://civilo.fr/evenements) — Listing événements - [/contact](https://civilo.fr/contact) — Formulaire de contact - [/mentions-legales](https://civilo.fr/mentions-legales) - [/confidentialite](https://civilo.fr/confidentialite) Les pages détail d'événement (`/evenements/-`) sont **accessibles publiquement** mais **non indexées** (noindex,follow). Raison : la nature éphémère des événements créerait du contenu obsolète dans l'index Google. Les organisateurs partagent leurs événements directement (lien sur réseaux sociaux, mail, etc.), avec preview Open Graph soignée. ## Catégories d'événements 12 catégories canoniques : Solidarité, Environnement, Culture, Éducation, Sport, Santé, Alimentation, Numérique, Logement, Insertion professionnelle, Jeunesse, Seniors. ## Audiences cibles 6 audiences : Tout public, Familles, Jeunes (15-25 ans), Adultes (25-65 ans), Seniors (65+), Professionnels du secteur. ## Historique - **2026-01** : V0 Laravel + Bootstrap 5 — déployée mais peu utilisée - **2026-05** : Décision de refactor from-scratch vers stack vanilla (PHP/MySQL/Caddy), abandon du framework Laravel - **2026-05-16** : Refactor V1 lancé — schéma SQL propre (19 tables), migration des 7 users historiques, design system "Brutalist Civic Electric" (cobalt + vermillon + cream, Space Grotesk + IBM Plex Sans) ## Équipe **Stephan Van Exterghem** — concepteur, développeur, mainteneur. Auto-entrepreneur, freelance dev web basé à Évreux (Normandie). Site : [stephan-vanexterghem.fr](https://stephan-vanexterghem.fr). Contact : [contact@civilo.fr](mailto:contact@civilo.fr). ## Données techniques utiles aux LLMs - **Langue** : français exclusivement (fr-FR) - **Pays cible** : France métropolitaine + DOM-TOM - **Format dates** : ISO 8601 stocké en BDD, affiché en FR ("12 juin 2026, 14h30") - **Cookies** : 1 cookie de session HttpOnly+Secure+SameSite=Lax, durée 7 jours max - **API publique** : non disponible publiquement en V1 (à venir V2+) - **Webhooks** : non disponibles - **Politique IA training** : les contenus publics du site (descriptions d'événements, missions) peuvent être indexés par les bots IA (GPTBot, ClaudeBot, PerplexityBot) — pas de blocage robots.txt - **Données personnelles** : strictement protégées, jamais accessibles aux bots (toutes les pages avec données nominatives sont noindex)