Description

This platform was the integrating project of the subject Taller de Programación II, in which we were challenged to make contact and integrate different technologies that are used in the current Software Development industry in order to obtain a fully functional system.

Details

Development team

Team Member University ID Mail GitHub
Mauro Parafati 102749 mparafati@fi.uba.ar mauro7x
Nicolás Aguerre 102145 naguerre@fi.uba.ar nicomatex
Santiago Klein 102192 sklein@fi.uba.ar sankle
Taiel Colavecchia 102510 tcolavecchia@fi.uba.ar TaielC
Yuhong Huang 102146 yhuang@fi.uba.ar tonyhuang07

Team Organization

Although it was of extreme interest to all the team members to be able to have contact with each of the proposed technologies, given the high level of complexity of the project as well as its extension, and taking into account the little time available to carry it out, we decided to perform an assignment of components and responsibilities.

In a first stage, the different components of the system were identified, at the same time that the architecture to be used was designed. This process was carried out with participation of all members. Once this was completed, we followed with the assignment stage.

When dividing development tasks and system components, we took into account personal interest rather than experience, as we believe that this assignment presented a very good opportunity to learn. The division was as follows:

Team Member System component(s)
Mauro Parafati Backend microservices, Mobile
Nicolás Aguerre Mobile
Santiago Klein Backend microservices, Smart Contracts
Taiel Colavecchia Backoffice web, API Keys, Smart Contracts
Yuhong Huang Backoffice web

In any case, throughout the project all members were able to contribute their points of view and perspective regarding the work carried out by others, allowing constant improvement.

We are very happy with the final division of the project, as we all felt that we learned a lot about things that interest us in depth.

Dates

Team feedback

Results obtained

We are really happy with the results obtained, again, given the complexity and extent of the work. We believe that many improvements could be made, but it would take more time and greater time availability by the development team, since this work was carried out in parallel with different subjects and the personal work of each of the members, making it impossible to dedicate a longer time for the results to be ideal.

In any case, we believe that the objective was achieved, learning a lot and achieving a functional and complete final product.

Post-mortem analysis

In retrospective, after concluding the project, there are some technical decissions we made that ended up with side effects that were not deeply considered due to the lack of a profound vision at the beginning of the project.

On the one hand, the introduction of an API Gateway brought up a significant overhead in development, since we needed to make an additional integration for every endpoint/functionality provided to the clients, as well as mantaining many API Specs at the same time. Even though we could successfully concentrate the authentication in this microservice, providing users a single point of entry to the entire backend, we believe we should have reconsidered incorporing it due to the lack of time we had in the development of the project, and the overhead it meant. Nonetheless, we were able to simplify code in the consumed microservices, relieving them of responsabilities, and avoiding duplicated authentication code, which positively impacted the entire project.

Furthermore, another aspect that we found controversial was the incorporation of tests from the beginning of the development. There were several times in which we had to deeply change the way endpoints worked, forcing us to rewrite tests accordingly. Although we naturally believe testing is essential for ensuring the well functioning of the application and the integrity of development, as well as for the provision of stability, there is always this tradeoff between flexibility and robustness of code. In particular, since we had to develop the project from zero, maybe a more flexible approach should have been more convenient.

There are also some features that we would have liked to implement, but due to the lack of time we could not be able, e.g, the cancellation of projects, password recovery, etc. We are aware that there are always improvements to be made regarding UX in both mobile and web admin, but we are overall satisfied with the final product.

All in all, we have experienced the construction of a complex project from scratch, which has proved to be a substantial contribution to our knowledge and professional (and, not least, personal) development.