dev works
This commit is contained in:
@ -8,5 +8,7 @@ Main purpose of this projects is to have personal extensive API training on mult
|
||||
* Follows 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
|
||||
* 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
|
||||
* Complete CI/DC deployment on Docker Swarm with [Drone CI](https://www.drone.io/)
|
||||
|
@ -1,4 +1,6 @@
|
||||
`ASP.NET Core 6` implementation, follows `DDD` principle, implemented with `Hexa architecture` and `CQRS` pattern. Similar to the [official ASP.NET implementation](https://github.com/gothinkster/aspnetcore-realworld-example-app) but rewritten from scratch with further decoupling with dedicated project for each Hexa area, aka domain/application/infrastructure. Main packages involved :
|
||||
[`ASP.NET Core 6`](https://docs.microsoft.com/aspnet/core/) implementation, follows `DDD` principle, implemented with `Hexa architecture` and `CQRS` pattern. Similar to the [official ASP.NET implementation](https://github.com/gothinkster/aspnetcore-realworld-example-app) but rewritten from scratch with further decoupling with dedicated project for each Hexa area, aka domain/application/infrastructure. [Swashbuckle](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) is used as default main OpenAPI generator that's perfectly integrates into the code.
|
||||
|
||||
Main packages involved :
|
||||
|
||||
* [EF Core](https://docs.microsoft.com/ef/) as strongly typed ORM
|
||||
* [MediatR](https://github.com/jbogard/MediatR) for easy mediator implementation. It allows strong decoupling between all ASP.NET controllers and the final application which is cutted into small queries and commands
|
||||
|
@ -0,0 +1,14 @@
|
||||
[`FastAPI`](https://fastapi.tiangolo.com/) implementation under last `Python 3.10` with [Pipenv](https://pypi.org/project/pipenv/) as package manager.
|
||||
|
||||
It's based on [pydantic](https://pydantic-docs.helpmanual.io/), an essential component that allows proper OpenAPI generation and data validations while bringing advanced type hints.
|
||||
|
||||
Main packages involved :
|
||||
|
||||
* [pydantic](https://pydantic-docs.helpmanual.io/), data validation with Python 3.6+ type hints
|
||||
* [SQLAlchemy](https://www.sqlalchemy.org/) with [Alembic](https://alembic.sqlalchemy.org/en/latest/) for schema migration
|
||||
* [python-jose](https://github.com/mpdavis/python-jose) as JWT implementation
|
||||
* [Faker](https://faker.readthedocs.io/en/master/) as dummy data generator
|
||||
* [autoflake](https://pypi.org/project/autoflake/) and [isort](https://pycqa.github.io/isort/) for clean imports
|
||||
* [Flake8](https://flake8.pycqa.org/en/latest/) and [Black](https://black.readthedocs.io/en/stable/) as respective code linter and powerful code formatter
|
||||
* [mypy](http://mypy-lang.org/) as advanced static analyzer
|
||||
* [pytest](https://docs.pytest.org) as main test framework
|
||||
|
@ -0,0 +1,14 @@
|
||||
[`Laravel 8`](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.
|
||||
|
||||
Main packages involved :
|
||||
|
||||
* One of the most known [PHP JWT](https://github.com/lcobucci/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
|
||||
* [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
|
||||
* [PHPUnit Watcher](https://github.com/spatie/phpunit-watcher) can be perfectly integrated with Pest for perfect `TDD` experience
|
||||
|
@ -0,0 +1,10 @@
|
||||
[`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 can rely on [`fastify`](https://www.fastify.io/) as modern NodeJS HTTP server implementation. NestJS offers a nice OpenAPI documentation generator thanks to Typescript which provides strong typing.
|
||||
|
||||
Main packages involved :
|
||||
|
||||
* [MikroORM](https://mikro-orm.io/) as `DataMapper` ORM that relies on Typescript, including migrations
|
||||
* [faker.js](https://github.com/marak/Faker.js/) as dummy data generator
|
||||
* [ESLint](https://eslint.org/) with [Prettier](https://prettier.io/) for linting and code formatting
|
||||
* [Jest](https://jestjs.io) as main test framework
|
||||
|
@ -0,0 +1,12 @@
|
||||
[`Spring Boot 2.6`](https://spring.io/projects/spring-boot) implementation using `Gradle 7` & `Java 11`. Similar to the [official Spring Boot implementation](https://github.com/gothinkster/spring-boot-realworld-example-app) but with usage of `Spring Data JPA` instead of `MyBatis`. [Here is another nice one](https://github.com/raeperd/realworld-springboot-java) that explicitly follows `DDD`.
|
||||
|
||||
Main packages involved :
|
||||
|
||||
* [springdoc-openapi](https://springdoc.org/) as API documentation generator
|
||||
* [Java JWT](https://github.com/jwtk/jjwt) as JWT implementation
|
||||
* [Spring Data JPA](https://spring.io/projects/spring-data-jpa/) with Hibernate as default JPA implementation
|
||||
* [Flyway](https://flywaydb.org/) as proper migration tool based on SQL language as first party
|
||||
* [Lombok](https://projectlombok.org/) for less boring POO encapsulation boilerplate
|
||||
* `JUnit 5` with [REST Assured](https://rest-assured.io/) for fluent API assertions
|
||||
* [Spotless Formatter](https://github.com/diffplug/spotless) with proper `Vs Code` integration
|
||||
* [Java Faker](http://dius.github.io/java-faker/) as fake data generator
|
||||
|
@ -0,0 +1,13 @@
|
||||
[`Symfony 5.4`](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.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
* [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
|
||||
* [PHPStan](https://phpstan.org/), as advanced code static analyzer
|
||||
* [PHPUnit](https://phpunit.de/) as test framework
|
||||
|
Reference in New Issue
Block a user