Expense Tracker header image

Expense Tracker

Timeline: Jun 2021 to Aug 2021

Status:Archived

Listen to this article:

Expense Tracker is a web application that allows users to easily track and categorize expenses. This project was a significant milestone for me as a developer as it is the first web service and RESTful API I built. It provided me with a deep understanding into building web services and blending front-end technologies with a back-end framework.

Key Features

Technologies Used

Architecture

The Expense Tracker project follows a simple 3-tier architecture, attemping separation of concerns and modularity: Expense Tracker Architecture

  1. Presentation Tier: The frontend, built with HTML, CSS, and JavaScript, forms the presentation layer, providing a user-friendly interface.
  2. Application Tier: The business logic is handled by the Spring Boot backend, which processes user requests, applies the necessary business rules, and communicates with the database.
  3. Data Tier: Postgres serves as the data layer, responsible for storing and retrieving user and expense data.

This application utilized GitHub actions to build images of the services which were then deployed to Digital Ocean droplets.

Data Model

The Expense Tracker used a multi-tenant approach to data storage. This means that all client data was stored together with the backend dictating the data each user had access to. The data model for the Expense Tracker project was designed to efficiently store and manage user, category, and transaction data. Below is an overview of the main tables and their relationships: Expense Tracker Data Model Additionally, sequences were created to auto-increment the primary keys for each table:

This relational database schema ensures data integrity and allows for efficient querying and management of user, category, and transaction data.

Learning Experience

Working on the Expense Tracker was an invaluable learning experience. Prior to this project, I had only build frontend projects from either static sites or utilizing the JAM stack. This project holds a special place in my heart as it was my first project using Spring Boot, my first RESTful API, and my first web service.

The project is incredibly rough around the edges and uses quite a few bad practices such as exposed keys, a poor attempt at a mono-repo, & countless other issues. However, it was a start to a solid foundation for my understanding of full-stack development. I encountered and overcame numerous challenges, from setting up the Spring Boot environment to integrating the frontend with the backend seamlessly. Each hurdle provided a learning opportunity, enhancing my problem-solving skills and technical knowledge.

Conclusion

For me, the Expense Tracker project represents much more than just a tool for managing expenses; it marks the beginning of my journey in software development & web services.

This project not only taught me many technical skills but also taught me the importance of perseverance and continuous learning. As I continue to grow as a developer, I look back on this project knowing how far I have come and how much my knowledge has grown.