Budget Tracker App



About Client
Objective
To develop a practical web application that helps users manage and track their personal finances effectively. The app was designed to allow users to input both income and expenses, maintaining separate track lists for each category. The primary objective was to provide clear visibility into how each transaction affects the user's overall financial total, enabling better budgeting decisions and financial awareness through an intuitive, easy-to-use interface.
Tools & Technologies
HTML, CSS, JavaScript
Challenge
As a learning project focused on deepening JavaScript understanding, one of the primary challenges was implementing the mathematical logic to calculate expense percentages against total income. This required working with dynamic calculations that updated in real-time as users added or removed entries. Understanding how to properly handle division by zero scenarios, format percentages correctly, and ensure calculations remained accurate across different data states proved to be a valuable exercise in JavaScript fundamentals and data manipulation.
Implementing delete and edit functionality presented significant learning opportunities in DOM manipulation and event handling. The challenge was not just removing or updating entries from the display, but also ensuring the underlying data structure remained consistent and all related calculations updated accordingly. This involved working with array methods, event delegation for dynamically created elements, and understanding how to properly target and modify specific entries without affecting others.
Integrating local storage to persist user data across browser sessions was a crucial technical challenge. This required learning how to serialize JavaScript objects into JSON format for storage, retrieve and parse the data on subsequent visits, and handle potential errors or corrupted data gracefully. Understanding the localStorage API, managing state between the application and storage, and ensuring data integrity across page reloads provided deep insights into client-side data persistence.
Creating a cohesive user experience that tied all these features together required careful consideration of state management and UI updates. Each action—adding income, adding expenses, deleting entries, or editing values—needed to trigger multiple updates: recalculating totals, updating percentages, refreshing the display lists, and syncing with local storage. Building this interconnected system with vanilla JavaScript, without frameworks, provided invaluable experience in managing application state and understanding the foundations that modern frameworks are built upon.
Related Projects



