laravel-api-skeleton maintained by khazhinov
- spatie/data-transfer-object ^3.8
- spiral/roadrunner-cli ^2.6.0
- php ^8.3
- khazhinov/laravel-lighty ^11.1
- laravel/framework ^11.9
- laravel/horizon ^5.29
- laravel/octane ^2.5
- laravel/sanctum ^4.0
- laravel/telescope ^5.2
- laravel/tinker ^2.9
- spiral/roadrunner v2024.2.1
- spiral/roadrunner-http ^3.5.1
- php ^8.3
- khazhinov/laravel-lighty ^11.1
- laravel/framework ^11.9
- laravel/horizon ^5.29
- laravel/octane ^2.5
- laravel/sanctum ^4.0
- laravel/telescope ^5.2
- laravel/tinker ^2.9
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2024.2.1
- spiral/roadrunner-cli ^2.6.0
- spiral/roadrunner-http ^3.5.1
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^11.0
- laravel/framework ^10.0
- laravel/octane ^2.0
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2023.3.9
- spiral/roadrunner-cli ^2.6.0
- spiral/roadrunner-http ^3.3.0
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^11.0
- laravel/framework ^10.0
- laravel/octane ^2.0
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2023.1.3
- spiral/roadrunner-http ^3.0.1
- spiral/roadrunner-cli ^2.5.0
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^11.0
- laravel/framework ^10.0
- laravel/octane ^2.0
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2023.1.3
- spiral/roadrunner-http ^3.0.1
- spiral/roadrunner-cli ^2.5.0
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^11.0
- laravel/framework ^10.0
- laravel/octane ^2.0
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2023.1.3
- spiral/roadrunner-http ^3.0.1
- spiral/roadrunner-cli ^2.5.0
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^11.0
- laravel/framework ^10.0
- laravel/octane ^2.0
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2023.1.3
- spiral/roadrunner-http ^3.0.1
- spiral/roadrunner-cli ^2.5.0
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^11.0
- laravel/framework ^10.0
- laravel/octane ^2.0
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2023.1.3
- spiral/roadrunner-http ^3.0.1
- spiral/roadrunner-cli ^2.5.0
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^10.0
- laravel/framework ^10.0
- laravel/octane ^1.5
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.12
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^10.0
- laravel/framework ^10.0
- laravel/octane ^1.5
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.12
- php ^8.1
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^10.0
- laravel/framework ^10.0
- laravel/octane ^1.5
- laravel/sanctum ^3.2
- laravel/telescope ^4.14
- laravel/tinker ^2.8
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.12
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- khazhinov/laravel-lighty ^9.9
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^9.9
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.9
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.9
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.9
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.9
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.9
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.7
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.7
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.7
- laravel/framework ^9.34
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.0
- laravel/framework ^9.19
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.0
- laravel/framework ^9.19
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.0
- laravel/framework ^9.19
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.0
- laravel/framework ^9.19
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.0
- laravel/framework ^9.19
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.0
- laravel/framework ^9.19
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.0
- laravel/framework ^9.19
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
- php ^8.0.2
- guzzlehttp/guzzle ^7.2
- khazhinov/laravel-lighty ^1.0
- laravel/framework ^9.19
- laravel/octane ^1.3
- laravel/sanctum ^3.0
- laravel/telescope ^4.9
- laravel/tinker ^2.7
- nyholm/psr7 ^1.5
- spatie/data-transfer-object ^3.8
- spiral/roadrunner v2.0
Laravel API Skeleton ☠️
Скелет Laravel проекта для разработки API
Создание приложения
Для создания приложения с нуля запускай следующую команду:
$ composer create-project khazhinov/laravel-api-skeleton my-awesome-project
Затем после установки всех зависимостей перейдём в папку с созданным проектом:
$ cd ./my-awesome-project
Обязательно выполни:
$ git init
После этого запустим необходимое для работы окружение:
$ docker-compose up -d
Подождём пару минут, пока инициализируется база данных. Обязательно дождитесь, чтобы контейнер PostgreSQL выдал в свои логи что-то вроде:
2022-09-25 11:45:22.790 UTC [1] LOG: database system is ready to accept connections
Затем выполним инициализацию базы данных:
$ php artisan migrate --seed
Осталось совсем чуть-чуть, чтобы увидеть магию 🌃
Теперь запускаем веб-сервер:
$ php artisan serve
И теперь переходим по ссылке!
Документация была получена исходя из волшебной обработки классов внутри кода. Взгляни на контроллер: App\Http\Controllers\Api\V1_0\ExampleEntity\ExampleEntityCRUDController
Для генерации новых сущностей просто используй:
$ php artisan lighty:generator AnotherEntity v1.0 --migration
Управление контейнером с PHP
В данном варианте реализации предполагается использование Roadrunner. Примеры контейнеров, описанные в dockerfile и docker-compose могут применяться для первичного запуска окружения. Всё, что требуется для запуска приложение - это Docker. Просто попробуй!
Сборка контейнера осуществляется с помощью:
$ docker-compose -f docker-compose-containerized.yaml build
Запуск требуемого окружения осуществляется с помощью:
$ docker-compose -f docker-compose-containerized.yaml up -d
Миграции выполняются автоматически при запуске любого контейнера, а seed нужно сделать руками один раз
$ docker-compose -f docker-compose-containerized.yaml exec -T api php artisan db:seed
Для остановки используй:
$ docker-compose -f docker-compose-containerized.yaml down
А это пример запуска команды внутри контейнера, когда в твоём локальном окружении сейчас нет PHP:
$ docker-compose -f docker-compose-containerized.yaml exec -T api php artisan migrate:refresh --seed