Contents
- Brief.
- Architecture.
- Project Tracking.
- Risk Assessment.
- Testing.
- Front-End Design.
- Known Issues.
- Future Improvements.
- Authors.
For this brief I have been asked to create an application that generates "Objects" upon a set of predefined rules. It requires a service orientated architecture which must be composed of at least 4 services that work together. Service 1 renders a HTML, service 2 and 3 both generate a random "Object" and service 4 will also create and object that's based on the result of service 2 and 3.
Additional Requirements
In addition to the requirements set out in the brief, I am also required to include the following:
- A Trello board (or equivalent Kanban board tech) with full expansion on user stories, use cases and tasks needed to complete the project. It could also provide a record of any issues or risks that I faced creating my project.
- Clear Documentation from a design phase describing the architecture I used for my project as well as a detailed Risk Assessment.
- Create two different implementations for service 2,3 and 4.
- An Application fully integrated using the Feature-Branch model into a Version Control System which will subsequently be built through a CI server and deployed to a cloud-based environment.
- If a change is made to a code base, then Webhooks should be used so that Azure Pipelines recreates and redeploys the changed application
- Applications and services should be deployed using azure as a cloud platform.
To meet the requirements of the brief, I have produced a MVC Web application using the .NET Framework Core that that must allow the user to do the following:
- Create a service that generates a class of anime classes and a second service that creates a class of anime clans. The third service would then generate a final combination of both classes which merges their stats that is then displayed on the front end.
Database Structure
Pictured below is an entity relationship diagram (ERD) showing the structure of the models.
ERD:
CI Pipeline
My CI Pipeline consists of a few Steps
- Deploy Code From machine to GitHub
- Setup Resource group that contains AppServices and AppService plans on Azure using Terraform: which then shows up on azure:
- Setup CI workflow using GitHub actions: Completed workflow:
Trello was used to track the progress of the project (pictured below). You can find the link to this board here: QA Project 2 | Trello
The board has been designed and structured to move from left to right from of the project implementation. The summary of each card is stated below
- Backlog [User Stories]: A list of requirements set out in the brief in order for this to be a successful project.
- Project Resources: List of relevant resources
- User Stories: Any functionality that is implemented into the project first begins as a user story. This keeps the development of every element of the web app focused on the user experience first.
- Planning: is the section where decisions are being made on what needs to be implemented next
- In Progress: shows what's currently being worked on
- Testing: once a feature has been implemented it goes onto the testing stage
- Finished : this section contains the features that have passed the testing stage and made it to production
The risk assessment matrix for this project can be found below in the screenshot :
Only one of the controllers for this application was tested using xUnit testing alongside with a code coverage report addon. The controller test included Repository patterns, Moq implementation to mock the controller behavior.
Below is a screenshot of the coverage report :
When the web app is first launched the user will be brought to this home page:
Here are also some Swagger Screenshots of the Services: Class API: Clan API: FaceOffAPI:
There aren't any issues I'm currently aware of...
For future improvements outside of my existing bugs I would like to:
- Add a more satisfying UI
- A feature where it generates two characters at once and compares their stats as well.
- Implement Angular
Keneil Jordan