ingenioz-it/php-skeleton

A clean new PHP project

Installs: 26

Dependents: 0

Suggesters: 0

Security: 0

Stars: 7

Watchers: 1

Forks: 0

Open Issues: 0

Language:Dockerfile

Type:project

pkg:composer/ingenioz-it/php-skeleton

v2.0 2025-09-23 01:20 UTC

This package is auto-updated.

Last update: 2025-09-23 01:23:33 UTC


README

Bored of manually setting up your PHP projects ?
This is the solution !

Table of contents

Description

This is a skeleton for PHP projects that focus on code quality.
It contains pretty much everything you need to start a new project :

  • Code quality
    • A working unit test (using PHPUnit) to bootstrap your coding experience
    • Static analyis tools (phpcs, phpstan, psalm, phpmd and phan) to enforce the quality of your code
    • A mutation testing framework (Infection) to enforce the quality of your tests
    • An automated refactoring tool (Rector) to help you keep your code up to date
    • Composer scripts to easily use all the above
  • Infrastructure
    • Docker support
      • A Makefile to manage docker commands with ease
    • GitHub Actions to automatically run the tests and quality tools on every push and pull request
      • It also uploads a code coverage report to CodeCov

Installation

To create a new project based on this skeleton, run the following command:

composer create-project ingenioz-it/php-skeleton {PROJECT_NAME}

Requirements

PHP 8.4+ or Docker.

Getting started

0. (if you are using docker)

Create the Docker container and start a shell inside it:

make cli

1. Install the dependencies

composer install

2. Run the tests

composer testdox

3. Time to code

The previous steps went well ?

You are now ready to start coding !

Scripts

The project comes with a few useful scripts to help you manage docker and run the various quality tools.

You can list them by running

make help

Important scripts

  • composer testdox: run the tests
  • composer fulltest: run all the quality tools
  • composer doc: generate the documentation from the tests (including mutation testing and code coverage), and puts it inside the doc folder

And if you are using docker:

  • make start/stop/restart: start/stop/restart the Docker container
  • make cli: open a terminal inside the Docker container (run exit to close it)
  • make exec {command}: execute a command inside the Docker container

Environments

This project supports multiple environments.

Two environments are available from the start:

  • cli-dev: a cli project
  • web-dev: a web project

You can switch between environments by changing the ENVIRONMENT variable inside the infra/.env file.

You can create new environments by creating a new folder inside the infra/ folder, with a docker-compose.yml file inside it.

Customize your app

Make the project truly yours by doing the following:

  • Update the composer.json with your project's information
  • Update the README.md file to describe your project
  • Update the LICENSE file with your favorite license