Slim API Starter

Slim 4 API starter template with a few examples and some essential features to help you build a secure and scalable API following today's best practices and SOLID principles.

The documentation explains the architecture, components, design choices (i.e. SRP) and features.

This API skeleton template is a stripped-down version of the slim-example-project which contains a lot more features and examples.

Features

Requirements

  • PHP 8.2+
  • Composer
  • MariaDB or MySQL database

Installation

1. Create project

Navigate to the directory you want to create the project in and run the following command, replacing project-name with the desired name for your project.

composer create-project samuelgfeller/slim-api-starter project-name

This will create a new directory with the specified name and install all necessary dependencies.

2. Set up the database

Open the project and rename the file config/env/env.example.php to config/env/env.php and add the local database credentials.

Then, create the database for the project and update the config/env/env.dev.php file with the name of the database, like this:

$settings['db']['database'] = 'my_dev_database_name';

After that, create a separate database for testing and update the config/env/env.test.php file with its name. The name must contain the word "test". There is a safety measure to prevent accidentally truncating the development database while testing:

$settings['db']['database'] = 'my_dev_database_name_test';

3. Run migrations

Open the terminal in the project's root directory and run the following command to create the demo table user:

composer migrate

4. Insert demo data

Four demo users can be inserted into the database to test the API response by running the following command:

composer seed

5. Update GitHub workflows

To run the project's tests automatically when pushing, update the .github/workflows/build.yml file.
Replace the matrix value "test-database" with the name of your test database as specified in config/env/env.test.php.

If you don't plan on using Scrutinizer, remove the .scrutinizer file at the root of the project, otherwise you can follow this guide on how to set it up.

Done!

That's it! Your project should now be fully set up and ready to use.
If you are using XAMPP and installed the project in the htdocs folder, you can access it in the browser at http://localhost/project-name.
Or you can serve it locally by running php -S localhost:8080 -t public/ in the project's root directory.

Support

If you value this project and want to support it, visit the Support❤️ page. (thank you!)

License

This project is licensed under the MIT License — see the LICENSE file for details.