First of all I've "scratched" a package design solution to deliver the described assignment. Drawing is a good way to communicate my intent and clear some design assumptions. I would probably use a piece of paper or a whiteboard, but for later review I've put some extra effort to do it on a Plantuml.
The architecture/design has MVC, CQS, DDD and event driven patterns. Also, used TDD, BDD, code clean practices.
On the VCS I've implemented a CI pipeline that builds the solution, run the unit and integration and code analyses, then, if every thing passes, it pushes a container to the staging environment.
- Problem analysis
- Archtecture concept
- Archtecture overview
- CI pipeline
- Backlog(Userstories)
- Writte down Bdd Scenarios
- Post JSON doc for Diff
- Post valid json sides for right and left side
- Post invalid json for right and left side
- Post duplicated json for right and left side
- Post request for JSON diff
- Rest result for equal jsons
- Rest result for different sizes jsons
- Rest result for equal sizes and different jsons
- Inform if the key wasn't posted
- Inform if any side wasn't filled
- Post JSON doc for Diff
- Project setup
- Review diagram
- Remove fix messages from code
- Setup a database for persistence
- Find better response message format for identifying diff with different sizes
- Create scripts to easyly do exploratory testing(swagger-codegen)
- Refactor diffjson sides to reduce duplicated code