Coursework, team project
distributed-inventory-manager
A command-line inventory and sales tool for a liquor store, built by a student team for our Software Engineering module. The code mattered, but the module was really about running a proper Agile project with CI/CD from start to finish.
- Python
- SQLite
- Pytest
- Jenkins
- SonarQube
- Jira
- Confluence
Architecture
-
Interface
-
CLI menus (app.py)
Separate manager and clerk menus, dashboard on login
-
Login (auth.py)
Role-based access, bcrypt-hashed passwords
-
-
Feature modules
-
Products
Add, update, search
-
Inventory
Receive stock, log losses
-
Sales
Record sales, receipts, history
-
Reporting
Low stock, value, CSV/JSON export
-
-
Data
-
Database manager
All SQL in one place, backed by SQLite
-
CI pipeline
-
-
Checkout
Pull from GitHub
-
-
-
Set up
Virtual env and dependencies
-
-
-
Lint
Pylint report
-
-
-
Test
Pytest with coverage
-
-
-
Analyse
SonarCloud quality gate
-
How we ran it
- Jira held the backlog. We broke the work into epics and user stories, planned it in sprints, and tracked it on the board.
- Confluence held the project overview, the architecture and design document, and the requirements package.
- Jenkins ran the tests and coverage on every change, and SonarCloud checked the code quality before anything was merged.
What the tool does
Managers and clerks log in with their own roles, with passwords hashed using bcrypt. Managers add and update products, check low-stock and inventory value reports, and export them to CSV or JSON. Clerks record sales and print receipts, take in new stock, and log losses. Everything runs in a colour-coded command-line menu backed by SQLite.
Testing
Each module has its own Pytest suite with coverage reporting, and Pylint runs as part of the pipeline, so a failing test or a drop in quality showed up straight away.