Annuaire des commerces de Marines (Val-d'Oise, 95640) : fiches commerçants, actualités, événements et promotions, carte interactive, et notifications push — installable comme application (PWA) sur mobile.
Site en production : petitesinfosmarinoises.fr
- Annuaire : fiches commerces (horaires, contact, galerie, carte Leaflet/OpenStreetMap).
- Publications : actus, événements (JSON-LD pour les résultats enrichis Google) et promos, avec sondages, galeries photo/vidéo et embeds (YouTube, Vimeo, TikTok, Instagram).
- Web Push : suivi de commerces sans compte (abonnement anonyme par appareil), notifications immédiates ou programmées, page « Mes favoris ».
- Espace commerçant : gestion de fiche multi-gérants, publications, kits de communication (affiches, stories, QR codes), statistiques de fréquentation.
- Administration : modération, journal d'activité, labo d'idées et signalements de bugs.
- RGPD : IP hachées, journal anonymisé à la suppression de compte, suppression de compte en self-service, purges planifiées.
- Laravel 13 (PHP 8.3+), Blade
- Tailwind CSS v4 + Vite, JavaScript vanilla (aucun framework front)
- SQLite en local, MariaDB en production
- minishlink/web-push pour le Web Push (VAPID)
Prérequis : PHP 8.3+, Composer, Node 20+.
git clone https://github.com/cedric-duchemin/pim.git
cd pim
composer install
npm install
cp .env.example .env
php artisan key:generate
# Clés Web Push (VAPID) : copier les trois lignes affichées dans le .env
php artisan webpush:vapid
# Base SQLite + schéma + données de démo
touch database/database.sqlite
php artisan migrate --seed
# Compte super-admin : renseigner ADMIN_EMAIL et ADMIN_PASSWORD dans le .env, puis
php artisan db:seed --class=UserSeeder
npm run dev # assets en mode watch
php artisan serve # http://localhost:8000Lancer les tests :
php artisan testLes contributions sont bienvenues — corrections de bugs, accessibilité, performances, documentation…
- Ouvrez une issue avant tout gros chantier, pour en discuter.
- Forkez le dépôt et créez une branche depuis
dev:feat/ma-fonctionnaliteoufix/mon-correctif. - Codez en respectant les conventions du projet :
- commits atomiques au format
feat(...),fix(...),refactor(...)— messages en français ; - après toute modification JS/CSS :
npm run builddoit passer ; - toute logique nouvelle est couverte par un test (
php artisan testdoit rester vert) ; - le site respecte
prefers-reduced-motionet vise le contraste AA : merci d'y veiller.
- commits atomiques au format
- Ouvrez une Pull Request vers
dev(jamais versmain, qui reflète la production). Décrivez le problème résolu et comment vous l'avez testé.
Branches : main = production, dev = pré-production ; les releases sont taguées vX.Y.Z.
Pour signaler une vulnérabilité, n'ouvrez pas d'issue publique : écrivez à contact@petitesinfosmarinoises.fr.
Distribué sous licence AGPL-3.0 : vous pouvez réutiliser et adapter ce code (par exemple pour l'annuaire d'une autre commune), à condition de publier vos modifications sous la même licence, y compris pour un service hébergé.