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.
Project Overview
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. Metrics such as finances often require some level of accounting expertise, BizBudget allows business owners to stay in the loop without requiring expert knowledge.
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. Managers need quick access to metrics such as employee shift scheduling, BizBudget allows this information to be quickly available at anytime from their phone.
Major Features
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.
Project Demonstration
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
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.
03
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
04
Review Finances
View the businesses spending activity and income. Congregate financial data allows you to stay on top of financial health without pouring through spreasheets.
Postmortem
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.
The Team
Group A01-G14
Daniyal Chaudhry
Contributions
Contributed to employee creation, scheduling functionality, and export features.
Skills Learned
Strengthened skills in UI design, Android Studio development, integrating external APIs, and iterative development practices.
Ethan Holland
Contributions
Contributed to employee, inventory, and image import features. Contributed to refactors and bug fixes throughout the development cycle. Assisted with tests across layers. Assisted with early project documentation and architecture planning as well as the initial android project diretory setup.
Skills Learned
I gained an understanding of how to separate code between layers, how to utilize git in a long term collaborative project, and how to work with code that was written by others. I also learned how to extend test suites to cover a growing codebase. I saw first hand how to go about applying different design patterns to assist with extension in a late stage project.
Youssof Mahmoud
Contributions
Contributed to the login, employee, inventory, and financial dashboard features, including UI implementation, feature integration, testing, and iterative improvements throughout development.
Skills Learned
Strengthened skills in Android UI design, testing, debugging, and collaborative iterative development. I also gained more experience working across multiple features in a layered application and refining functionality based on team feedback.
Elyan
Ali Momin
Contributions
Contributed to the database layer to support core application functionality and helped connect the database to the app so that data could be stored, retrieved, and displayed correctly across different parts of the system. Developed end-to-end tests for key application features to improve reliability and verify expected behavior. Also created the initial UI for the dashboard to support the early design and structure of the app.
Skills Learned
I gained experience using Git in a collaborative development environment and learned how to work effectively on a coding project as part of a team. I also developed a better understanding of database integration in an application, including how data is connected between different parts of the system. In addition, I learned how end-to-end tests are written and used to verify that important app features work correctly from the user side.
Vaughn Toews
Contributions
I wrote some unit tests, updated the architecture diagram and writeup, updated the README, resolved feedback from previous iterations, created and managed the feedback resolution tracking document, and fixed some bugs.
Skills Learned
I learned how to write unit tests using Junit 5, make an app using Android Studio, properly use git, plan a project using agile, and work better as a team of programmers.
I learned the importance of unit testing to find errors in logic. I wrote a test that found an error in something that looked innocuous but was doing something we didn’t expect for certain cases.
I learned the importance of separating platform-specific presentation code from business logic to allow for easy access to logic methods for unit testing. There were multiple instances where I was trying to write unit tests for a new service in the business layer, but I wasn’t easily able to inject test data into the service. In one case, it was getting data straight from user input. In another, the service needed an android specific object passed into its constructor which would need to be mocked. Both could only be tested with an instrumented test. We had to separate functionality from those classes so that the logic could be easily unit tested.