# La Voix du Peuple **Plateforme civique de démocratie participative assistée par IA** > *Un espace d'expression citoyenne — pas un sondage, pas une vérité établie.* --- ## Présentation **La Voix du Peuple** permet à des citoyens de soumettre librement des propositions politiques en texte libre. Chaque contribution est automatiquement : 1. **Filtrée** par une IA selon le droit international des droits humains (DUDH, PIDCP, CEDH, Charte UE, CERD, Statut de Rome) 2. **Intégrée** à une synthèse collective structurée par thèmes 3. **Mise à disposition** des élus et décideurs sous forme lisible La plateforme ne produit pas un consensus, ni une vérité : elle donne à voir ce que des citoyens ont choisi d'exprimer, tel quel. La démarche est portée par un auteur attaché à l'expertise et au dialogue fondé sur les preuves. --- ## Captures d'écran ### Page principale — soumission et synthèse en temps réel ![Page principale](screenshots/home.jpg) ### À propos — concept et posture éditoriale ![À propos](screenshots/about.jpg) ### Fonctionnement — parcours d'une contribution ![Fonctionnement](screenshots/transparence.jpg) ### Flyer QR — diffusion physique imprimable ![Flyer QR](screenshots/flyer.jpg) --- ## Fonctionnalités | Fonctionnalité | Description | |----------------|-------------| | Soumission libre | Formulaire texte avec pseudonyme optionnel | | Modération IA | Filtre automatique fondé sur le droit international | | Synthèse thématique | Résumé en temps réel par Mistral Large | | Export PDF | Synthèse mise en page, générée côté client | | Partage horodaté | Copie dans le presse-papier ou partage natif mobile | | Flyer QR imprimable | Flyer A4 avec QR code configuré sur votre domaine | | Dark mode | Thème sombre pétrol | | Accessibilité | Police dyslexie · Contraste élevé · Texte agrandi · Navigation clavier | --- ## Stack technique | Couche | Technologie | |--------|-------------| | Frontend | React 18 · TypeScript · Vite 7 · Tailwind CSS · shadcn/ui | | Backend | Python 3.11 · Flask 3 · Gunicorn | | Base de données | PostgreSQL 15 | | IA — modération | Mistral Small (`mistral-small-latest`) | | IA — synthèse | Mistral Large (`mistral-large-latest`) | | QR code | `qrcode.react` | --- ## Installation rapide (RockyLinux) Voir le guide complet → [`docs/INSTALL_ROCKY.md`](docs/INSTALL_ROCKY.md) ```bash # Cloner le dépôt git clone https://homegit.gyozamancave.fr/billisdead/la-voix-du-peuple.git cd la-voix-du-peuple # Configurer l'environnement cp .env.example .env vim .env # DATABASE_URL, MISTRAL_API_KEY, SESSION_SECRET # Définir le domaine et construire le frontend bash scripts/set-domain.sh https://votredomaine.fr # Démarrer les services systemctl start voix-du-peuple-api systemctl start nginx ``` Le site écoute sur le **port HTTP 8080**. Vous gérez le HTTPS en amont. --- ## Variables d'environnement clés ```env # Base de données DATABASE_URL=postgresql://user:pass@localhost:5432/voix_du_peuple # IA (Mistral recommandé — souveraineté européenne) MISTRAL_API_KEY=sk-... # Sécurité (obligatoire en production) SECRET_KEY=une-longue-chaine-aleatoire-minimum-32-chars ADMIN_SECRET=votre-mot-de-passe-admin # Anti-abus (optionnel — valeurs par défaut raisonnables) REDIS_URL=redis://localhost:6379/0 RATE_LIMIT_CONTRIBUTIONS=5 per minute;3 per hour CONTRIBUTION_COOLDOWN_SECONDS=3600 FLOOD_THRESHOLD=10 # hCaptcha (optionnel — recommandé en production) HCAPTCHA_SECRET_KEY=votre-cle-secrete # Frontend VITE_APP_URL=https://votredomaine.fr VITE_HCAPTCHA_SITE_KEY=votre-cle-de-site # Nécessite rebuild frontend ``` --- ## Changer de domaine (QR code) ```bash bash scripts/set-domain.sh https://nouveaudomaine.fr systemctl reload nginx ``` --- ## Synchroniser avec ce dépôt (depuis Replit) ```bash bash scripts/push-gitea.sh ``` Prérequis : secret `GITEA_TOKEN` configuré dans Replit → Secrets. --- ## Documentation | Document | Contenu | |----------|---------| | [`docs/DAT.md`](docs/DAT.md) | Architecture technique complète | | [`docs/DEX.md`](docs/DEX.md) | Guide d'exploitation et maintenance | | [`docs/WIKI.md`](docs/WIKI.md) | Page wiki — présentation générale | | [`docs/INSTALL_ROCKY.md`](docs/INSTALL_ROCKY.md) | Installation sur RockyLinux 9 | | [`docs/GITEA_TUTO.md`](docs/GITEA_TUTO.md) | Synchronisation Replit → Gitea | | [`docs/SECURITE_ANTI_ABUS.md`](docs/SECURITE_ANTI_ABUS.md) | Protections anti-bot, flood, rate limiting, hCaptcha | --- ## Licence Ce projet est publié sous **[European Union Public Licence v. 1.2 (EUPL-1.2)](LICENSE)**. L'EUPL-1.2 est la licence open source officielle de l'Union européenne. Elle est : - **Compatible** avec la GPL v2/v3, l'AGPL v3 et la MPL 2.0 (cf. Appendice) - **Reconnue** par la Commission européenne et les institutions publiques de l'UE - **Adaptée** aux projets civiques et associatifs souhaitant une réutilisation libre sous condition de réciprocité (copyleft) - **Disponible** en 23 langues officielles de l'UE — voir [joinup.ec.europa.eu](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12) Ce choix est cohérent avec la posture souveraineté numérique européenne du projet et permet à toute association, mairie ou collectif de reprendre et déployer cet outil sous les mêmes conditions.