update works
This commit is contained in:
@ -1,13 +1,15 @@
|
||||
[`Laravel 9`](https://laravel.com/) implementation on `PHP 8.1` with extensive usage of last attributes support. The particularity of this framework is to give you almost of all you need for quickly develop any complex application. So minimal external packages need.
|
||||
|
||||
I obviously made use of `Eloquent` as a very expressive Active Record ORM, and the Laravel factories system based on [PHP Faker](https://fakerphp.github.io/) is already perfect for dummy data generator.
|
||||
I obviously made usage of **Eloquent** as a very expressive **Active Record** ORM, and the Laravel factories system based on [PHP Faker](https://fakerphp.github.io/) is already perfect for dummy data generator.
|
||||
|
||||
Contrary to most others projects, there is no usage of DTO classes, so it's required to write all schema declarations for proper OpenAPI models generation.
|
||||
|
||||
Main packages involved :
|
||||
|
||||
* One of the most known [PHP JWT](https://github.com/lcobucci/jwt) implementation, with proper integration to Laravel using custom guard
|
||||
* [PHP JWT](https://github.com/lcobucci/jwt) as JWT implementation, with proper integration to Laravel using custom guard
|
||||
* [Laravel Routes Attribute](https://github.com/spatie/laravel-route-attributes) for Laravel routing that leverage on last PHP 8 attributes feature
|
||||
* [Laravel OpenAPI](https://github.com/vyuldashev/laravel-openapi) that also use PHP 8 attributes for API documentation
|
||||
* [Laravel IDE Helper](https://github.com/barryvdh/laravel-ide-helper) for proper IDE integration, perfectly suited for `VS Code` with [Intelephense](https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client) extension
|
||||
* [Laravel IDE Helper](https://github.com/barryvdh/laravel-ide-helper) for proper IDE integration, perfectly suited for **VS Code** with [Intelephense](https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client) extension
|
||||
* [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) as formatter with Laravel style guide
|
||||
* [Larastan](https://github.com/nunomaduro/larastan), a Laravel wrapper of [PHPStan](https://phpstan.org/), as advanced code static analyzer
|
||||
* [Pest](https://pestphp.com/) as nice Jest-like API superset of existing PHPUnit
|
||||
|
@ -1,6 +1,9 @@
|
||||
[`NestJS 8`](https://nestjs.com/) implementation under `NodeJS 16` using [`Typescript`](https://www.typescriptlang.org/) and [`pnpm`](https://pnpm.io/) as fast package manager.
|
||||
[`NestJS 8`](https://nestjs.com/) implementation under `NodeJS 16` using [`Typescript`](https://www.typescriptlang.org/) and [`pnpm`](https://pnpm.io/) as fast package manager. It relies by default on [`express`](https://github.com/expressjs/express) as NodeJS HTTP server implementation. NestJS offers a nice OpenAPI documentation generator thanks to Typescript which provides strong typing.
|
||||
|
||||
It can rely on [`fastify`](https://www.fastify.io/) as modern and fast NodeJS HTTP server implementation. NestJS offers a nice OpenAPI documentation generator thanks to Typescript which provides strong typing.
|
||||
The separated ORM package take the best ideas from both known Doctrine and Eloquent PHP ORM :
|
||||
|
||||
* **DataMapper** pattern with POTO objects like Doctrine, with similar migrations generator.
|
||||
* A **Model Factory** with seeder system for quick seeding dummy data inside database, with help of [Faker](https://github.com/faker-js/faker), as Laravel does.
|
||||
|
||||
Main packages involved :
|
||||
|
||||
|
@ -5,9 +5,9 @@ Main purpose of this projects is to have personal extensive API training on mult
|
||||
* Proper OpenAPI documentation
|
||||
* Testable with [last Postman collection of Conduit](https://github.com/gothinkster/realworld/tree/main/api)
|
||||
* Fully tested
|
||||
* Follows best practices for linting, formatting, with static analyzers for non strongly typed languages
|
||||
* High QA by following best practices for linting, formatting, with static analyzers for non strongly typed languages
|
||||
* Community-driven with usage of the most well-known packages
|
||||
* `PostgreSQL` as main database
|
||||
* `MySQL` or `PostgreSQL` as main databases
|
||||
* Use ORM whenever possible that follows any `DataMapper` or `Active Record` patterns
|
||||
* Proper seeder / faker for quick starting with filled DB
|
||||
* Proper suited QA + production Dockerfile
|
||||
|
@ -1,11 +1,13 @@
|
||||
[`Symfony 6.0`](https://symfony.com/) implementation on `PHP 8.1` with usage of [API Platform](https://api-platform.com/), a very powerful API crud generator that supports PHP 8 attributes. This project tries to be the most "API Platform" way to do it, with usage of [Data providers](https://api-platform.com/docs/core/data-providers/), [Data persiters](https://api-platform.com/docs/core/data-persisters/), [DTOs](https://api-platform.com/docs/core/dto/), simple action controllers with only one `__invoke` known as `ADR` pattern.
|
||||
[`Symfony 6.0`](https://symfony.com/) implementation on `PHP 8.1` that supports PHP 8 attributes. I excluded the usage of [API Platform](https://api-platform.com/) here, which is a very powerful API crud generator but really not well suited for real customized API in my taste.
|
||||
|
||||
It was for me the less pleasant experience of all project, as I spent most of the time to fight against the tool instead of really develop the app, but it was the main purpose of this project, as I have already known the classical way to do it. `API Platform` is certainly a very powerful and flexible beast, but with some nasty caveats. It was nevertheless very instructive.
|
||||
Contrary to Laravel, the usage of **DataMapper** pattern ORM involve classic POPO models. The additional usage of plain PHP DTO classes facilitates the OpenAPI spec models generation without writing all schemas by hand. On the downside the Nelmio package is far more verbose than the Laravel OpenAPI version.
|
||||
|
||||
Main packages involved :
|
||||
|
||||
* [API Platform](https://api-platform.com/) as main API framework superset for symfony
|
||||
* [Doctrine](https://www.doctrine-project.org/) as `DataMapper` ORM
|
||||
* [Doctrine](https://www.doctrine-project.org/) as **DataMapper** ORM
|
||||
* [SensioFrameworkExtraBundle](https://github.com/sensiolabs/SensioFrameworkExtraBundle) for ParamConverter helper with Doctrine
|
||||
* [FOSRestBundle](https://github.com/FriendsOfSymfony/FOSRestBundle) only for some helpers as DTO automatic converters and validation
|
||||
* [NelmioApiDocBundle](https://github.com/nelmio/NelmioApiDocBundle) as **OpenAPI** generator
|
||||
* [Symfony JWT Bundle](https://github.com/lexik/LexikJWTAuthenticationBundle) implementation
|
||||
* [Alice](https://github.com/nelmio/alice) as fixtures generator that relies on [PHP Faker](https://fakerphp.github.io/)
|
||||
* [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) as formatter
|
||||
|
Reference in New Issue
Block a user