VCPR.ORG is developing a platform to help veterinarians and their clients create, prescribe, and monitor animal treatment protocols. The back-end manages an archive of protocols, prescriptions, and individual cases and provides a REST API used by three front-end applications, each customized for the needs of a class of users. That API is also available to independent developers who may want to design software to interact with the platform Records of each treatment are kept within the application, so veterinarian users can see whether the treatment was successful.
The Protocol Editor allows Veterinarians to create, manage and prescribe individual protocols, which include drug specifications and instructions for treating specific animal problems. When a protocol is prescribed to a client, that client can enroll cases using another application, the OnFarm app. They can view or print prescribed protocols and enroll cases. Enrolling a case creates a list of specific tasks which must be completed, and shows them on a calendar. Progress of each case can be viewed by the owner or the prescribing veterinarian. Finally, an Administration application allows admin users to manage users, accounts, drug lists and other information.
Before reaching out to us the client had already developed an early version of the platform. The backend is written in Scala (using the Play Framework and the frontend in React, but there were numerous design issues and additional features and modernizations wanted. The client is living in the USA and is a veterinarian with deep experience in the subject area and self-taught as a software developer. He designed the application and data model himself with funding from the US Department of Agriculture and previously hired individual software developers for front-end work. As the project developed, he found he also needed help in managing day-to-day issues and organization of the project. He wanted to delegate some management tasks and front-end development while keeping responsibility for the backend.
The main goal was to fix and stabilize the application. Taking over an existing project is never an easy job. The client had some concerns about the stability of the application and a list of possible bugs they noticed, however that was not the final list of issues. We agreed with the client that we will start working on the project - get familiar with the code, write down the product requirements and test the actual state of the application to determine whether we are able to finish within the timeline given.
Since the main client is also the backend developer on this project we needed to establish a very close cooperation. Therefore, we started the whole cooperation with explanations of our agile processes, integration into our tools (Jira, Confluence) and we joined the client's slack channel to be able to communicate quickly and effectively.
Although we were hired to fix and improve the front end part, we still had to understand the whole platform to be able to help the client in achieving the goal. The team consisted of the client as a backend developer and 2 Frontend developers, a tester and a product owner on our side. There were some challenges in coordinating the work between Backend and Frontend, but we were always able to agree with the client on next steps. Another challenge was the existing code itself, as it was using the old react with an architecture that had some space for improvement.
During the project our team was able to analyze and understand the existing code, fix all major issues and improve the code quality by using modern react with functional components and hooks where possible. We have also written down the product requirements of the individual applications and based on those we were able to find, specify, and fix all bugs of the platform. To manage all this within the given time frame, we agreed with the client to add a second frontend developer a month before the deadline, because we were able to identify the scope and needed capacity by then.
As a result of the cooperation the application is now stable, without major issues and with new features added. The client is pleased with the way we listened to and responded to his particular needs, quickly adapted to the existing code base (though some technology was new to us), and progressed rapidly. The collaboration is continuing.