Python Flask Billing System
Budget: ₹750 – ₹1,250 INR
Build a complete billing management web app in Python Flask for a small retail shop. The application will rely on a single-file SQLite database, keeping deployment light and maintenance minimal.
Core workflow
The only account type in scope is a Cashier role. After sign-in the Cashier should be able to add products, update stock, create invoices and take payments without touching the underlying code or database.
Product management
Products can be entered one-by-one through a clean HTML form or imported in bulk from a CSV file. Uploads must gracefully reject bad rows and show a summary of accepted and skipped records.
Required functionality
‣ Secure user login session
‣ Product & stock dashboard (manual entry + CSV import)
‣ Fast invoice generation with printable PDF/HTML receipts
‣ Customer record storage and quick search
‣ Daily/weekly/monthly sales reports with totals and simple charts
‣ Error handling throughout and clear flash messaging
Technical notes
Flask, Jinja2 templates, vanilla JavaScript (or minimal Bootstrap JS) and standard CSS should keep the interface lightweight yet modern. Structure the code cleanly—blueprints, config files, models and services in separate modules—so future features or additional roles can be dropped in without a rewrite.
Deliverables
- Fully commented source code in a Git repository
- SQLite schema and any migration scripts
- Sample CSV file for testing bulk product uploads
- README with setup steps, environment requirements and run command
- Short screencast or screenshots demonstrating each feature in action
Acceptance criteria
A fresh clone, followed by `pip install -r requirements.txt` and `flask run`, must launch the system error-free. From there a Cashier should be able to import a sample CSV, create an invoice and download a sales report without leaving the browser.
That’s the entire scope—clarity, reliability and tidy code are more valuable here than extra bells and whistles.
Core workflow
The only account type in scope is a Cashier role. After sign-in the Cashier should be able to add products, update stock, create invoices and take payments without touching the underlying code or database.
Product management
Products can be entered one-by-one through a clean HTML form or imported in bulk from a CSV file. Uploads must gracefully reject bad rows and show a summary of accepted and skipped records.
Required functionality
‣ Secure user login session
‣ Product & stock dashboard (manual entry + CSV import)
‣ Fast invoice generation with printable PDF/HTML receipts
‣ Customer record storage and quick search
‣ Daily/weekly/monthly sales reports with totals and simple charts
‣ Error handling throughout and clear flash messaging
Technical notes
Flask, Jinja2 templates, vanilla JavaScript (or minimal Bootstrap JS) and standard CSS should keep the interface lightweight yet modern. Structure the code cleanly—blueprints, config files, models and services in separate modules—so future features or additional roles can be dropped in without a rewrite.
Deliverables
- Fully commented source code in a Git repository
- SQLite schema and any migration scripts
- Sample CSV file for testing bulk product uploads
- README with setup steps, environment requirements and run command
- Short screencast or screenshots demonstrating each feature in action
Acceptance criteria
A fresh clone, followed by `pip install -r requirements.txt` and `flask run`, must launch the system error-free. From there a Cashier should be able to import a sample CSV, create an invoice and download a sales report without leaving the browser.
That’s the entire scope—clarity, reliability and tidy code are more valuable here than extra bells and whistles.