Forum communautaire en Laravel + Tailwind CSS + Alpine.js, avec panel d'administration et panel de modération séparés.
Auteur et mainteneur : Loic VALENCE (valloic.fr)
Ce README couvre une installation locale rapide. Pour un guide complet (prérequis détaillés, installation locale pas à pas, mise en production avec Apache, mise en production avec Nginx, dépannage), consultez le wiki du projet :
https://github.com/Cut0x/forum-php/wiki
- Prérequis
- Installation
- Configuration
- Compte administrateur
- Configuration Apache/XAMPP (production locale)
- Fonctionnalités
- Tests
- Licence
- PHP 8.3+ avec extensions : pdo_mysql, mbstring, openssl, fileinfo, gd
- Composer 2
- Node.js 18+ et npm
- MySQL 8 ou MariaDB 10.4+
composer install
npm install
cp .env.example .env
php artisan key:generateÉditez .env et renseignez vos identifiants MySQL (DB_DATABASE, DB_USERNAME, DB_PASSWORD), puis créez la base :
mysql -u root -e "CREATE DATABASE forum CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"Migrations, données de base et lien de stockage :
php artisan migrate --seed
php artisan storage:linkLe seeder par défaut crée les catégories, badges et réglages de base (sans contenu de démonstration). Pour peupler le forum avec des utilisateurs/sujets/messages factices en local :
php artisan db:seed --class=DemoContentSeederBuild des assets (Tailwind + Alpine via Vite) :
npm run build # une fois
npm run dev # en développement, avec hot-reloadLancer le serveur de développement :
php artisan serveLe site est alors accessible sur http://127.0.0.1:8000.
Toute la configuration applicative (hors thème) passe par .env. Les réglages éditables depuis l'admin (titre du site, couleurs, police, footer, lien de soutien…) sont stockés en base et gérés dans /admin.
APP_URLdoit correspondre à l'URL réellement utilisée (impacte les liens absolus, l'upload d'images, etc.).MAIL_MAILER=logpar défaut : les emails (notifications, avertissements) sont écrits dansstorage/logs/laravel.log. Configurez un vrai transport SMTP en production.
Créez ou promouvez un compte administrateur avec :
php artisan app:create-adminLa commande demande un email : si le compte existe déjà, il est promu admin ; sinon elle crée le compte.
Laravel sert l'application depuis le dossier public/, ne pointez jamais un vhost directement sur la racine du projet. Deux options :
Option recommandée : vhost dédié
<VirtualHost *:80>
ServerName forum.local
DocumentRoot "C:/Users/loic/Documents/Xampp/htdocs/forum-php/public"
<Directory "C:/Users/loic/Documents/Xampp/htdocs/forum-php/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>Ajoutez 127.0.0.1 forum.local à votre fichier hosts, puis réglez APP_URL=http://forum.local dans .env.
Option rapide (dev uniquement) : php artisan serve (voir section 2), pas de configuration Apache nécessaire.
Pour un déploiement en production réel (serveur Linux, Apache ou Nginx, HTTPS, file d'attente, cron, permissions), suivez le guide dédié du wiki plutôt que cette section, qui ne couvre que l'usage local sous XAMPP.
- Mise en page façon Reddit : sidebar de navigation/catégories, fil de sujets en cartes avec flèches de vote, sidebar contextuelle (infos catégorie/sujet).
- Catégories, sujets et messages en Markdown (mentions
@pseudo, émotes:nom:, images), vote +1/-1 sur les sujets et sur les messages, notifications. - Réponses en fil de discussion : chaque message peut être répondu individuellement (indentation + ligne de connexion vers le parent), avec pré-remplissage automatique de la mention
@pseudodu message parent — ce qui déclenche automatiquement une notification à son auteur. - Profils (avatar, bio, liens), paramètres de compte (email, mot de passe, export de données, suppression de compte).
- Badges à règles configurables : chaque badge peut être manuel, ou attribué automatiquement selon un seuil de messages/sujets, l'ancienneté du compte, ou le rôle — le tout depuis
/admin/badges(voir le wiki, page Badges). - Panel admin (
/admin, rôleadmin) : réglages du site, thème (couleurs clair/sombre, police, logo de navigation, favicon, logo de pied de page, presets), catégories, footer, badges (icône, règle d'attribution), émotes, gestion des rôles. - Panel de modération (
/moderation, rôlesmoderatoretadmin) : file de signalements, verrouillage/épinglage/déplacement de sujets, suppression de messages, avertissements et suspensions temporaires d'utilisateurs, journal des actions.
php artisan testCe projet est distribué sous licence Common Public Attribution License 1.0 (CPAL-1.0), disponible dans le fichier LICENSE et en ligne sur https://opensource.org/license/cpal-1-0.
La CPAL est une licence open source. Elle impose en particulier une clause d'attribution (article 14) : toute utilisation, modification ou mise à disposition du logiciel, y compris en tant que service accessible sur un réseau, doit conserver visible sur l'interface l'information d'attribution suivante, définie dans le fichier LICENSE (Exhibit B) et rappelée dans NOTICE :
Forum PHP, par Loic VALENCE (valloic.fr)
Cette attribution est affichée dans le pied de page de chaque page de l'application (forum public, panel admin, panel de modération, pages d'authentification). Elle ne doit pas être retirée, masquée ou modifiée dans les versions dérivées ou déployées de ce projet.
Copyright (c) 2026 Loic VALENCE. Tous droits réservés.