This page displays the README.md file of the GitHub repository.


MicroSymfony 🎶

Latest Version PHP Version Require level Software License Build Status (GitHub) Code Coverage Scrutinizer Code Quality Quality Score

About 🖋

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:

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 and run composer up.

Table of Contents 📖

Demos 🌈

Because a live demo is always better than all explanations:

Quick-start ⚡

With the Symfony binary 🎶

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 start

Open https://127.0.0.1:8000 (considering your 8000 port is free) and enjoy! 🙂

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

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 with "%cd%".

You can also directly use the FrankenPHP branch.

Requirements ⚙

Optional requirements ⚙

Stack 🔗

PS: A fork of BareCSS was created to fix some issues as the project is not maintained anymore.

Features 🚀

MicroSymfony ships these features, ready to use:

Feature branches 🚅

Feature branches are not merged in the main branch but are used to integrate a new vendor library or make a POC. For example, have you ever dreamed of testing Eloquent, the Laravel ORM, on a Symfony project? Then clone the eloquent branch and run composer install && make load-fixtures.

Infrastructure

Database 💽

These « database » branches aim to display a list of records coming from a SQLite database.

Tooling 🔨

These branches will be rebased after each release so they are always up to date.

Notes 📒

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 👌

References 📚

Contributing 🤝

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Security 🧯

Please see SECURITY for details.

Credits 🙏

License ⚖️

The MIT License (MIT). Please see License File for more information.