← Back to Home

Software Projects

A detailed look at more of my projects and case studies.

Frontend Project Frontend Data Viz

World Bank Data Explorer

The Challenge: Visualizing complex economic data from a public API that often returns null or inconsistent values.

The Solution: Built an Angular service to normalize API responses before they reach the UI. Implemented a custom SVG map component where clicking a country triggers a distinct API call, managed via RxJS switchMap to cancel stale requests.

Key Learning: Handling asynchronous data streams and error states gracefully in a single-page application.

AngularTypeScriptAPI IntegrationSVG
Backend Project Backend Engineering

PC Parts Hub

The Challenge: Enforce strict inventory controls (min/max limits) in a web application while preventing race conditions during "Buy Now" actions.

The Solution: Leveraged Spring Data JPA's transaction management and custom Validator classes. Created a Bootstrapper component to seed sample data for consistent dev/test environments.

Key Learning: The importance of input validation at both the Controller layer (DTOs) and the Entity layer to ensure data integrity.

JavaSpring MVCThymeleafH2 Database
Featured Project Full-Stack

Travel Itinerary Planner

The Challenge: Build a robust booking system that handles relational data complexity (customers, bookings, excursions) while maintaining a clean separation of concerns.

The Solution: Architected a normalized MySQL schema to reduce data redundancy. Implemented a Spring Boot REST API with distinct Controller, Service, and Repository layers. The Angular frontend uses RxJS to manage cart state asynchronously without page reloads.

Key Learning: Managing atomic transactions during checkout to ensure that if an excursion booking fails, the entire vacation package booking rolls back to prevent data inconsistency.

Spring BootAngular 17MySQLTransaction Management
Mobile Project Native Android

VacaTracker - Android Vacation Application

The Challenge: Creating a seamless offline-first experience where users can plan trips without relying on constant network connectivity.

The Solution: Built a native app using the Android SDK and MVVM architecture. Leveraged Room (SQLite) for robust local data persistence and LiveData to ensure the UI stays in sync with the database changes automatically.

Key Learning: Understanding the Android Activity lifecycle and managing data persistence efficiently on resource-constrained mobile devices.

JavaAndroid SDKRoom/SQLiteMVVM