phil / websymfony
A template to initialize an web application to use Symfony 7.0
Package info
github.com/parler-haut-interagir-librement/WebSymfony
Type:symfony-application-template
pkg:composer/phil/websymfony
Requires
- php: >=8.3
- ext-ctype: *
- ext-dom: *
- ext-iconv: *
- ext-libxml: *
- ext-simplexml: *
- ext-xml: *
- doctrine/doctrine-bundle: ^2.11
- doctrine/doctrine-migrations-bundle: ^3.3
- doctrine/orm: ^2.18|^3.0
- easycorp/easyadmin-bundle: ^4.9
- knplabs/knp-menu-bundle: ^3.3
- league/commonmark: ^2.4
- nelmio/cors-bundle: ^2.4
- nelmio/security-bundle: ^3.1
- stof/doctrine-extensions-bundle: ^1.11
- symfony/asset: 7.0.*
- symfony/asset-mapper: 7.0.*
- symfony/console: 7.0.*
- symfony/dotenv: 7.0.*
- symfony/flex: ^2.4
- symfony/form: 7.0.*
- symfony/framework-bundle: 7.0.*
- symfony/intl: 7.0.*
- symfony/monolog-bundle: ^3.10
- symfony/runtime: 7.0.*
- symfony/security-bundle: 7.0.*
- symfony/stimulus-bundle: ^2.15
- symfony/translation: 7.0.*
- symfony/twig-bundle: 7.0.*
- symfony/ux-twig-component: ^2.15
- symfony/validator: 7.0.*
- symfony/web-link: 7.0.*
- symfony/yaml: 7.0.*
- symfonycasts/tailwind-bundle: ^0.5
- tales-from-a-dev/flowbite-bundle: ^0.4.0
- twig/extra-bundle: ^3.8
- twig/html-extra: ^3.8
- twig/intl-extra: ^3.8
- twig/markdown-extra: ^3.8
- twig/string-extra: ^3.8
- twig/twig: ^3.8
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- doctrine/doctrine-fixtures-bundle: ^3.5
- phpstan/extension-installer: ^1.3
- phpstan/phpdoc-parser: ^1.26
- phpstan/phpstan: ^1.10
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-doctrine: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^11.0
- rector/rector: ^1.0
- roave/security-advisories: dev-latest
- symfony/browser-kit: 7.0.*
- symfony/css-selector: 7.0.*
- symfony/debug-bundle: 7.0.*
- symfony/maker-bundle: ^1.55
- symfony/panther: ^2.1
- symfony/requirements-checker: ^2.0
- symfony/stopwatch: 7.0.*
- symfony/var-dumper: 7.0.*
- symfony/web-profiler-bundle: 7.0.*
Suggests
None
Provides
None
Conflicts
README
About ๐
โProclaim Honestly, Interact Liberallyโ WebSymfony is a Symfony 7.3 application skeleton on steroids, ready to use.
The purpose of WebSymfony is to provide a sandbox with some sensible defaults and ready to use. It can be a solution if you want to quickly set up something, create a POC, test things, and even make a small "one-page" application.
It was base on strangebuzz/MicroSymfony with adjustment we're usually adding on all our projects. We also remove somes examples.
PS: If you want to use the last Symfony 6.4 LTS version in your
composer.jsonfile, replace all occurrences of7.3with6.4and runcomposer up.
Table of Contents ๐
- Demo
- Quick-start
- Requirements
- Stack
- Features
- Notes
- Other good practices
- ADR
- What it doesn't ship!
- References
- Others โProclaim Honestly, Interact Liberallyโ Skeletons
- Contributing
- Security
- Credits
- License
- Built with MicroSymfony
Demo ๐
Because a live demo is always better than all explanations :
- Live demo will be available at https://ph-il.ca/demos/websymfony
- Live demo powered by FrankenPHP will be available at https://ph-il.ca/demos/frankenphp/websymfony
Quick-start โก
With the Symfony binary ๐ถ
You must have the Symfony binary and composer installed locally.
To create a new project from the last tag, run:
composer create-project phil/microsymfony && cd microsymfony
To serve the application with the Symfony binary, run:
$ symfony server:start --daemon
or use the castor command
castor start
Open https://127.0.0.1:8000 (considering your 8000 port is free) and enjoy! ๐
PS: You can also use the green button "Use this template โฉ" at the top right of the GitHub project homepage. It creates a new repository from the main branch instead of the last release. I guarantee that all commits on the main branch are stable; you can verify that the associated CI jobs are โ .
With FrankenPHP ๐งโ
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
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 with "%cd%".
Requirements โ
All โProclaim Honestly, Interact Liberallyโ project will use the latest version within 1 or 2 months depending on dependencies availability.
- PHP 8.4
- The Symfony CLI
- Castor 1.0 task runner
Optional requirements ๐ฆ
- The Xdebug PHP extension if you want to run the code coverage report (optional but recommended)
Stack ๐
All โProclaim Honestly, Interact Liberallyโ project will use the latest version within 1 or 2 months depending on dependencies availability.
Features ๐
WebSymfony ships these features, ready to use:
- One task runner
- Castor (source)
- Static analysis with PHPStan
- Coding standards with php-cs-fixer
- Refactoring with Rector
- The debug toolbar (doc)
- Tests (organisation)
- Code coverage at 100%
- GitHub CI (actions)
- Asset mapper+Stimulus (documentation)
- Symfony Maker (documentation)
- A custom error template
- Database
- Doctrine (documentation)
- Doctrine Migrations (documentation)
- Doctrine Fixture (documentation)
- Doctrine Extensions (configuration in sumfony) (documentation)
- Object Menu (example)
- Security Layers
- SymfonySecurity (documentation)
- NelmioSecurityBundle (documentation)
- NelmioCorsBundle (documentation)
- Admin
- EasyAdmin (documentation)
Notes ๐
Symfony-UX
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.
Other good practices ๐
- 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
Initializing an application with WebSymfony ๐ช
Initializing using composer
As the application template is registered on Packagist, you can use composer to install it with the following command:
$ composer create-project phil/websymfony
It creates a websymfony directory with the new project. In this case, you must set up Git and a repository yourself. But that's the fastest way to test it.
Note that the composer install command downloads all the required dependencies and builds the assets.
Initializing from Github site
Or use the GitHub template:
Initializing from Github CLI
$ gh repo create my-project --clone --private --template parler-haut-interagir-librement/WebSymfony
Serving the application
To serve the application with the Symfony binary, run:
$ symfony server:start --daemon
or use the castor command
$ castor symfony:start
The application is now available at https://127.0.0.1:8000 (considering your 8000 port is available).
References ๐
- Running a Symfony app on a VPS with Docker and FrankenPHP (les-tilleuls.coop)
- How to Switch from YAML Configs to PHP Today with Symplify (tomasvotruba.com)
- PHPStan 2.0 Released With Level 10 and Elephpants! (phpstan.org)
- A better ADR pattern for your Symfony controllers (strangebuzz.com)
- My Taskfile configuration for Symfony (jmsche.fr)
- You should be using PHPStans bleeding edge (backendtea.com)
- A Good Naming Convention for Routes, Controllers and Templates? (jolicode.com)
- 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)
Others โProclaim Honestly, Interact Liberallyโ Skeletons ๐ฉป
-
- Task runner
- Castor
- Static Analysis
- PHPStan
- Coding standards
- php-cs-fixer
- Refactoring
- Rector
- Debug toolbar
- Tests
- Unit test
- Integration test
- Functional test
- API test
- E2E test
- GitHub CI
- Asset mapper
- Stimulus
- Symfony Maker
- Custom error template
- Task runner
-
- API Platform
- Task runner
- Castor
- Static Analysis
- PHPStan
- Coding standards
- php-cs-fixer
- Refactoring
- Rector
- Tests
- Unit test
- API test
- E2E test
- GitHub CI
- Symfony Maker
-
- WebSymfony +
- CSS framework
- phil-ux
- โProclaim Honestly, Interact Liberallyโ Bundles
- phil-ux - Add Base Twig Components
- PhilDoctrineExtensionStofBundle - Add missing stuff to StofDoctrineExtensionsBundle
- PhilDoctrineExtensionPublishBundle - Add Publish functionality to Doctrine Entity
- more.
Contributing ๐ค
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
Security ๐งฏ
Please see SECURITY for details.
Credits ๐
- Philippe Gamache (primary maintainer)
- All Contributors
Made with contrib.rocks.
Strangebuzz/MicroSymfony Contributors
- COil (primary maintainer)
- All Contributors
Made with contrib.rocks.
License โ๏ธ
The MIT License (MIT). Please see License File for more information.
Built with MicroSymfony ๐ ๏ธ
- WebSymfony
- WebSkeleton
- IRL Assemble Online
- La Page ร Melkor via WebSkeleton
- Parler Haut Interagir Librement via WebSkeleton
- RPG Assemble Online
- TiltTek via WebSkeleton
- TTRPG Maker via WebSkeleton
