Skip to content

🚧 Version 4.0 coming soon! Awesome Skeleton for modern development on PHP 7.4+ (incl. PHP 8). Contains quality tested packages, thoughtful structure and everything you need to develop microservices.

Notifications You must be signed in to change notification settings

sunrise-php/awesome-skeleton

Repository files navigation

Awesome Skeleton for modern development on PHP 7.4+ (incl. PHP 8)

Contains quality tested packages, thoughtful structure and everything you need to develop microservices.

Build Status Code Coverage Scrutinizer Code Quality Total Downloads Latest Stable Version License


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

Used technology

RoadRunner

OpenApi (Swagger) specification

Json Schema specification


It may be useful to you

Awesome middlewares for your application


with ❀️ for you