Project information
- Category: Web Application Development
- Client: American Immuinization Registry Association (AIRA, USA)
The project had two primary goals:
1) Modernize the User Interface
The first goal of the project was to introduce a modern UI framework to enhance the look and feel. To achieve this, we collaborated with a design company. We provided them comprehensive details about the existing system, including its functionality and user interface. The design company created mockups that captured our vision based on our discussions. After a thorough review process, we finalized the design and they provided us with Tailwind-based CSS artifacts, which we used to enhance the user interface of the application.
As part of the project, we developed a new Angular application. This application incorporated the Tailwind CSS provided by the design team, ensuring a visually appealing and cohesive user interface. In the implemented architecture, the Angular application was designed to consume the JSON data produced by the Spring-based REST controllers. This standard approach allowed for seamless integration between the frontend and backend components of the application.
The Angular app utilized HTTP services to send requests to the backend REST controllers and receive the JSON responses. By following this architectural pattern, we ensured efficient communication between the frontend and backend, enabling the Angular app to fetch and display the required data dynamically.
We followed the standard modern practices of an MVC framework, enabling efficient code organization and maintenance. To manage the application's state, we implemented the NgRx store, facilitating effective data management and synchronization. Additionally, we leveraged RxJS to enable asynchronous operations within the application, resulting in an improved user experience.
2) Refactor the Backend to Utilize Spring Framework
The second goal of the project was to refactor the backend code to utilize the Spring framework.
To achieve this, the backend of AART was upgraded to a Spring-based project, adopting the best practices and features provided by the framework. As part of the refactoring process, a standing three-layered design was implemented.
The three layers in the design included REST controllers, a Service layer, and a repository layer. The REST controllers were responsible for handling incoming HTTP requests and mapping them to the appropriate service methods. The Service layer encapsulated the business logic and served as an intermediary between the controllers and the repository layer. The repository layer was responsible for data access and manipulation, interacting with the database or other data sources.
During the refactoring process, a challenge arose in ensuring backward compatibility with the legacy layer. To address this, we introduced adapters that acted as a bridge between the new Spring-based code and the existing legacy code. These adapters allowed for the reuse of certain functionalities and ensured compatibility between the different layers.
By leveraging the Spring framework and implementing a three-layered design, we improved the overall structure, maintainability, and scalability of the backend codebase. The refactoring efforts resulted in a more robust and efficient backend system that aligned with modern development standards.