A complete Point of Sale (POS) billing system for malls and stores with multi-tenant support.
- Each mall has unique ID and credentials
- Separate dashboard per mall
- Independent product catalogs
- Mall-specific sales reports
- Admin - Full access to dashboard, products, users, reports
- Cashier - Access to billing system only
- Manager - Access to reports and inventory
- Track active users
- Barcode scanning (keyboard/USB scanner)
- Real-time cart management
- Multiple payment methods (Cash, Card, UPI)
- Automatic inventory updates
- Receipt generation
- Daily/weekly/monthly sales reports
- Top-selling products
- Revenue tracking
- Transaction history
- Active users monitoring
Make sure Python 3.8+ is installed on your system.
cd C:\Users\suppo\OneDrive\Desktop\POSSystem
pip install -r requirements.txtpython app.pyThe application will start at: http://localhost:5000
-
Register a Mall
- Go to http://localhost:5000
- Click "Register New Mall"
- Fill in mall details (name, ID, password, location, contact)
- Submit registration
-
Login as Admin
- Click "Mall Admin Login"
- Enter your Mall ID and password
- Access the dashboard
-
Add Products
- Go to "Products" section
- Add products with barcode, name, price, stock
- Products are now ready for billing
-
Create Cashier Accounts
- Go to "Users" section
- Create cashier/manager accounts
- Provide username and password
-
Start Billing
- Cashiers login via "Cashier Login"
- Scan barcodes or enter manually
- Add items to cart
- Complete transaction
- Use USB barcode scanner (acts as keyboard input)
- Or manually type barcode and press Enter
- Product automatically added to cart
- Cash - Traditional cash payment
- Card - Credit/Debit card
- UPI - Digital payment (PhonePe, GPay, etc.)
The system uses SQLite database with the following tables:
- malls - Mall information
- users - Cashiers and managers
- products - Product catalog per mall
- transactions - Sales transactions
- transaction_items - Individual items in each transaction
- Password hashing using Werkzeug
- Session-based authentication
- Role-based access control
- Mall-specific data isolation
- Backend: Flask (Python) - 80%
- Database: SQLite
- Frontend: HTML/CSS/JavaScript - 20%
- Authentication: Werkzeug Security
POSSystem/
├── app.py # Main Flask application
├── requirements.txt # Python dependencies
├── pos_system.db # SQLite database (auto-created)
├── static/
│ ├── css/
│ │ └── style.css # Styling
│ └── js/
│ └── billing.js # Billing logic
└── templates/
├── index.html # Home page
├── register.html # Mall registration
├── login.html # Admin login
├── user_login.html # Cashier login
├── dashboard.html # Admin dashboard
├── products.html # Product management
├── users.html # User management
├── billing.html # Billing interface
└── reports.html # Sales reports
- Application: 5000
- Access from other devices: Use your computer's IP address (e.g., http://192.168.1.100:5000)
- Barcode Scanner: Any USB barcode scanner works (no special drivers needed)
- Multiple Cashiers: Each cashier can login simultaneously on different devices
- Stock Management: Stock automatically decreases after each sale
- Reports: View sales data by date range
- Backup: Regularly backup
pos_system.dbfile
Issue: Port 5000 already in use
Solution: Change port in app.py: app.run(debug=True, port=5001)
Issue: Database locked Solution: Close all connections and restart the app
Issue: Product not found Solution: Verify barcode matches exactly in products table
- Receipt printing (PDF/Thermal printer)
- Webcam barcode scanning
- Advanced analytics with charts
- Customer loyalty program
- Multi-language support
- Mobile app integration
- Cloud database support
For issues or questions, check the code comments or modify as needed.
Free to use and modify for your business needs.
Made with ❤️ for Malls and Stores