mirror of
https://github.com/kevinveenbirkenbach/infinito.git
synced 2025-09-13 13:57:10 +02:00
Optimized documentation
This commit is contained in:
75
application/README.md
Normal file
75
application/README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
## Application
|
||||
## Architecture
|
||||
|
||||
### Design Principles
|
||||
The software MUST follow this design principles:
|
||||
|
||||
#### [Domain Driven Design](https://de.wikipedia.org/wiki/Domain-driven_Design)
|
||||
The software MUST use a DDD architecture.
|
||||
|
||||
#### [SOLID](https://de.wikipedia.org/wiki/Prinzipien_objektorientierten_Designs#SOLID-Prinzipien)
|
||||
SOLID allows to easy maintain and expand the functions of the software.
|
||||
|
||||
It is based on the following princibles:
|
||||
- [Single-Responsibility-Prinzip](https://de.wikipedia.org/wiki/Single-Responsibility-Prinzip)
|
||||
- [Open-Closed-Prinzip](https://de.wikipedia.org/wiki/Open-Closed-Prinzip)
|
||||
- [Liskov substitution principle](https://en.wikipedia.org/wiki/Liskov_substitution_principle)
|
||||
- [Interface-Segregation-Prinzip](https://de.wikipedia.org/wiki/Interface-Segregation-Prinzip)
|
||||
- [Dependency Inversion Prinzip](https://de.wikipedia.org/wiki/Dependency-Inversion-Prinzip)
|
||||
|
||||
#### [12 factor](https://12factor.net/)
|
||||
The following 12 factor allow to get the application ready for [IaaS](https://de.wikipedia.org/wiki/Everything_as_a_Service) and make it [high scalable](https://en.wikipedia.org/wiki/Scalability):
|
||||
|
||||
##### I. Codebase
|
||||
One codebase tracked in revision control, many deploys
|
||||
##### II. Dependencies
|
||||
Explicitly declare and isolate dependencies
|
||||
##### III. Config
|
||||
Store config in the environment
|
||||
#### IV. Backing services
|
||||
Treat backing services as attached resources
|
||||
##### V. Build, release, run
|
||||
Strictly separate build and run stages
|
||||
##### VI. Processes
|
||||
Execute the app as one or more stateless processes
|
||||
##### VII. Port binding
|
||||
Export services via port binding
|
||||
##### VIII. Concurrency
|
||||
Scale out via the process model
|
||||
##### IX. Disposability
|
||||
Maximize robustness with fast startup and graceful shutdown
|
||||
##### X. Dev/prod parity
|
||||
Keep development, staging, and production as similar as possible
|
||||
##### XI. Logs
|
||||
Treat logs as event streams
|
||||
##### XII. Admin processes
|
||||
Run admin/management tasks as one-off processes
|
||||
|
||||
## Tested
|
||||
The software MUST be automized tested by the following tests:
|
||||
|
||||
- [Functional tests](https://en.wikipedia.org/wiki/Functional_testing)
|
||||
- [Integration tests](https://de.wikipedia.org/wiki/Integrationstest)
|
||||
- [Unit Tests](https://en.wikipedia.org/wiki/Unit_testing)
|
||||
|
||||
A test coverage of 100% must be reached.
|
||||
|
||||
### Continues Integration
|
||||
The software MUST be [continues integrated](https://de.wikipedia.org/wiki/Kontinuierliche_Integration).
|
||||
|
||||
### Applications
|
||||
The application is a merge out of two indepentend applications.
|
||||
#### Core Application
|
||||
More informations you will find in the [symfony README.md](./symfony/README.md)
|
||||
|
||||
This software offers the following interfaces:
|
||||
##### [REST](https://de.wikipedia.org/wiki/Representational_State_Transfer)
|
||||
This interface allows a client, which can be e.g. a Java Application or an SPA to process the domain logic.
|
||||
|
||||
##### HTML
|
||||
This interface offers an static GUI which allows the user to execute basic tasks.
|
||||
|
||||
#### Single Page Application
|
||||
This application offers a [SPA](https://en.wikipedia.org/wiki/Single-page_application) on the base of [Vue.js](https://vuejs.org/) to allow a good and dynamic user experience.
|
||||
|
||||
More informations you will find in the [node README.md](./node/README.md)
|
@@ -1,34 +1,43 @@
|
||||
## backend application
|
||||
# Core Application
|
||||
|
||||
## conventions
|
||||
## Conventions
|
||||
|
||||
### coding
|
||||
### Symfony
|
||||
The application MUST use [Symfony 4. coding standards](https://symfony.com/doc/current/contributing/code/standards.html).
|
||||
|
||||
#### symfony
|
||||
The application MUST use Symfony 4. coding standards
|
||||
|
||||
#### php
|
||||
### PHP
|
||||
PHP code MUST follow the [PSR-4](https://www.php-fig.org/psr/psr-4/) standard.
|
||||
|
||||
#### twig
|
||||
### Twig
|
||||
Twig templates MUST follow the [Symfony Template best practices](https://symfony.com/doc/current/best_practices/templates.html).
|
||||
|
||||
### naming
|
||||
### Naming
|
||||
|
||||
#### interfaces
|
||||
#### Interfaces
|
||||
|
||||
A Interfaces MUST be named *ClassnameInterface*.
|
||||
|
||||
It SHOULD be based in the directory of the class.
|
||||
|
||||
#### abstract classes
|
||||
Each class SHOULD implement an interface.
|
||||
|
||||
#### Abstract Classes
|
||||
|
||||
A abstract class MUST be named *AbstractClassname*.
|
||||
|
||||
It SHOULD be based in the directory of the classes which inherit from it.
|
||||
|
||||
###### entities
|
||||
## Technologies
|
||||
The following Symfony related components will be used:
|
||||
- [Services](https://symfony.com/doc/current/service_container.html)
|
||||
- [ORM](https://symfony.com/doc/current/doctrine.html)
|
||||
- [Routing](https://symfony.com/doc/current/routing.html)
|
||||
- [Form](https://symfony.com/doc/current/forms.html)
|
||||
- [Validation](https://symfony.com/doc/current/validation.html)
|
||||
- [Events](https://symfony.com/doc/current/event_dispatcher.html)
|
||||
- [Twig](https://twig.symfony.com/)
|
||||
- [REST](https://symfony.com/doc/master/bundles/FOSRestBundle/index.html)
|
||||
- [User Bundle](https://symfony.com/doc/current/bundles/FOSUserBundle/index.html)
|
||||
|
||||
####### source
|
||||
|
||||
A source MUST be named *SourcenameSource*.
|
||||
## Domain
|
||||
More information about the domain logic you will find in [./src/Domain/README.md](./src/Domain/README.md).
|
||||
|
Reference in New Issue
Block a user