Genesis
Genesis Logo

About

Genesis is just my customized symfony new --webapp . Nothing revolutionary, just everything I set up on every new project, ready to go. No more rebuilding auth for the 100th time.

Tech stack

  • Symfony 7.3 / PHP 8.3 - Always the latest stable version
  • TailwindCSS V4 - Because I'm tired of writing CSS
  • Twig - With a custom theme that works directly with Tailwind
  • Doctrine ORM - The standard, nothing fancy
  • Webpack Encore - For asset building
  • Symfony Mailer - Basic transactional emails

What's already done

Complete auth

  • Login/Register that work from the first try
  • Standard Symfony validation on forms
  • Password reset by email (secure token)
  • Mandatory email verification
  • CSRF active everywhere

User profile

  • Basic but functional profile page
  • Email change + auto re-verification
  • Password change
  • DiceBear avatar (identicon)
  • Delete account in danger zone

Basic UI/UX

  • Consistent Tailwind V4 design system
  • Modular Twig components (button, icon, etc)
  • Self-closing flash messages
  • Responsive navigation with mobile menu
  • Complete header and footer

SEO & Meta

  • Favicons all sizes (Apple, Android, etc)
  • Open Graph meta tags for social networks
  • Configured Twitter Cards
  • Canonical and hreflang tags for i18n
  • JSON-LD structured data

Dev tools

  • Makefile with useful commands
  • Clean and documented .env
  • Organized MVC code structure
  • Minified assets in prod with Webpack Encore
  • Working hot reload

Included branding

  • Logo and variants (light/dark)
  • Consistent color palette
  • Social media covers
  • Favicons all platforms
  • Documented design system

Production ready

  • Pre-configured Apache pack
  • Configured Monolog logs
  • Custom error pages (404, 500)
  • HTTPS ready
  • Optimized cache config

Internationalization (i18n)

  • Multi-language support (FR/EN by default)
  • Localized routes (/a-propos vs /en/about)
  • Default locale without prefix (fr)
  • Language switching in footer
  • Context-organized translations
  • Language-adapted meta tags
  • Automatic canonical URLs and hreflang

Advanced security

  • Strict CSP (Content Security Policy) via Nelmio
  • XSS and clickjacking protection
  • HTTP security headers (X-Frame-Options, etc.)
  • Configured referrer policy
  • External redirects protection
  • Custom cookies signing
  • Mixed HTTP/HTTPS content blocking

Why Genesis

After years of redoing the same configs on every project, I decided to centralize everything once and for all. Genesis is not a framework, it's literally a `symfony new` with everything I systematically add in the first 2 hours of a project.

The goal is to be able to clone, run `make install`, and start coding the real business logic directly. No time wasted on auth, emails, design system or favicons.

What's voluntarily missing

No Docker because I already have my environments configured. No CI/CD because it depends on where I deploy. No tests because I add PHPUnit when I need it. No API Platform because not all my projects need an API.

Genesis stays minimal on purpose. It's a base, not a gas factory. I add what's needed, when needed, project by project.

Typical use cases

  • New side-project to launch quickly
  • POC for a client who wants to see fast
  • Testing an idea without wasting time on the base
  • Small SaaS with auth and payment (Stripe to add)
  • Rebuilding an old project in modern

Note

Genesis is not public and probably never will be. It's my personal tool, configured exactly as I like it. If you want something similar, make your own. It's the best way to have exactly what you need, no more, no less.

I try to set up consistent branding for each of my projects, even though I'm not a designer. I make the logos, icons and covers myself (worth what it's worth). At least it's unique and gives an identity to the project.

Genesis — Symfony Boilerplate.