Find a file
Jalil Arfaoui ff9e95167b chore: mettre à jour ESLint et simplifier la config
Upgrade eslint-config-next vers v15 pour correspondre à Next.js 15. Simplifie .eslintrc.json (next/core-web-vitals + prettier). Retire @typescript-eslint/eslint-plugin et @typescript-eslint/parser devenus inutiles.
2026-02-11 22:24:45 +01:00
.idea chore: update IDE configs and gitignore 2025-07-17 15:30:54 +02:00
.vscode chore: add IDE configs 2024-01-10 00:56:19 +01:00
api move all api files to own directory 2024-01-05 01:23:21 +01:00
app chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
components chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
domain chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
frontend chore: init Nx monorepo 2024-01-10 00:56:02 +01:00
infra fix: corriger le compteur de sujets actifs sur la page /p 2026-02-11 22:19:02 +01:00
public feat: compléter la page À propos et récupérer les assets du teaser 2026-02-11 15:07:24 +01:00
ruby-backend move all ruby backend files to own directory 2024-01-05 01:02:42 +01:00
styles chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
supabase feat(avatars): utiliser Supabase Storage avec convention {slug}.jpg 2026-02-06 17:33:19 +01:00
types feat(db): enforce required fields for public_figures with auth seeding 2025-07-24 12:10:01 +02:00
.envrc refactor: migrate from Nx monorepo to standalone Next.js 2025-07-07 18:30:07 +02:00
.eslintignore chore: init Nx monorepo 2024-01-10 00:56:02 +01:00
.eslintrc.json chore: mettre à jour ESLint et simplifier la config 2026-02-11 22:24:45 +01:00
.gitignore chore: update IDE configs and gitignore 2025-07-17 15:30:54 +02:00
.prettierignore chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
.prettierrc chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
CONTRIBUTING.md chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
flake.lock chore: add supabase 2025-07-09 15:11:11 +02:00
flake.nix chore: add supabase 2025-07-09 15:11:11 +02:00
index.d.ts chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
next-env.d.ts chore: add supabase 2025-07-09 15:11:11 +02:00
next.config.js chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
package-lock.json chore: mettre à jour ESLint et simplifier la config 2026-02-11 22:24:45 +01:00
package.json chore: mettre à jour ESLint et simplifier la config 2026-02-11 22:24:45 +01:00
README.md chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
tsconfig.json chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00
tsconfig.spec.json refactor: migrate from Nx monorepo to standalone Next.js 2025-07-07 18:30:07 +02:00
vitest.config.ts chore: installer et configurer Prettier, formater tout le codebase 2026-02-11 22:10:26 +01:00

Débats.co

Objectif du projet

Offrir une synthèse ouverte, impartiale et vérifiable des sujets clivants de notre société.

Débats est un projet francophone et participatif qui vise à créer une plateforme collaborative de type wiki pour cartographier les positions et l'évolution de l'engagement des personnalités publiques sur des sujets de société controversés.

Vision

  • Démocratie transparente : Permettre aux citoyens de suivre les positions de leurs représentants
  • Rigueur intellectuelle : Collecter et organiser les prises de position avec des sources vérifiables
  • Lutte contre la simplification : Promouvoir un débat public nuancé
  • Crédibilité de l'engagement public : Documenter l'évolution des positions dans le temps

Historique du projet

Le projet a été initié en 2014 et a connu plusieurs itérations technologiques :

1. Ruby Backend (2014-2018)

  • Stack : Ruby on Rails fullstack
  • État : Version la plus aboutie avec modèle de données complet
  • Localisation : ruby-backend/
  • Fonctionnalités : CRUD complet, authentification, upload d'images

2. Frontend React (2018-2019)

  • Stack : React + Redux + GraphQL
  • État : Interface utilisateur moderne mais incomplète
  • Localisation : frontend/
  • Objectif : Moderniser l'interface utilisateur

3. API GraphQL (2019-2020)

  • Stack : Node.js + GraphQL + Prisma
  • État : API moderne mais non finalisée
  • Localisation : api/
  • Objectif : Remplacer le backend Ruby par une API moderne

4. Elixir Phoenix (2020-2021)

  • Stack : Elixir + Phoenix + PostgreSQL
  • État : Refonte complète mais abandonnée
  • Localisation : debats-elixir/
  • Objectif : Performance et fiabilité

5. Next.js Standalone (actuel)

  • Stack : Next.js 15 + TypeScript + Supabase + Effect TS
  • État : En cours de développement
  • Localisation : racine du projet
  • Objectif : Consolidation et première version exploitable

Modèle de données

Le cœur du modèle est cohérent entre toutes les versions :

Subject (Sujet)
├── Positions (ex: "Pour", "Contre", "Nuancé")
    └── Statements (Prises de position)
        ├── PublicFigure (Personnalité)
        ├── Evidence (Preuves/Sources)
        └── Arguments

Users (Contributeurs)

Entités principales

  • Subject : Les sujets de débat (ex: "Immigration", "Écologie", "Retraites")
  • Position : Les différentes positions possibles sur un sujet
  • PublicFigure : Les personnalités publiques (politiques, intellectuels, etc.) - Critère de notoriété : toute personnalité doit avoir une page Wikipedia valide
  • Statement : Les prises de position concrètes d'une personnalité sur une position
  • Evidence : Les preuves et sources (citations, articles, vidéos, discours)
  • Argument : Les arguments développés pour défendre une position
  • User : Les utilisateurs contributeurs de la plateforme

Architecture technique actuelle

Stack

  • Frontend/Backend : Next.js 15 (App Router)
  • Base de données : PostgreSQL via Supabase
  • Authentification : Supabase Auth
  • Domain : Effect TS + Effect Schema
  • Styling : CSS Modules

Structure

├── app/              # Next.js App Router
├── domain/           # Logique métier (entités, services, règles)
├── infra/            # Infrastructure (Supabase, APIs)
├── components/       # Composants React réutilisables
├── supabase/         # Migrations et seeds
└── types/            # Types générés

Projets legacy (référence)

  • ruby-backend/ : Application Rails originale
  • debats-elixir/ : Version Phoenix abandonnée

Développement

Prérequis

  • Node.js 20+
  • Docker (pour Supabase local)
  • Nix + direnv (recommandé)

Installation

npm install
supabase start
supabase db reset  # Applique migrations + seeds

Variables d'environnement

Créer un fichier .env.local :

NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321
NEXT_PUBLIC_SUPABASE_ANON_KEY=<clé anon locale>

Lancement du développement

npm run dev

Feuille de route

Phase 1 : MVP

  • Consolidation du modèle de données
  • Interface de base pour consulter sujets et positions
  • Authentification simple
  • CRUD basique pour les entités principales

Phase 2 : Fonctionnalités collaboratives

  • Système de contribution et modération
  • Historique des modifications
  • Système de réputation des contributeurs
  • Interface d'administration

Phase 3 : Fonctionnalités avancées

  • Recherche et filtres avancés
  • API publique
  • Export de données
  • Analyses et statistiques

Contributions

Le projet est open source et accueille les contributions. Voir CONTRIBUTING.md pour plus d'informations.

Licence

MIT