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


MicroSymfony 🎶

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

Introduction 🖋

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, run composer up, and you are done.

Demo 🌈

Because a live demo is always better than all explanations. Here is it:

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 symfony:start

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

Quick-start 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 by "%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:

Features branches 🚅

Features branches will not be 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, run composer install, and you are done.

Infrastructure ⌨️

Database 💽

The goal of these « database » branches is to display a list of records coming from a SQLite database (with the /users URL).

Tooling 🔨

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 👌

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

References 📚