samuelgfeller / slim-starter
Slim 4 starter with frontend and API endpoint
Fund package maintenance!
Ko Fi
Installs: 11
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:project
Requires
- php: ^8.2
- ext-gettext: *
- ext-intl: *
- ext-json: *
- ext-pdo: *
- cakephp/database: ^5
- cakephp/validation: ^5.0
- fig/http-message-util: ^1.1
- monolog/monolog: ^3
- nyholm/psr7: ^1.5
- nyholm/psr7-server: ^1.1
- php-di/php-di: ^7.0
- samuelgfeller/slim-error-renderer: ^1
- selective/basepath: ^2.0
- slim/php-view: ^3.0
- slim/slim: ^4
Requires (Dev)
This package is auto-updated.
Last update: 2024-10-25 11:53:43 UTC
README
Slim Starter
Slim 4 full stack starter template following 2024 best practices and SOLID principles to quickly get started with a scalable PHP web application.
An extensive documentation explains
the architecture, components,
design choices (i.e.
SRP)
and features.
Libraries
are kept to a minimum and to allow for most flexibility and long-term viability.
Features
The base for this project was the official Slim-Skeleton and Odan's slim4-skeleton but with a lot of additional opinionated features and examples such as:
- Pages rendered by a template renderer with layout and versioned assets
- The loading example elements from the database (users) via Ajax
- The creation, modification, and deletion of users with validation
- Integration testing
- API endpoint
- Dark / light theme switch
This skeleton template is a stripped-down version of the slim-example-project which contains a lot more features and examples.
Technologies
- Slim 4 micro-framework
- Dependency Injection - PHP-DI
- Template rendering - PHP-View (can be replaced by Twig)
- Logging - Monolog
- Database migrations - Phinx
- Validation - cakephp/validation
- Query Builder - cakephp/database
- Integration testing - PHPUnit
- Error handling - slim-error-renderer
- GitHub Actions and Scrutinizer
- Coding standards fixer - PHP-CS-Fixer
- Static code analysis - PHPStan
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-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 in your IDE 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 add the name to the config/env/env.dev.php
file, like this:
$settings['db']['database'] = 'my_dev_database_name';
After that, create a separate database for testing and add the name to the config/env/env.test.php
file.
The database name must contain the word "test" as a safety measure to prevent
accidentally truncating the development database while testing.
$settings['db']['database'] = 'my_dev_database_name_test';
The Configuration documentation details the different configuration files and how they are used and loaded.
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 application and 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
Please read the Support❤️ page if you value this project and its documentation and want to support it.
License
This project is licensed under the MIT License — see the LICENSE file for details.