Smart Expense Tracker Overview
Smart Expense Tracker Overview
INTRODUCTION TO PROJECT
1.1 Introduction
The modern landscape of personal finance management demands tools that are not only
accurate but also engaging and instantaneous. This project presents the development of the
"Smart Expense Tracker," a robust mobile application designed to transition personal financial
accountability from tedious manual computation to an efficient, organized, and rewarding
digital process.
1.2 Description
The Expense Tracker Website is a web-based application designed to help users efficiently
manage, monitor, and analyse their personal or organizational financial activities. It provides a
centralized platform where users can record daily expenses, categorize transactions, track
income sources, and monitor overall spending habits. The system aims to promote financial
discipline by offering clear visibility into spending patterns and helping users make informed
budgeting decisions.
1.3 Objective
The core objectives of the Smart Expense Tracker project are bifurcated into functional goals,
which focus on data processing and accuracy, and behavioral goals, which center on user
motivation and financial literacy.
9
Functional Objectives :
The following are some of the functional objectives of expense tracker app –
• Real-Time Data Capture: To provide a simple and accessible interface for users to log
income and expenses instantaneously at the point of transaction.
spending totals, comparing them against the user’s designated monthly salary.
• Data Visualization: To generate clear, graphical representations, such as monthly reports and
categorical charts, that provide a thorough investigation into spending patterns.
• Incentivize Saving: To establish a clear, achievable financial goal (saving ₹2000 or more
every month) and provide immediate, tangible rewards (Tokens) upon meeting that milestone.
of dopamine associated with achievement —to encourage self-managed goal setting and
consistent expense tracking.
• Increase User Engagement: By incorporating elements like progress tracking and rewards, the
application seeks to deepen user interaction and turn the often tedious task of budgeting into an
interactive and enjoyable process, thereby maximizing user [Link] provide customized and
cutting-edge software, mobile, and web-based solutions that meet diverse business needs
10
1.4 Scope of the Project
The scope of the Smart Expense Tracker is deliberately focused on personal financial management for
individuals who require a streamlined, error-minimizing solution.
The primary users are individuals seeking to gain visibility and control over their daily and monthly
spending. This includes people who are currently using error-prone manual methods, resulting in
misplaced decimal points or incorrectly entered figures that lead to significant financial discrepancies.
The mobile platform ensures that tracking can be done "at the point of purchase," eliminating the delay
inherent in traditional month-end reconciliation.
Functional Scope
Secure Authentication: Providing registration and login functionality, including the capture of
the user's initial Monthly Salary as the benchmark for budget tracking.
Transaction Management: Allowing users to add new expenses, choose categories, and view a
history of their transactions.1 User-defined categories are included to ensure the system adapts to
unique spending patterns.
Real-Time Dashboard: Displaying the critical financial metrics instantly: Total Salary, Total
Expenses, and Remaining Balance.
Gamified Rewards: Implementing the precise logic for tracking monthly savings against the
₹2000 threshold and issuing Tokens upon achievement.
11
CHAPTER – 2
SYSTEM STUDY
Manual systems involve collecting physical receipts, transcribing information into a physical journal or
digital spreadsheet, and periodically reconciling accounts, often at the end of the month. While simple,
these methods are intrinsically limited by their reliance on human discipline and memory.
Simple digital systems, such as non-integrated spreadsheets, offer marginally better calculation
efficiency but still require extensive manual data entry and categorization. Professionals using these
manual classification methods report spending substantial time, averaging between 10 to 15 hours each
month, solely on categorizing their expenses.
Furthermore, these systems are often siloed, meaning they do not integrate with other tools, leading to
duplicate data entry and a lack of holistic into spending patterns.
The limitations of existing manual and simple digital expense tracking methods create
significant operational and financial liabilities, justifying the development of a smart,
automated solution.
The most significant problem is the high susceptibility to human error. A misplaced decimal
point or an incorrectly entered figure in a manual log can lead to substantial discrepancies in
financial records. Research indicates that approximately 19% of expense reports contain errors,
and correcting each single error requires an additional 18 minutes of work and an average cost
of $52. These mistakes cascade into larger issues, compromising accuracy for budgeting, tax
12
preparations, or accurate financial analysis.6 Senior financial analysts report spending around
10 hours monthly just fixing errors that arise from manual data input.
Traditional systems inherently suffer from delayed reporting. If expenses are only reconciled
at month-end, users lose the critical opportunity to monitor spending as it happens. This delayed
visibility means that users cannot course-correct their spending behavior in real-time, often
discovering budget overruns too late. Modern finance management requires staying on top of
spending constantly, and the monthly wait time inherent in older systems is no longer
competitive.
Manual tracking is tedious and time-consuming, leading to high rates of non- compliance and
user abandonment. Simple trackers lack the intrinsic motivation needed to encourage adherence
to savings or budgeting goals. The process is perceived as a necessary chore rather than a
helpful tool, resulting in users failing to maintain comprehensive documentation, including
necessary receipts and invoices, which further compromises audit trails and financial analysis.
The proposed Smart Expense Tracker system addresses the systemic deficiencies of traditional
methods by implementing a real-time, automated, and behaviorally reinforcing platform.
The proposed system leverages digital data entry and automated calculation workflows to
eliminate human error and ensure immediate data accuracy. By using a centralized cloud
database (Firebase), the system provides instant visibility into spending. Every expense
submitted by the user is immediately recorded and the dashboard metrics (Total Expenses,
Remaining Balance) are updated in real-time. This instantaneous feedback loop allows for
better decision-making and continuous budgetary compliance.
The Mechanism
13
The primary innovation of the proposed system is the integration of gamification to drive
behavioral change and boost user engagement. This system operates as a positive reinforcement
program designed specifically to incentivize savings.
The core logic is tied to the user's registered Monthly Salary.1 The system defines a clear,
numerical goal: the user must achieve a minimum net saving of ₹2000 per month. The
gamification steps are as follows:
Progress Tracking: As the user enters expenses throughout the month, the Remaining Balance
tracks their proximity to the saving
Achievement Reward: Upon successful calculation and verification (typically triggered at the
end of the calendar month or upon a successful savings achievement), the system issues a
Token Reward. This virtual reward is accompanied by instant, positive feedback ("Congrats!
You earned a token!").
Streaks and Retention: By rewarding this specific positive financial behavior (saving), the
application taps into the human desire for achievement and instantaneous gratification. This
mechanism encourages users to maintain a "streak" of saving, thereby maximizing long-term
user retention and compliance with personal financial goals.
This structure ensures that the system is not merely collecting data; it is actively conditioning
users toward financial discipline through engaging, game-like experiences.
A comprehensive feasibility study was conducted to ascertain the viability of the Smart Expense Tracker
project across technical, operational, and economic dimensions.
A feasibility study is a critical assessment that determines whether a proposed project is viable, practical,
and beneficial. For the Expense Tracker application, this study evaluates the project's potential to meet
14
user needs while utilizing available resources effectively. The study examines various aspects including
technical feasibility, economic viability, and operational practicality to provide a comprehensive
evaluation of the project's potential for success.
The primary purpose of this feasibility study is to analyze whether Expense Tracker can be developed and
implemented successfully within the constraints of time, budget, and technology. It assesses how the
application will address current problems in financial management and deliver value to users. The study
also considers the resources required for development, including technology, personnel, and
infrastructure, to ensure they are available and sufficient.
Technical Feasibility
Technical feasibility assesses whether the project can be constructed using available technology and
expertise. The analysis confirms high technical feasibility. The project relies on the Flutter framework and
the Dart language, both of which are mature, well- supported by Google, and possess extensive
community resources and clear documentation. The Flutter platform provides a comprehensive set of APIs
necessary to build complex mobile applications.
Furthermore, the backend relies on Firebase, a stable, cloud-based platform that handles critical services
such as authentication and NoSQL data persistence. This alleviates the need for custom server
infrastructure development, allowing the development team to focus resources on core business logic and
front-end user experience. The technology stack is fully capable of supporting the proposed real-time
calculations and the gamified reward logic.
Operational Feasibility
Operational feasibility evaluates how well the proposed system will be utilized and integrated into the
daily life of the target user. The system demonstrates excellent operational feasibility.
The core design principle is to simplify and automate a traditionally complex process. By providing a
mobile application interface and immediate feedback on spending, the application meets a significant
market need for instant expense recording. The integration of the gamified reward system significantly
boosts the likelihood of continued user adoption and compliance.
15
Users are intrinsically motivated to engage with the app regularly to keep track of their progress toward
earning their token reward, addressing the common problem of non- compliance found in passive tracking
tools. The system fosters self-regulation by making goal completion visible and rewarding.
Economic Feasibility
Economic feasibility determines whether the benefits of the proposed system outweigh the costs of
development and maintenance. The project utilizes a highly cost-effective technology stack.
The primary development tools—Flutter SDK, Dart SDK, and Visual Studio Code—are free and open-
source. The backend, Firebase, operates on a generous free tier, making the initial development and
deployment phase economically viable with minimal outlay. While the application may incur ongoing
maintenance costs for server and database infrastructure as user adoption scales, these costs can be offset
through future monetization strategies, such as optional premium features or controlled in-app
advertisements. The benefit realized by the end-user—reduced human error, saved time previously spent
on manual categorization, and improved financial decision-making— far exceeds the minimal investment
cost of the initial development.
16
CHAPTER – 3
The primary objective of the Smart Expense Tracker is to simplify the task of budgeting and
managing money by allowing users to add expenses, categorize them, calculate monthly
savings, and earn tokens if they save more than ₹2000 in a month. The system consists of
multiple modules including User Authentication, Dashboard, Expense Management,
SavingsInsight, and Token Rewards. The authentication system ensures secure login and
registration. The dashboard provides the user with an overview of total income, total expenses,
remaining balance, and tokens earned. Users can add new expenses, view expense history, and
analyze spending trends over time.
The system is developed using HTML, CSS, and JavaScript for the front-end interface,
ensuring a clean, modern, and responsive user experience. The back-end system is built using
Python, executed in the IDLE environment, and connected to an SQL database for storing user
information, expenses, login credentials, salary details, and token history. Flask is used as the
routing framework to connect the front-end templates with Python backend logic.
From a performance perspective, the system is designed to handle multiple operations smoothly
including expense addition, data retrieval, and monthly calculations. The architecture ensures
quick response times and efficient SQL queries. Security is ensured through hashed passwords,
protected sessions, and secure API communication between front-end and back-end. The
17
system also offers compatibility across modern browsers and devices, ensuring accessibility
and ease of use for all users. The interface is intuitive enough for beginners, requiring no
technical knowledge to operate.
Software Requirements
Operating System:
Front-End Technologies:
Back-End Technologies:
* Python
* Flask Framework
* Flask Session
* Jinja2 Templates
Database:
18
* SQL Database for user data, expenses, salary, and tokens
Package Manager:
RAM: Minimum 1 GB
Graphical User Interface (GUI) tools enable the user to interact visually with the system
through buttons, tables, forms, input fields, and menus instead of writing commands. GUI
simplifies complex operations and enhances usability. In the Smart Expense Tracker, GUI plays
a crucial role in offering a smooth user experience by allowing users to easily register, login,
add expenses, view dashboards, and monitor savings.
They make the system more user-friendly and accessible to non-technical users.
GUI components (buttons, forms, tables) simplify interaction and reduce the chance of user
errors.
They provide smooth navigation between pages like Login, Register, Dashboard, and Expense
History.
GUI enhances productivity by allowing fast input, easy data visualization, and instant feedback.
19
Front-End (HTML, CSS, JavaScript)
The front-end of the Smart Expense Tracker system is responsible for managing all the visual
components that the user interacts with. Its goal is to make the application intuitive, attractive,
and easy to navigate. The front-end is developed using HTML5, CSS3, and JavaScript,
combined with Flask’s Jinja2 templating engine for dynamic data rendering.
1. HTML Structure
HTML5 is used to create the structural layout of all web pages. Every important page of the
project such as Home, Register, Login, Dashboard, and Add Expense is built using clean and
semantic HTML tags.
Header Section:
Main Body:
Forms:
Registration Form
Login Form
Each form is created using <form>, <input>, <select>, <label>, and <button> tags to ensure
proper data collection.
Tables:
Expense history and monthly summary tables are created using <table>, <tr>, <th>, and <td>.
20
Dashboard statistics such as monthly expenses, total balance, and savings are displayed using
card-like design blocks.
The use of semantic tags such as <nav>, <section>, <article>, and <footer> improves
readability, accessibility, and SEO.
2. CSS Styling
CSS3 is used extensively to enhance the visual appearance of the application. A clean, modern,
and user-friendly design approach is followed so that users can navigate easily.
a. Layout Design
Responsive Design:
Mobile phones
Tablets
Laptops
Desktops
c. Color Theme
21
White backgrounds for content
This makes the system look professional and helps the user focus on the content.
d. Dashboard UI
Savings Card
Expense Card
Balance Card
CSS makes the dashboard more attractive through card shadows, spacing, borders, and
consistent typography.
3. JavaScript Functionality
Important JS features:
a. Form Validations
b. Dynamic Updates
Expense category
22
Amount
Date
c. Dashboard Enhancements
Smooth animations
Alert messages
d. UI Effects
Slide animations
These small effects improve user experience and keep the interface lively.
Flask uses Jinja2 templates to dynamically inject backend data into the HTML pages.
Examples:
This makes the frontend dynamic without needing to reload everything manually.
23
Back-End (Python Flask + SQL Database)
The backend of the Smart Expense Tracker plays a crucial role in handling all the data
processing, business logic, authentication, and database operations. The backend is developed
using Python, and the Flask framework is used to manage routing and rendering. The entire
server logic runs efficiently on local host environments.
1. Flask Framework
Flask is a lightweight yet powerful Python web framework. It provides flexibility and is ideal
for small-to-medium applications like Expense Tracker.
Flask Handles:
URL routing
Form handling
Session management
Template rendering
Database connection
Security features
Flask keeps the backend code clean, modular, and easy to maintain.
2. Backend Architecture
a. [Link]
Contains:
24
Token calculations
b. Database Functions
Establish connections
Fetch rows
3. Backend Modules
Handles:
Email/username validation
Password verification
Hashed passwords
Server-side validation
Protected routes
Adding expenses
25
Fetching expenses for logged-in users
d. Token Module
Assigns tokens
SQL queries ensure tokens are not duplicated for the same month.
4. Database (SQLite)
Tables Used:
users
expenses
26
Stores all expenses added by user
tokens
Primary keys
Foreign keys
Unique constraints
5. Backend Flow
Step-by-step process:
27
Validation for duplicate users
Backend uses:
28
CHAPTER – 4
PROGRAM DESIGN
The program design of the Expense Tracker Website is based on a structured and modular
architecture that separates the user interface, application logic, and database operations to
ensure smooth performance and easy maintenance. The system uses a clean and responsive
interface where users can register, log in, add expenses, track income, and view their financial
summaries through simple forms and visual dashboards. All data entered by the user is stored
in a relational database, which includes tables for users, expenses, income, and categories,
ensuring organized and efficient data management. The workflow of the program begins with
user authentication, after which the user is directed to a personalized dashboard that displays
total spending, income, and graphical reports. Whenever a user adds, updates, or deletes a
transaction, the backend validates the information, processes the request, and updates the
database accordingly. To improve reliability, the system includes error-handling methods that
manage invalid inputs and display clear messages when issues occur. Strong security measures
such as encrypted passwords, input validation, and secure session management protect user
data from unauthorized access. The overall program design focuses on providing a user-friendly
experience while maintaining high standards of data integrity, performance, and security,
making the system efficient for managing personal and organizational financial records.
29
Password TEXT not null Login Password
DFDs illustrate the logical flow of information through the system, independent
of physical implementation.
The Context Diagram depicts the Smart Expense Tracker as a single, centralized
process interacting with one external entity: the User.
30
(D1: User Data, D2: Expense Data, D3: Reward Ledger).
DFD Level 1 (Process Decomposition)
DFD Level 1 decomposes the system into four major processing components
and their interactions with the internal datastores (D1, D2, D3).
Process 1.0: User & Session Management (Reads D1): Handles registration,
login, profile updates, and session persistence.
Process 2.0: Expense Data CRUD Operations (Reads D1, Writes D2):
Manages the input, validation, storage, and retrieval of individual expense
transactions.
Process 3.0: Reporting & Visualization (Reads D1, D2, D3): Aggregates raw
expense data (D2), calculates totals, and generates monthly reports and visual
charts (e.g., spending by category).
Process 4.0: Reward Calculation Engine (Reads D1, D2; Writes D3):
Executes the core business logic. It reads the Monthly Salary (D1) and
aggregated monthly expenses (D2) to determine if the ₹2000 savings threshold
has been met, subsequently writing the achievement record to the Reward
Ledger (D3).
The following diagram 4.1 illustrates the notations and symbols used to
construct the DFD:
Figure 4.1: Illustrate the notations and symbols used to construct the DFD:
31
Figure 4.2: The Context level DFD for Expense Tracker
32
4.3 E-R Diagram
An Expense Tracker Website helps users record income/expenses, organize them into
categories, set budgets, and track spending.
To build this system, we identify the main entities (tables) and how they connect.
What it stores?
name
Examples:
What it stores?
category_id
33
type → "Expense" or "Income"
created_at
Relationship:
What it stores?
transaction_id
amount
date
Relationship:
34
4. BUDGET (Limits set by user)
Users often set spending limits for categories (e.g., "Spend max ₹5000 on food this month").
What it stores?
budget_id
amount_limit
start_date
end_date
Entity Relationship
35
Figure 4.3:The Context level ERD for Expense Tracker
36
4.2 SCREEN SHOTS:
HOMEPAGE FRAME
REGISTRATION FRAME
37
LOGIN FRAME
DASHBOARD FRAME
38
39
CHAPTER – 5
Expense Tracker Website follows a structured and systematic process to ensure that the system
is efficient, user-friendly, and reliable. The development phase begins with gathering user
requirements to understand the features needed, such as adding expenses, categorizing
transactions, setting budgets, and generating summaries. Based on these requirements, the
system design is created, including the database structure, user interface layout, and workflow
diagrams. The frontend is developed using web technologies like HTML, CSS, and JavaScript
to create an interactive and responsive interface, while the backend is implemented using a
suitable framework such as [Link], Django, or Laravel to handle business logic,
authentication, and database operations. The database is set up using MySQL or MongoDB to
securely store user information, transactions, categories, and budget details. After development,
integration and testing are performed to ensure all modules work together smoothly and that
the system is free from errors. Once testing is successful, the implementation phase begins,
where the system is deployed on a hosting platform, and users can access the website through
a web browser. Proper documentation and user training are provided to help users understand
the system’s features. Finally, regular maintenance is carried out to fix bugs, add new features,
and improve performance based on feedback.
The development environment for the Expense Tracker Website is set up to provide a smooth
workflow for designing, coding, testing, and deploying the system. The project is developed
using Visual Studio Code as the primary code editor because of its lightweight interface, built-
in debugging tools, and extension support. For frontend development, the environment includes
HTML, CSS, and JavaScript, along with optional libraries such as Bootstrap or TailwindCSS
to create a responsive and user-friendly interface. The backend is implemented using a suitable
technology such as [Link] with Express, Python with Django, or PHP with Laravel, depending
on the project requirements. The system uses MySQL or MongoDB as the database, managed
40
through tools like phpMyAdmin, MySQL Workbench, or MongoDB Compass for easy data
handling and schema management. [Link] and npm are installed to manage dependencies, run
the development server, and integrate required packages. For API testing and debugging, tools
like Postman or Thunder Client are used. Version control is maintained through Git, with the
project stored and collaborated on using GitHub. The environment also includes modern web
browsers like Google Chrome for testing and inspecting UI behavior. Overall, the development
environment ensures a structured, efficient, and professional setup that supports the complete
lifecycle of the Expense Tracker Website.
The implementation procedure of the Expense Tracker App involves deploying all components
of the system—frontend, backend, and database—into a working environment where users can
access and use the application smoothly. The process begins with setting up the MySQL
database on the server or local machine, where necessary tables such as Users, Expenses,
Categories, and Budgets are created and populated with initial data. After finalizing the backend
logic in Python, the application is deployed using frameworks like Flask or Django by
configuring the server environment, installing required dependencies, and setting environment
variables to ensure secure database connectivity. The backend server is tested locally using
tools such as Postman to verify that all API endpoints work correctly for operations like login,
adding expenses, generating summaries, and retrieving reports. Once backend validation is
complete, the frontend implementation is carried out by organizing HTML pages, CSS
stylesheets, and JavaScript files in the deployment directory. The frontend communicates with
the Python backend through HTTP requests, so the URLs and endpoints are configured
properly during implementation.
Next, the backend server is started, and the frontend is loaded in a browser to verify full
communication between the client and server. During this phase, the system undergoes real-
time testing where users log in, enter expenses, check analytics, and confirm if all components
work together without errors. After local testing, the application is deployed on a web hosting
environment, such as a cloud platform or shared hosting, where the Python backend runs on a
production server and the MySQL database is migrated or connected securely. Configuration
41
files are updated to point to the live database, and security settings such as password hashing,
SSL certificates, and restricted database access are enabled. The final step in the
implementation process is user training and documentation, where users are provided with
instructions or help guides on how to use the application, set categories, manage budgets, and
interpret expense reports. The system is continuously monitored after implementation to
identify bugs, resolve issues, update features, and ensure smooth functioning. Through this
well-structured procedure, the Expense Tracker App becomes fully operational, reliable, and
ready for user deployment.
//[Link]
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<header>
<nav>
42
<a href="{{ url_for('register') }}">Sign Up</a>
</nav>
</header>
<section class="hero">
<p>Monitor your spending, manage budgets, and get rewarded when you save ₹2000 or
more every month!</p>
</section>
<footer>
</footer>
</body>
</html>
// [Link]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
43
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
body {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
.container {
background-color: #fff;
width: 420px;
border-radius: 15px;
padding: 30px;
text-align: center;
44
.container h2 {
margin-bottom: 20px;
color: #333;
form {
display: flex;
flex-direction: column;
align-items: stretch;
label {
text-align: left;
font-weight: 600;
color: #444;
input {
padding: 10px;
border-radius: 8px;
outline: none;
45
transition: 0.3s;
input:focus {
border-color: #007bff;
button {
color: white;
padding: 10px;
border: none;
border-radius: 8px;
margin-top: 20px;
cursor: pointer;
font-weight: 600;
transition: 0.3s;
button:hover {
transform: translateY(-2px);
46
.login-link {
margin-top: 15px;
color: #333;
font-size: 0.9em;
.login-link a {
color: #007bff;
text-decoration: none;
font-weight: 600;
.login-link a:hover {
text-decoration: underline;
.container {
width: 90%;
padding: 20px;
</style>
47
</head>
<body>
<div class="container">
<h2>Create an Account</h2>
<label for="email">Email</label>
<label for="username">Username</label>
<label for="password">Password</label>
<button type="submit">Register</button>
48
</form>
<div class="login-link">
</div>
</div>
</body>
</html>
//[Link]
<!DOCTYPE html>
<html lang="en">
<head>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
49
body {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
.login-container {
background-color: white;
width: 400px;
border-radius: 15px;
padding: 30px;
text-align: center;
.login-container h2 {
margin-bottom: 20px;
color: #333;
form {
display: flex;
50
flex-direction: column;
label {
text-align: left;
font-weight: 600;
color: #444;
input {
padding: 10px;
border-radius: 8px;
outline: none;
transition: 0.3s;
input:focus {
border-color: #007bff;
button {
51
background: linear-gradient(135deg, #007bff, #00c6ff);
color: white;
padding: 10px;
border: none;
border-radius: 8px;
margin-top: 20px;
cursor: pointer;
font-weight: 600;
transition: 0.3s;
button:hover {
transform: translateY(-2px);
.register-link {
margin-top: 15px;
color: #333;
font-size: 0.9em;
.register-link a {
color: #007bff;
52
text-decoration: none;
font-weight: 600;
.register-link a:hover {
text-decoration: underline;
.login-container {
width: 90%;
padding: 20px;
</style>
</head>
<body>
<div class="login-container">
<h2>Welcome Back</h2>
<label for="username">Username</label>
<label for="password">Password</label>
53
<input type="password" id="password" name="password" placeholder="Enter your
password" required />
<button type="submit">Login</button>
</form>
<div class="register-link">
</div>
</div>
</body>
</html>
// [Link]
<!DOCTYPE html>
<html lang="en">
<head>
<style>
body {
margin: 0;
54
color: #333;
display: flex;
flex-direction: column;
align-items: center;
padding: 30px;
h1 {
color: white;
margin-bottom: 10px;
.summary {
background: white;
padding: 20px;
border-radius: 15px;
display: flex;
justify-content: space-around;
width: 90%;
max-width: 800px;
margin-bottom: 20px;
flex-wrap: wrap;
55
.card {
text-align: center;
padding: 15px;
flex: 1 1 150px;
margin: 10px;
background: #f8f9fa;
border-radius: 12px;
transition: 0.3s;
.card:hover {
background: #e9f5ff;
transform: translateY(-5px);
.card h3 {
margin-bottom: 10px;
color: #007bff;
.token {
background: #d4edda;
color: #155724;
56
padding: 10px;
border-radius: 8px;
margin-top: 10px;
.expense-form {
background: white;
padding: 20px;
border-radius: 12px;
width: 90%;
max-width: 600px;
margin-bottom: 30px;
input, select {
width: 100%;
padding: 10px;
margin: 8px 0;
border-radius: 8px;
outline: none;
57
button {
border: none;
color: white;
border-radius: 8px;
cursor: pointer;
transition: 0.3s;
font-weight: 600;
button:hover {
table {
width: 90%;
max-width: 800px;
border-collapse: collapse;
background: white;
border-radius: 12px;
overflow: hidden;
58
th, td {
text-align: center;
th {
background: #007bff;
color: white;
tr:nth-child(even) {
background: #f2f2f2;
.logout {
margin-top: 20px;
background: #ff4d4d;
.logout:hover {
background: #ff6666;
</style>
59
</head>
<body>
<div class="summary">
<div class="card">
<h3>Total Salary</h3>
</div>
<div class="card">
<h3>Total Expenses</h3>
</div>
<div class="card">
<h3>Remaining Balance</h3>
</div>
<div class="card">
<h3>Token Rewards</h3>
{% if token_earned %}
{% else %}
60
{% endif %}
</div>
</div>
<div class="expense-form">
<option value="Food">Food</option>
<option value="Transport">Transport</option>
<option value="Shopping">Shopping</option>
<option value="Bills">Bills</option>
<option value="Entertainment">Entertainment</option>
<option value="Others">Others</option>
</select>
</form>
</div>
<table>
61
<tr>
<th>Category</th>
<th>Description</th>
<th>Amount (₹)</th>
<th>Date</th>
</tr>
<tr>
</tr>
{% endfor %}
</table>
<button class="logout">Logout</button>
</a>
</body>
</html>
// [Link]
// Theme Toggle
62
const themeBtn = [Link]("themeToggle");
if (themeBtn) {
[Link]("click", () => {
[Link]("dark");
});
// Transactions
// Add Transaction
if (transactionForm) {
[Link]();
63
const data = { desc, amount, type };
await fetch("/add_transaction", {
method: "POST",
body: [Link](data)
});
[Link](data);
updateUI();
[Link]();
});
function updateUI() {
[Link] = "";
let total = 0;
[Link]((t) => {
const li = [Link]("li");
[Link](li);
});
[Link] = ₹${total};
64
if (total >= 2000) {
[Link] = "limegreen";
} else {
[Link] = "white";
renderChart();
function renderChart() {
if (!ctx) return;
new Chart(ctx, {
type: "doughnut",
data: {
datasets: [{
65
data: [income, expense],
}]
});
// [Link]
body {
background: #f6f8fc;
margin: 0;
color: #333;
header {
background: #4a90e2;
color: #fff;
display: flex;
justify-content: space-between;
align-items: center;
66
header h1 {
font-size: 24px;
margin: 0;
.logout-btn {
background: #fff;
color: #4a90e2;
text-decoration: none;
border-radius: 8px;
font-weight: bold;
.logout-btn:hover {
background: #e9f3ff;
.dashboard-container {
width: 85%;
max-width: 1000px;
67
}
color: #4a90e2;
.summary-cards {
display: flex;
gap: 20px;
margin-top: 15px;
.card {
flex: 1;
background: #fff;
padding: 20px;
border-radius: 10px;
text-align: center;
.card h3 {
margin-bottom: 10px;
color: #555;
68
}
.card p {
font-size: 22px;
font-weight: bold;
color: #333;
.token-message {
margin-top: 20px;
background: #e3ffe3;
padding: 15px;
border-radius: 10px;
color: #1b751b;
font-weight: 600;
text-align: center;
.expense-form {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 10px;
69
}
.expense-form input {
flex: 1;
padding: 10px;
border-radius: 6px;
.expense-form button {
background: #4a90e2;
color: white;
border: none;
border-radius: 6px;
cursor: pointer;
.expense-form button:hover {
background: #377fcc;
table {
70
width: 100%;
border-collapse: collapse;
margin-top: 15px;
background: #fff;
border-radius: 10px;
overflow: hidden;
th, td {
padding: 12px;
text-align: center;
th {
background: #4a90e2;
color: white;
tr:hover {
background: #f1f8ff;
71
footer {
text-align: center;
margin-top: 30px;
padding: 15px;
background: #4a90e2;
color: white;
font-size: 14px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
import sqlite3
import os
app = Flask(_name_)
app.secret_key = 'secret123'
DB_NAME = 'expense_tracker.db'
72
def get_db_connection():
conn = [Link](DB_NAME)
conn.row_factory = [Link]
return conn
def init_db():
if not [Link](DB_NAME):
conn = get_db_connection()
cur = [Link]()
[Link]('''
''')
[Link]('''
73
category TEXT NOT NULL,
description TEXT,
''')
[Link]()
[Link]()
@[Link]('/')
def home():
return render_template('[Link]')
def register():
if [Link] == 'POST':
name = [Link]['name']
email = [Link]['email']
username = [Link]['username']
74
password = [Link]['password']
salary = [Link]['salary']
conn = get_db_connection()
cur = [Link]()
existing = [Link]()
if existing:
[Link]()
[Link]('INSERT INTO users (name, email, username, password, salary) VALUES (?,
?, ?, ?, ?)',
[Link]()
[Link]()
return redirect(url_for('login'))
return render_template('[Link]')
75
def login():
if [Link] == 'POST':
username = [Link]['username']
password = [Link]['password']
conn = get_db_connection()
cur = [Link]()
user = [Link]()
[Link]()
if user:
session['username'] = user['username']
return redirect(url_for('dashboard'))
else:
return render_template('[Link]')
@[Link]('/dashboard')
def dashboard():
return redirect(url_for('login'))
76
username = session['username']
conn = get_db_connection()
cur = [Link]()
salary = [Link]()[0] or 0
expenses = [Link]()
# Total expenses
total_expense = [Link]()[0] or 0
# Category-wise expenses
[Link]("""
FROM expenses
WHERE username=?
GROUP BY category
""", (username,))
77
category_data = [Link]()
[Link]()
# Calculate balance/savings
return render_template(
'[Link]',
username=username,
salary=salary,
total_expense=total_expense,
savings=savings,
token_earned=token_earned,
category_data=category_data,
expenses=expenses
@[Link]('/add_expense', methods=['POST'])
def add_expense():
return redirect(url_for('login'))
username = session['username']
78
category = [Link]['category']
description = [Link]['description']
amount = float([Link]['amount'])
date = [Link]['date']
conn = get_db_connection()
cur = [Link]()
[Link]()
[Link]()
return redirect(url_for('dashboard'))
@[Link]('/logout')
def logout():
[Link]()
return redirect(url_for('login'))
if _name_ == '_main_':
init_db()
[Link](debug=True, port=8080)
79
CHAPTER – 6
SYSTEM TESTING
System Testing is a crucial phase in the Software Testing Life Cycle (STLC) where the entire
application is tested as a whole to ensure it meets all functional and non-functional
requirements. For an Expense Tracker Website, system testing verifies that all modules such as
user login, expense entry, categories, reports, budget tracking, and analytics work correctly
together.
To detect defects that might not appear during unit or integration testing.
1. Functional Testing
80
Data export and import (CSV, Excel).
2. Usability Testing
Clear UI layout.
Accessibility features.
3. Performance Testing
Load Testing: How the site works with many users adding expenses.
4. Security Testing
5. Compatibility Testing
81
Different devices (mobile, tablet, desktop).
6. Database Testing
No duplicate entries.
7. Interface Testing
Application ↔ Database
2. Verify a new expense can be added with date, category, and amount.
82
8. Verify data is saved correctly in the database.
Test Case Design refers to the process of creating detailed test cases to verify that all
functionalities of the Expense Tracker website work as expected. The design includes test case
ID, test scenario, test steps, test data, expected result, and actual result (in real testing).
TC
Test Scenario Test Steps Test Data Expected Result
ID
83
Table 6.2: Expense Management Test Cases
TC
Test Scenario Test Steps Test Data Expected Result
ID
1. Go to Add
TC- Expense ₹500, Food, Expense saved and shown
Add new expense
05 2. Enter details Today in list
3. Click Save
1. Keep amount
TC- Validate mandatory Error: “Amount is
blank —
06 fields required”
2. Click Save
1. Select expense
TC- Edit an existing Change ₹500 → Expense updated
2. Edit amount
07 expense ₹700 successfully
3. Click Update
1. Select expense
TC- Expense deleted from
Delete an expense 2. Click Delete —
08 system
3. Confirm
TC
Scenario Steps Test Data Expected Result
ID
84
TC
Scenario Steps Test Data Expected Result
ID
TC Test
Scenario Steps Expected Result
ID Data
TC- Generate monthly Select month → View Jan Report displays all expenses for
13 report Report 2025 selected month
TC
Scenario Steps Test Data Expected Result
ID
TC- Budget exceeded Add expense More than Alert message shown: “Budget
17 alert beyond limit ₹10,000 Exceeded!”
85
Table 6.6: Performance & Security Test Cases
TC
Scenario Steps Expected Result
ID
86
CHAPTER – 7
SYSTEM IMPLEMENTATION
System Implementation is the phase in which the developed Expense Tracker system is
installed, configured, deployed, and made ready for actual use. It involves converting the
designed system into a working website, training users, migrating data, and ensuring smooth
functioning.
System implementation ensures that users can start using the Expense Tracker to record,
manage, and analyze their expenses efficiently.
1. Implementation Planning
API integration.
87
3. Data Migration
If the user had an older system or maintained records manually, existing data is transferred:
4. User Training
How to register/login.
5. Integration of Modules
Authentication module
Budget management
Notification system
88
Functional testing
Usability testing
Security testing
Performance testing
Compatibility testing
After implementation:
89
CHAPTER – 8
DOCUMENTATION
Documentation of the system is one of the most important activities in the system development
life cycle. This ensures the continuity of the system even if there are changes in the development
team. For the Expense Tracker App, two types of documentation are prepared:
• System Documentation
The system documentation contains technical details of the Expense Tracker App such as
system design, architecture diagrams, database schema, system flow, data dictionary, and
process descriptions. This documentation helps the developers and maintenance team
understand the internal working of the system and allows easy modifications or enhancements
in future. It ensures that the system remains scalable and maintainable based on new user
requirements.
Operational documentation provides detailed information about how the system functions in
the live environment. It includes:
This helps system administrators or technical teams to operate, manage and support the system
efficiently.
90
8.2 User Manual
User documentation provides full details of how to operate the system, including step-by-step
instructions for login, adding expenses, generating reports, and troubleshooting. It also explains
possible error messages and how users can resolve them.
The User Manual explains how to use the app step-by-step. It is written in simple and
understandable language so users can operate the system easily.
Total Expense
Total Income
Current Balance
Graphical spending analysis
Recent transactions list
Steps:
Go to Expense section
Enter amount, date, payment type, category etc.
Optionally add short notes (e.g., snacks, fees)
91
Click Save
Expense is stored in database & dashboard updates automatically
Displays:
User can:
We can start using the Expense Tracker App by entering the correct email ID and password in
the login screen. After successful authentication, the user is navigated to the Dashboard of the
application as shown below:
92
Figure 8.1: Home Page Frame
93
User Roles and Access
General User:
Admin :
Dashboard
Expense Management
Income Management
94
Report Generation
Login as a user.
Navigate to Add Expense section.
Enter amount, category, payment method, date, and note.
Click Save to store the record in the database.
C. Reports Module
Go to Reports page.
Choose time duration and view summary.
Bar/Pie charts show spending pattern.
Download or take screenshots if needed.
95
D. Edit / Delete Transaction
Go to Transactions page.
Select the record you want to modify.
Click edit or delete icon as needed.
Password Reset
Troubleshooting
96
CHAPTER – 9
The Smart Expense Tracker project successfully addresses the challenges of tedious,
error-prone personal finance management by delivering a high-performance, cross-
platform mobile application. Utilizing Flutter and Dart, the project achieved
architectural robustness and ensured UI consistency across Android and iOS devices.
The backend, anchored by Firebase, provides scalable, persistent data storage and
secure authentication.
The primary achievement of this project is the successful implementation of a novel
gamification system. By setting a clear, measurable savings goal and rewarding its
achievement with Tokens 1, the application effectively transformed a passive tracking
exercise into an active, motivating behavioral process. The development of the Expense
Tracker and the associated audit ledger ensures that positive financial habits are
reinforced, leading to sustained user engagement and improved financial discipline.
In conclusion, the Smart Expense Tracker provides a sophisticated and practical
solution for effective money management, validating the technical feasibility of
complex, modular mobile application development and demonstrating the power of
behavioral science integration in Fintech applications.
From this project, we are able to manage and keep tracking the daily expenses as well
as income. While making this project, we gained a lot of experience of working as a
team. We discovered various predicted and unpredicted problems and we enjoyed a lot
solving them as a team. We adopted things like video tutorials, text tutorials, internet
and learning materials to make our project complete. Furthermore, now we know much
more about the Android platform, java language and the SQLite query.
After making this application we assure that this application will help its users to
manage the cost of their daily expenditure. It will guide them and aware them about
there daily expenses. It will prove to be helpful for the people who are frustrated with
their daily budget management, irritated because of amount of expenses and wishes to
97
manage money and to preserve the record of their daily cost which may be useful to
change their way of spending money. In short, this application will help its users to
overcome the wastage of money.
The name of our project is " EXPENSE TRACKER" which is basically an Expense
Tracker. It works on the top of latest technology stack and is as interactive and friendly
as it is named. You have to provide the input manually or with the help of your speech
(thanks to speechly for making it happen easily).
The moment you fill in the input manually and click the "CREATE" button or the
moment you provide your voice command, the app stores the data with the help of
context that makes your app faster and the information is easily flowed between the
various components of the app. Then the information is populated in a list which if
displayed just below the input form.
Future Scope
The app can be integrated directly with users’ bank accounts and UPI wallets to
automatically fetch and categorize transactions.
Artificial intelligence can analyze past spending patterns and suggest better
financial decisions and monthly budget limits.
Automatic reminders for electricity bills, mobile recharge, rent, EMI, insurance
premiums, etc., can be added.
Users can add expenses using voice commands for faster and hands-free
operation.
98
Cloud Sync & Cross-Platform Access
Expense history can be exported into Excel/PDF and used for tax planning or
professional accounting.
Allow different country currencies, languages, and taxation systems for global
usage.
Automated scanning of bills and receipts using camera to extract details using
OCR technology.
Manage not only expenses but also stock, gold, crypto, mutual fund investments
for complete finance management.
Users can add expenses without internet; data syncs automatically when online.
Provide smart financial articles, user forums, budgeting templates, and expert
suggestions.
99
CHAPTER – 10
[Link]
[Link] Papers
Smith, J., & Johnson, M. (2021). "Machine Learning for Personal Finance
Management."
Journal of Financial Technology, 15(3).
Patel, R., & Lee, S. (2020). "User Experience Design for Financial Applications."
International Journal of Human-Computer Interaction, 28(4).
Garcia, C., & Kim, T. (2019). "Security Challenges in Mobile Financial Applications."
IEEE Security & Privacy, 17(2).
[Link] Documentation
React Documentation. (2023). React: A JavaScript library for building user interfaces.
[Link]
Firebase Documentation. (2023). Firebase: Google's mobile and web application
development platform. [Link]
100
MDN Web Docs. (2023). Web technology for developers. [Link]
WCAG 2.1 Guidelines. (2018). [Link]
[Link]-Source Libraries
101