CASE STUDY.
Vacation Booking System
PROJECT OVERVIEW
The Travel Agency System Overhaul was a final school project designed to simulate a real-world scenario where a legacy backend system needed to be modernized. The travel agency had recently updated its frontend vacation bookings application using Angular and JavaScript, but the outdated backend, built in the early 1990s, was causing significant issues. With the original developer no longer available, the system had accumulated substantial technical debt, making maintenance and troubleshooting increasingly difficult. The goal of the project was to port the mission-critical functionalities of the legacy backend to a new, modern Spring Framework-based solution, ensuring better integration with the existing frontend and improving overall system performance.
OBJECTIVES
1. Migrate Legacy Backend: Recreate essential backend functionalities from the outdated system using the Spring Framework.
2. Integrate with Existing Frontend: Ensure the new backend seamlessly integrates with the existing Angular frontend, which could not be modified as part of the project.
3. Implement Modern Data Handling: Improve data management processes by utilizing modern Spring Data JPA and MySQL, ensuring reliability and efficiency.
4. Ensure Code Maintainability: Develop a well-structured, maintainable codebase that future developers can easily understand and extend.
2. Integrate with Existing Frontend: Ensure the new backend seamlessly integrates with the existing Angular frontend, which could not be modified as part of the project.
3. Implement Modern Data Handling: Improve data management processes by utilizing modern Spring Data JPA and MySQL, ensuring reliability and efficiency.
4. Ensure Code Maintainability: Develop a well-structured, maintainable codebase that future developers can easily understand and extend.
CHALLENGES
Legacy System Migration: Accurately interpreting and replicating the essential features of the legacy system in a modern framework.
Frontend Compatibility: Ensuring that the new backend functions correctly with the existing frontend without requiring any changes to the Angular codebase.
Data Validation: Implementing comprehensive validation to ensure that data sent from the frontend meets all necessary requirements before processing.
Project Organization: Structuring the project with clear separation of concerns by creating distinct packages for controllers, entities, services, and repositories.
Frontend Compatibility: Ensuring that the new backend functions correctly with the existing frontend without requiring any changes to the Angular codebase.
Data Validation: Implementing comprehensive validation to ensure that data sent from the frontend meets all necessary requirements before processing.
Project Organization: Structuring the project with clear separation of concerns by creating distinct packages for controllers, entities, services, and repositories.
MY ROLES.
BACK-END DEVELOPER
In this project, I was responsible for developing the backend from the ground up using the Spring Framework. My tasks included setting up the project structure, creating entity classes based on UML diagrams, and implementing repositories using Spring Data JPA. I also developed the necessary services and controllers to handle business logic and manage data flow between the frontend and backend.
DATA VALIDATION & INTEGRATION
I implemented robust validation mechanisms to ensure that data received from the frontend adhered to the required formats and constraints. This was crucial in preventing errors and ensuring smooth communication between the Angular frontend and the new Spring backend.
SYSTEM INTEGRATOR
In addition to backend development, I served as the System Integrator, responsible for ensuring that the newly developed Spring backend seamlessly communicated with the existing Angular frontend. This role involved testing and troubleshooting the interactions between the frontend and backend, ensuring data was correctly handled and displayed.
GITLAB INTEGRATION
Throughout the project, I regularly committed my work to a GitLab repository, documenting each stage of development. This not only served as a backup but also provided a clear history of the project’s progress, which was essential for the final evaluation.
SOLUTIONS.
TECH STACK
Embraced a modern tech stack including Spring Boot, Spring Data JPA, MySQL, and Lombok to build a scalable and maintainable application.
COMPONENT BASED ARCHITECHTURE
Developed a well-organized backend structure by creating distinct packages for controllers, entities, data access objects (DAO), and services. This clear separation of concerns ensured maintainability and scalability
ENTITY & DATA MANAGEMENT
Implemented entity classes, enums, and repository interfaces to manage data effectively. This included handling database interactions with Spring Data JPA and ensuring proper data validation and input enforcement for reliable data processing.
BUSINESS LOGIC & TESTING
Developed the service layer to manage business logic, including a checkout service that processed orders and returned purchase responses. The service layer was integrated with a REST controller to facilitate smooth communication between the frontend and backend.
I also ensured that the backend processed customer orders correctly, verified through successful data entries in the database without network errors.
I also ensured that the backend processed customer orders correctly, verified through successful data entries in the database without network errors.
CONCLUSION.
The Travel Agency System Overhaul project was a comprehensive simulation of real-world software development challenges, providing valuable experience in migrating legacy systems to modern frameworks. By successfully implementing a new Spring Framework backend, I was able to demonstrate my ability to develop scalable, maintainable, and efficient software solutions. This project not only fulfilled the prompt requirements but also added a robust and well-structured application to my portfolio, showcasing my skills in backend development, system integration, and effective project organization.