mirror of
https://github.com/kevinveenbirkenbach/infinito.git
synced 2025-01-10 14:27:28 +01:00
76 lines
3.1 KiB
Markdown
76 lines
3.1 KiB
Markdown
|
## 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)
|