Genesis
Genesis Logo

À propos

Genesis, c'est juste mon symfony new --webapp customisé. Rien de révolutionnaire, simplement tout ce que je mets en place à chaque nouveau projet, déjà prêt.

Stack technique

  • Symfony 7.3 / PHP 8.3 - Toujours la dernière version stable
  • TailwindCSS V4 - Parce que j'en ai marre d'écrire du CSS
  • Twig - Avec un thème custom qui marche direct avec Tailwind
  • Doctrine ORM - Le standard, rien de fancy
  • Webpack Encore - Pour le build des assets
  • Symfony Mailer - Les emails transactionnels de base

Ce qui est déjà fait

Auth complète

  • Login/Register qui marchent du premier coup
  • Validation Symfony standard sur les forms
  • Reset password par email (token sécurisé)
  • Vérification email obligatoire
  • CSRF actif partout

Profile utilisateur

  • Page profile basique mais fonctionnelle
  • Changement email + re-vérification auto
  • Changement mot de passe
  • Avatar DiceBear (identicon)
  • Delete account dans la danger zone

UI/UX de base

  • Design system Tailwind V4 cohérent
  • Composants Twig modulaires (button, icon, etc)
  • Flash messages qui s'auto-ferment
  • Navigation responsive avec menu mobile
  • Header et footer complets

SEO & Meta

  • Favicons toutes tailles (Apple, Android, etc)
  • Meta tags Open Graph pour les réseaux
  • Twitter Cards configurées
  • Balises canonical et hreflang pour l'i18n
  • Structured data JSON-LD

Dev tools

  • Makefile avec les commandes utiles
  • .env propre et documenté
  • Structure de code MVC organisée
  • Assets minifiés en prod avec Webpack Encore
  • Hot reload qui marche

Branding inclus

  • Logo et variantes (light/dark)
  • Palette de couleurs cohérente
  • Covers pour réseaux sociaux
  • Favicons toutes plateformes
  • Design system documenté

Prêt pour la prod

  • Apache pack préconfiguré
  • Logs Monolog configurés
  • Pages d'erreur custom (404, 500)
  • HTTPS ready
  • Config cache optimisée

Internationalisation (i18n)

  • Support multilingue (FR/EN par défaut)
  • Routes localisées (/a-propos vs /en/about)
  • Locale par défaut sans préfixe (fr)
  • Changement de langue dans le footer
  • Traductions organisées par contexte
  • Meta tags adaptés par langue
  • URLs canoniques et hreflang automatiques

Sécurité avancée

  • CSP (Content Security Policy) strict via Nelmio
  • Protection XSS et clickjacking
  • Headers de sécurité HTTP (X-Frame-Options, etc.)
  • Politique de referrer configurée
  • Protection contre les redirections externes
  • Signature des cookies personnalisés
  • Blocage du contenu mixte HTTP/HTTPS

Pourquoi Genesis

Après des années à refaire les mêmes configs sur chaque projet, j'ai décidé de tout centraliser une bonne fois pour toutes. Genesis n'est pas un framework, c'est littéralement un `symfony new` avec tout ce que j'ajoute systématiquement dans les 2 premières heures d'un projet.

Le but c'est de pouvoir cloner, lancer `make install`, et commencer direct à coder la vraie logique métier. Pas de temps perdu sur l'auth, les emails, le design system ou les favicons.

Ce qui manque volontairement

Pas de Docker parce que j'ai déjà mes environnements configurés. Pas de CI/CD parce que ça dépend d'où je déploie. Pas de tests parce que j'ajoute PHPUnit quand j'en ai besoin. Pas d'API Platform parce que tous mes projets n'ont pas besoin d'API.

Genesis reste minimal exprès. C'est une base, pas une usine à gaz. J'ajoute ce qu'il faut, quand il faut, projet par projet.

Use cases typiques

  • Nouveau side-project à lancer rapidement
  • POC pour un client qui veut voir vite
  • Test d'une idée sans perdre de temps sur la base
  • Petit SaaS avec auth et paiement (Stripe à ajouter)
  • Refaire un vieux projet en moderne

Note

Genesis n'est pas public et ne le sera probablement jamais. C'est mon outil personnel, configuré exactement comme j'aime. Si tu veux quelque chose de similaire, fais le tien. C'est le meilleur moyen d'avoir exactement ce dont tu as besoin, ni plus, ni moins.

J'essaie de mettre en place un branding cohérent pour chacun de mes projets, même si je ne suis pas designer. Je fais les logos, icônes et covers moi-même (ça vaut ce que ça vaut). Au moins c'est unique et ça donne une identité au projet.

Genesis — Symfony Boilerplate.