This is a project for the Software Development subject at the Andrés Bello Catholic University.
In this repository you can find a fitness life course application built with NestJS and other technologies.
Different software development practices were applied in our application:
-
Hexagonal Architechture: Through this architecture we can decouple the business logic from its implementation details.
-
Aspect Priented Programming (AOP): Through the different aspects implemented we can cover the orthogonal functionalities or cruss-cutting concerns presents in the application.
-
Domain Driven Design (DDD): This approach allows us to model the logic of our application as closely as possible to the reality of the problem domain.
-
Command Query Responsability Segregation (CQRS): This pattern allows us to separate read operations (Queries) from write operations (Commands). This is in order to maximize performance, scalability and security in our application.
-
Event Sourcing: This pattern allows us to store all the events that occur in our application in order to be able to reconstruct the state of the application through their reproduction.
- NestJs: Used as backend framework
- MongoDB: Used for the implementation of the different read models and the event store.
- Firebase: Used for handling notifications within the application..
- RabbitMQ: Used to implement a message queue in charge of synchronizing the different read models with the event store.
- Algolia: Used as a search engine and an IA tool for the recomendations.
- Docker: Used to generate the image and containers needed to run the application.
- Cucumber: Used to make the unit tests in the application.
-
Application Diagram:
-
Domain model:
-
API Hexagonal Architechture diagram:
-
API URL: Gymnastic Center Api
-
API Documentation: Api Documentation
-
Clone the repository.
-
Rename the
.env.template
file to.env
. -
Asign the enviroment variables in the
.env
file.
npm start
npm run test
We are a team of developers characterized by offering quality software solutions following the best software development practices.
Our team is conformed by: