sunrise / awesome-skeleton
Awesome Skeleton for modern development on PHP 7.4+ (incl. PHP 8)
Installs: 194
Dependents: 0
Suggesters: 0
Security: 0
Stars: 88
Watchers: 8
Forks: 3
Open Issues: 1
Type:project
Requires
- php: >=8.1
- monolog/monolog: ^3.8
- php-di/php-di: ^7.0
- sunrise/coder: ^1.1
- sunrise/http-message: ^3.4
- sunrise/http-router: ^3.0@RC
- sunrise/hydrator: ^3.16
- sunrise/translator: ^1.0
- symfony/cache: ^6.4
- symfony/console: ^6.4
- symfony/dotenv: ^6.4
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.11
- vimeo/psalm: ^6.7
This package is auto-updated.
Last update: 2025-02-21 03:18:37 UTC
README
Contains quality tested packages, thoughtful structure and everything you need to develop microservices.
Installation
composer create-project 'sunrise/awesome-skeleton:^3.0' app
Cooking
Set up your database connection:
cp .env.example .env && nano .env
Execute a migration:
php bin/app migrations:migrate --service 'master' --no-interaction
Run CLI
incl.: Doctrine DBAL, Doctrine ORM, Doctrine Migrations.
php bin/app
Run via PHP
listen 0.0.0.0:3000
composer serve
Run via RoadRunner
listen 0.0.0.0:3000
Set up your server:
cp .rr.yml.example .rr.yml && nano .rr.yml
Run the server:
rr -dv serve
Run via Swoole
Coming soon...
Run tests
composer test
Run benchmarks
composer bench
Run routes through cURL
you may need to change the server address...
Home (index)
curl -X 'GET' 'http://127.0.0.1:3000/'
OpenAPI document
curl -X 'GET' 'http://127.0.0.1:3000/openapi'
Create an entry (example bundle)
curl -X 'POST' -H 'Content-Type: application/json' -d '{"name": "foo", "slug": "foo"}' 'http://127.0.0.1:3000/api/v1/entry'
Update an existing entry (example bundle)
you need to set an existing ID.
curl -X 'PATCH' -H 'Content-Type: application/json' -d '{"name": "foo", "slug": "foo"}' 'http://127.0.0.1:3000/api/v1/entry/b06fd41d-d131-4bb9-a472-eb583369437c'
Delete an existing entry (example bundle)
you need to set an existing ID.
curl -X 'DELETE' 'http://127.0.0.1:3000/api/v1/entry/b06fd41d-d131-4bb9-a472-eb583369437c'
Read an existing entry (example bundle)
you need to set an existing ID.
curl -X 'GET' 'http://127.0.0.1:3000/api/v1/entry/b06fd41d-d131-4bb9-a472-eb583369437c'
List of entries (example bundle)
curl -X 'GET' 'http://127.0.0.1:3000/api/v1/entry'
Useful commands
Deploy
bash bin/deploy
Down
bash bin/down 'Reason...'
Up
bash bin/up
Generate Systemd unit for RoadRunner
php bin/app app:roadrunner:generate-systemd-unit > app.service
Generate OpenApi document
php bin/app app:openapi:generate-document > openapi.json
Used stack
see composer.json
- https://github.com/PHP-DI/PHP-DI
- https://github.com/Seldaek/monolog
- https://github.com/sunrise-php/http-router
- https://github.com/doctrine/orm
- https://github.com/doctrine/migrations
- https://github.com/symfony/console
- https://github.com/symfony/validator
- https://github.com/justinrainbow/json-schema
Used technology
RoadRunner
OpenApi (Swagger) specification
- https://swagger.io/docs/specification/about/
- https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
Json Schema specification
It may be useful to you
Awesome middlewares for your application
with ❤️ for you