VCPR.ORG is building a platform to assist veterinarians and their clients with creating, prescribing, and monitoring animal treatment protocols. The platform includes a backend that manages protocols, prescriptions, and cases, and provides an API used by three front-end apps customized for different user groups. Independent developers can also access the API. The Protocol Editor allows veterinarians to create and prescribe protocols, and the OnFarm app allows clients to enroll cases and view prescribed protocols. An Administration app enables admin users to manage users, accounts, drug lists, and other information. The client, a self-taught software developer and veterinarian, developed an early version of the platform with funding from the USDA, but needed help managing the project and with front-end development. The backend is written in Scala with the Play Framework, and the frontend is in React.
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.
To establish a close collaboration with the client (also the backend developer), we provided explanations of our agile processes and integrated them into our tools (Jira, Confluence). We also joined the client's slack channel to facilitate quick and effective communication.
Although we were hired to fix and improve the front end, we still needed to understand the entire platform to effectively assist the client in achieving their goal.
Our team consisted of the client as the backend developer, two frontend developers, a tester, and a product owner. Coordinating the work between the backend and frontend was a challenge, but we were always able to agree on next steps. Another challenge was the existing code, which was using an old version of React with an architecture that had room for improvement.
During the project, our team was able to analyze and understand the existing code, fix major issues, and improve code quality by using modern React with functional components and hooks. We also wrote down the product requirements for the individual applications and based on those, we were able to identify, specify, and fix all bugs on the platform. To manage everything within the given time frame, we agreed with the client to add a second frontend developer a month before the deadline, once we had a better understanding of the scope and needed capacity.
As a result of the collaboration, the application is now stable, without major issues, and with new features added. The client is pleased with our ability to listen to and respond to their specific needs, quickly adapt to the existing code base (even when some technologies were new to us), and make rapid progress. The collaboration is ongoing.