MicroSymfony is a Symfony 7.1 application skeleton on steroids, ready to use.
I have made a long blog post explaining all it contains; it will be the reference for documentation. I'll update it when needed:
So, this blog post is the official documentation. This readme is a teaser of what MicroSymfony contains.
If you want to use the last Symfony 6.4 LTS version in your composer.json
file, replace all occurrences of 7.1
with 6.4
, run composer up
, and you are
done.
Because a live demo is always better than all explanations. Here is it:
- Live demo at https://microsymfony.ovh
- Live demo powered by FrankenPHP at https://frankenphp.microsymfony.ovh
You must have the Symfony binary and composer installed locally.
To create a new project from the GitHub template, run:
composer create-project strangebuzz/microsymfony
cd microsymfony
Then start the PHP server with make:
make start
Or with Castor:
castor symfony:start
Open https://127.0.0.1:8000 (considering your 8000 port is free) and enjoy! 🙂
We can also use FrankenPHP to run MicroSymfony. You must have Docker installed locally.
Create a new project from the GitHub template, run:
docker run --rm -it -v $PWD:/app composer:latest create-project strangebuzz/microsymfony && cd microsymfony
Install the FrankenPHP Symfony runtime:
docker run --rm -it -v $PWD:/app composer:latest require runtime/frankenphp-symfony
Then run:
docker run \
-e FRANKENPHP_CONFIG="worker ./public/index.php" \
-e APP_RUNTIME=Runtime\\FrankenPhpSymfony\\Runtime \
-v $PWD:/app \
-p 80:80 -p 443:443 \
-d \
dunglas/frankenphp
Open https://localhost and enjoy! 🙂
PS: On Windows, replace $PWD
by "%cd%"
.
- PHP 8.2 (also works with PHP 8.3)
- The Symfony CLI
- The Xdebug PHP extension if you want to run the code coverage report
- Castor task runner if you don't want to use Make and its Makefile
- Symfony 7.1
- Twig 3.8
- Hotwired stimulus 3.2 and Turbo 8.0
- PHPUnit 11.0
- The classless BareCSS CSS framework
PS: A fork of BareCSS was created to fix some issues as the project is not maintained anymore.
MicroSymfony ships these features, ready to use:
- Two task runner
- Static analysis with PHPStan
- Coding standards with php-cs-fixer
- Tests (demo)
- Code coverage at 100%
- GitHub CI (actions)
- Asset mapper+Stimulus (documentation)
- A custom error template
Turbo forms are disabled in assets/app.js.
To enable the feature for a given form, add the data-turbo="true"
attribute to it.
Or change the parameter Turbo.setFormMode
to on
to activate the feature globally.
In both cases, your controller code has to be modified accordingly.
- Using strict types in all PHP files (source)
- Using the ADR pattern in an action controller (source) (doc)
- The composer.json file is normalized with ergebnis/composer-normalize
- Use of the composer bin plugin to install and run php-cs-fixer
- Doctrine (installation)
- Front-end application development, Symfony-style(s) (dunglas.dev)
- Automated Test Coverage Checks with Travis, PHPUnit for Github Pull Requests (ocramius.github.io)
- Installing and using php-cs-fixer (strangebuzz.com)
- Castor, a journey across the sea of task runners (jolicode.com)
- Initializing your Symfony project with solid foundations (strangebuzz.com)
- Organizing your Symfony project tests (strangebuzz.com)
- What are your Symfony best practices? (strangebuzz.com)
- Setting a CI/CD workflow for a Symfony project thanks to the GitHub actions (strangebuzz.com)
- The Symfony Framework Best Practices (symfony.com)