COMP 3350 • Winter 2026 • Group A01–G14

BizBudget
An operations tracker
for business owners.

BizBudget is an Android application that gives business owners a complete view of their employees, scheduling, inventory, and finances.

What is BizBudget?

BizBudget was developed over three agile iterations by a five-person team as part of COMP 3350 at the University of Manitoba.

Vision Statement

BizBudget is an easy-to-use financial tracker for small to medium-scale business owners to manage their organization's spending habits, inventory, and employee shift coverage. Without requiring extensive financial and accounting knowledge, managers will be able to see a history of company purchases to identify how much they are spending and where purchases are going. BizBudget will allow the management of inventory stock amounts to help guide investment into the best performing items.

This will allow managers to quickly tell whether the organization is staying on budget and identify problematic spending habits early. Expense monitoring typically requires a lot of time, energy, and experience. BizBudget will solve the need to chase receipts, label purchases, and generate reports on expenditures. With BizBudget, managers will be able to do quick check-ins so that they have more time to lead and still maintain a clear and transparent view of companywide status.

BizBudget goes beyond simple expense tracking by allowing the management of inventory stock amounts to help guide investment into the best performing items. By monitoring which products move quickly and which sit on shelves, managers can make better decisions about what to order, when to reorder, and how much stock to maintain. This helps reduce waste, prevent stockouts, and avoid tying money up in items that are not selling well.

The platform also addresses one of the most challenging aspects of running a small business: employee scheduling and shift coverage. Business owners will be able to manage their workforce efficiently, ensuring adequate staffing levels while controlling labor costs. This integrated approach means managers no longer need to juggle multiple apps or spreadsheets to run their operations effectively. This comprehensive solution will allow managers to identify how well the organization is following their budget and identify problematic spending habits early, before they become serious financial issues.

With BizBudget, managers will be able to do quick check-ins throughout their day, spending just minutes instead of hours on financial oversight. This efficiency means they have more time to lead their teams, serve customers, and grow their business, all while maintaining a clear and transparent view of overall companywide status. The app transforms financial management from a dreaded chore into a simple, routine part of running a successful business.

BizBudget aims to give business owners a single, centralized place to keep track of spending, inventory, and employee coverage without relying on multiple disconnected tools. It will be successful if business owners can easily access and manage their core business information in one place and feel that day-to-day operations are simpler, clearer, and less time-consuming. This will be measured by at least 80% of participating users, through a post deployment survey, that they are able to access and manage all core business information without relying on multiple disconnected tools.

Intended Users

Business Owners

Small to Medium scale business owners that want to have a holistic view of their businesses operational status and health.

Managers

Small to Medium scale business managers that want to track day-to-day operations such as inventory stock and shift scheduling to ensure that processes run smoothly.

Everything in one place

BizBudget consolidates the most important business operations into a single Android application.

Login and Registration

Credentials are validated and authenticated before providing access to your businesses data.

Centralized Dashboard

View a quick run-down on your inventory, employees, an finances. See employees on shift, your highest and lowest selling products, and total profits and expenses in the combined dashboard.

Financial Overview

Review overall expenses and income throughout the day. Find out how much the business has spent on salary and stock, and compare against total income.

Employee Management

Add, edit, and remove employees from your system. You can review how much your employees are paid, as well as which positions you have filled.

Shift Scheduling

Schedule employees for shifts from Monday-Sunday to track which team members are actively working or when they will be working next.

Inventory Tracking

Review a list of your entire businesses stock, products sold, and profit per item. Attempted oversells are caught and rejected to ensure a valid inventory list.

Inventory Images

Import your own pictures to BizBudget to help differentiate each inventory item.

Data Export

Export employee, inventory, or financial data to CSV for your own storage or for use in external applications.

See how BizBudget works

A walkthrough of BizBudget's interface.

01

Register & Login

Create an account and log in. BizBudget validates credentials and routes authenticated users directly to their dashboard.

02

Manage Employees

Browse your employee list, add new staff, edit details, or remove employees who have left. Active status updates automatically based on scheduled shifts

03

Track Inventory

Add items, adjust stock, record sales, and monitor quantities across your products. Attempted oversells are caught and rejected to ensure a valid inventory list.

04

Review Financials

View the businesses spending activity and income. Congregate financial data allows you to stay on top of financial health without pouring through spreasheets.

Reflection on development

A retrospective look on the team's process, decisions, and lessons learned across three iterations.

Overall Architecture

BizBudget follows a three-tier architecture: a Presentation layer of Android Activities and dialogs, a Business layer of service classes and validators, and a Persistence layer implemented with SQLite. Each layer communicates only through defined interfaces, and dependencies are injected via constructors throughout the business layer.

Business logic is kept entirely out of the Presentation layer, keeping validation and decisions on how to handle user queries behind several Business layer service interfaces. A DashboardService facade wraps the underlying services to provide a clean, minimal interface to the presentation layer without exposing unneeded methods.

Each layer communicates only through defined interfaces, and dependencies are injected via constructors throughout the business layer.

Testability

Dependency injection enables the business layer to have high-coverage unit tests on the business layer. Unit tests inject fake repositories and stub interface implementations for reliability and predictability during tests.

Extension

Dependency injection allows new implementations to be created and swapped in as needed. Android dependencies are injected into the business layer. Isolating the business layer from the specific Android implementation details allows an easier transition into non-android deployments.

What Went Well

Strengths

  • Through each iteration, team meetings progressively became shorter while maintaining similar output. The team grew more comfortable delegating, reviewing, and resolving issues. A joint understanding of the project scope, and each team-members strengths allowed problem-solving to become much more quick and effective.
  • Feature implementation became much more streamlined in Iteration 3, facilitated by a well-defined testing suite ensuring the stability of methods, architectural streams, and end to end functionality. Lessening the need for manual testing meant that features could be reviewed and merged much faster.
  • Communication of task progress was maintained through the three iterations. This consistent communication helped keep us on track and led to open discussions on design ideas before getting pigeon-holded into a single implementation. Any time there was a roadblock or a team member needed assistance, open and frequent communication facilitated good and prompt solutions.

What Went Wrong

Feature bottlenecks

Task dependencies created bottlenecks throughout development. Features that spanned multiple layers required one developer to finish their piece before another could begin theirs, leaving team members waiting rather than contributing. This was most noticeable early in the project.

We tackled this problem in a couple different ways, though there is still a lot of improvement that could have been made. Firstly, we tried to assign tasks based on each developer's time table. Preliminary tasks were given to members that had most of their spare time at the beginning of the iteration, and later stage tasks to developers that were busy near the start of the iteration.

Testing Afterwards

Test Driven Development was part of our intended workflow, but it was difficult to maintain consistently throughout the project. UI heavy tasks made it easy to deprioritize writing tests upfront. Time pressure and feature bottlenecks further stressing those time constraints led to us writing tests after the fact more often than we would have liked.

What We Would Change If Starting Over

  • Transition to an hour-based time estimation from the start rather than day-based estimates, which the team found too broad for accurate planning.
  • Ensure that the team gets hands on experience with each aspect of the codebase as early as possible. Early on, developers were specialized in their contributions (either logic, UI, testing, etc.). We found considerable improvement in code quantity and quality once each member was comfortable with how the whole architecture worked.
  • Place more priority on Test Driven Development throughout the development cycle. Breaking work down into smaller tasks would help create opportunities for integrating testing into the code writing process.

Development and Team Management Techniques Utilized

Branching Strategy

All development work happened on dedicated branches that were reviewed and merged into main via GitLab Merge Requests. This kept main stable.

Each branch would be named with the associated GitLab issue that it was attempting to resolve. The result was that each commit and merge request could be easily mapped to associated issues. Non-feature branches would then be sorted by topic: fix, test, db, or doc. This meant that major feature implementations could be parsed from more niche deliverables such as bug fixes or tests.

Example branch name for a documentation push: doc/[issue-number]-[description of changes]

Frequent Meetings

BizBudget was created under an Agile workflow across three iterations. At the beginning of each iteration, the team would have an in depth meeting to plan features, discuss design ideas, distribution of tasks, and expectations on the timeline of deliverables. This was a mandatory meeting that everyone attended, as the decisions made here would impact the direction of the whole iteration.

Every day or two, members would communicate via group chat their progress, questions, and the design strategies that they are using to implement their features. Even if little progress has been made due to external commitments, these checkins ensured that the whole team had an understanding of their progress on the iteration.

Two to three times a week the team would do quick audio-calls to discuss progress and any questions. These helped communicate statuses that are hard to articulate through text. For these meetings we prioritized frequency over mandatory attendance, if a team member was unable to attend we would still hold the meeting. Avoiding the burden of coordination that comes with mandatory attendance meant that we were able to hold the meetings at a much higher rate.

Iteration 2 Improvements

After Iteration 2 we noted that communication between team members became more efficient and concise. This trend continued through Iteration 3. As the team continued to grow more accustomed to each members strengths and priorities, communicated improved further. Meetings were able to be wrapped up quicker, and as a result we were able to do more short meetings throughout the week.

The team developed extensive unit tests, integration tests, and end-to-end tests throughout the iterations. By iteration 3, all three layers of tests made for a high-coverage test suite. This had a big impact on how we went about development and deployment of features. The testing suite was run on each code review and throughout development which made it much easier to ensure that the main branch was kept stable. Bugs and errors could be caught through the tests which decreased the amount of time spent on manual testing via emulator. The test suite improved confidence in the new code meeting defined edge cases, which meant we were able to focus more energy on ensuring good architectural design.

We expected the growing complexity of the codebase to slow development over time, as extending features would become increasingly difficult. The opposite happened. Development time increased across iterations as each team member's familiarity with the codebase improved. Early on, contributors were largely specialized in one or two areas, and by the final iteration, each developer had working knowledge of multiple layers. This made it easier for developers to come up with the right design for components that interact with the rest of the system, and gave the team more flexibility when dividing up work.

With the continuous improvement through iteration 2 and iteration 3, we would expect that future development together on this project would run even smoother. Especially with the testing suite that was created, and team management techniques that were shown to work.

Group A01-G14

D

Daniyal Chaudhry

Contributed to employee creation, scheduling functionality, and export features.

Strengthened skills in UI design, Android Studio development, integrating external APIs, and iterative development practices.

E

Ethan Holland

Contributed to employee, inventory, image import features, refactors and testing.

Understanding of how to separate code between layers, how to utilize git in a long term group project, and how to work with code that was written by others.

Y

Youssof Mahmoud

Contributed to login, employee, inventory, and financial dashboard features.

Strengthened skills in UI design, testing, and iterative development.

E

Elyan Ali Momin

contributions (temp)

skills learned (temp)

V

Vaughn Toews

contributions (temp)

skills learned (temp)