Callum Dourneen
Software Developer
< Back
project expense
A simple expense tracker app.
About
The Expense Tracker is a simple yet effective tool designed to help you manage and keep track of your daily spending. The app allows users to easily add, categorize, and view their expenses in real-time. With the ability to filter by category, and calculate the total amount spent, the Expense Tracker provides valuable insights into your financial habits. In addition to basic functionality, the app stores expenses in a SQLite database, ensuring that your data is securely saved and easily retrievable. It also features an intuitive interface, allowing users to view their spending history, delete individual expenses, or clear all entries when needed.
Project Details
App Title: NA
Genre: Utility
Platform: PC
Development Tools: Python, Tkinter, SQLite
App Features:
  • Add, categorize, and describe your expenses
  • View total amount spent across all expenses
  • Filter expenses by category
  • Delete individual expenses or clear all entries
  • Save expenses to a SQLite database for persistence
  • Simple, user-friendly interface using Tkinter
  • Technical Analysis
    What I Learnt
    Working with SQLite for Data Management
    This project was my first experience using SQLite as a database for storing and managing user-inputted data. I learned how to create tables, insert, retrieve, filter, and delete records efficiently. Understanding SQL queries and ensuring data persistence between sessions was a key takeaway. Additionally, I gained insights into handling auto-incrementing IDs, preventing errors when deleting records, and resetting the database properly when needed.
    Building a GUI with Tkinter and ttk
    Using Tkinter and ttk for GUI development was a completely new experience. I learned how to structure a user-friendly interface, use Treeview tables to display dynamic data, and implement interactive elements like buttons, input fields, and message boxes. Styling elements and ensuring proper layout alignment across different window sizes were also valuable learning points.
    Error Handling and User Experience Enhancements
    One of the major lessons from this project was implementing proper error handling. I had to ensure users received appropriate feedback when they entered incorrect data (e.g., non-numeric values in the amount field) or attempted invalid actions (like deleting a record without selecting one). Adding confirmation dialogs before critical actions, such as deleting all expenses, improved the user experience and prevented accidental data loss.
    Retrospective
    Challenges and Future Improvements
    Looking back, one of the biggest challenges was ensuring that the expense list updated in real time whenever a new expense was added or deleted. Initially, changes didn’t reflect instantly, which made the app feel unresponsive. By calling the update_expense_list() function after each database operation, I was able to solve this issue. Another challenge was managing category-based filtering in an efficient way. Initially, searches were case-sensitive, meaning "Food" and "food" were treated differently. Implementing case-insensitive filtering improved usability.