These are the services based on the clean code architecture. The reason i prefer to use this architecture is because it makes change easier and in world of software only change is constant.
Few words about the above architecture:
Inner Layer Models. Handles the creation, validation and reading of our entities (todo). Note that this should be custom logic and not include the DB implementation of models (e.g. in Mongoose DB ORM, their models should be encapsulated in the DB layer below). Our model schemas live here. DB. Our choice of DB (in memory, MongoDB, SQL), this is independent of the model. Note that in Clean Architecture this is considered an outer layer framework, but for practical applications I find it easier to place it inner and have the data-access layer depend on it rather than injecting it in.
Middle Layer Data-Access. Handles transfer between the DB (like an ORM). Depends on the model to validate and create the entity in DB. The key is to have a consistent & custom API that all outer layers communicate with. Testing here will ensure that replacing or using multiple DBs doesn't break anything further upstream.
Outer Layer Drivers. Represents the UI or interface (Web or CLI). It communicates only with the data-access layer.
For Deployment
yarn
npm install -g yarn
Clone the repo
git clone https://github.com/Abdulmoiz-Ahmer/todo-api.git
Install NPM packages
yarn install
Enter your Port, mongo user and password in .env
PORT=4000
MONGO_USER=
MONGO_PW=
To seed database run
yarn seed
To run
yarn start
or
docker build . -t todo-api;
docker run -p 4000:4000 todo-api;
This repository has been used with a todo app and it's repository.
Acceptance testing: Acceptance tests are in the tests/acceptance directory. Can be invoked with:
yarn test:acceptance
Contracts(postman collection): Contract tests are exported from postman application are in the directory tests/contracts. Can be invoked with:
yarn test:contracts
Contracts(pact): Contract tests are exported from postman application are in the directory tests/cdc. Can be invoked with:
yarn test:verify-contracts
Unit testing Unit Tests tests are exported from postman application are in the directory tests/unit. Can be invoked with:
yarn test:unit
Sample test run report of circleci pipeline
Libraries used for testing:
Note: To invoke all kind of tests use:
yarn test
Contributions of any kind are greatly appreciated.
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)Distributed under the MIT License.
Your Name - Abdulmoiz Ahmer - [email protected]
Project Link: https://github.com/Abdulmoiz-Ahmer/todo-api