ShopCube
E-commerce and POS platform built on the Shopyo Flask framework.
- 🛒 cart
- ⭐ wishlist
- 📑 orders
- 📤 upload by csv
- 📊 charts
- 🖌️ theming
Installation
python3 -m venv venv
source venv/bin/activate
pip install shopcube
Then initialise:
shopcube initialise
shopcube run
Dashboard: http://127.0.0.1:5000/dashboard -- Email: admin@admin.com, Password: admin
Production
Git clone
pip install gunicorn
gunicorn --bind 0.0.0.0:8000 shopcube.wsgi:application
For development:
pip install -e .
shopcube initialise
flask --debug run
Environment variables:
| Variable | Description | Default |
|---|---|---|
SHOPCUBE_CONFIG |
Environment type (production, development, testing) |
production |
SECRET_KEY |
Secret key for session encryption | Required |
SHOPCUBE_DATA_DIR |
Directory for database and uploads | Current directory |
Features
Inventory
- Products with barcode, images, colors, sizes, categories, subcategories, and vendors
- Low-stock alerts with configurable thresholds
- Stock adjustments with reason codes (manual, POS sale, return, count, PO receive)
- Purchase orders with draft, ordered, received lifecycle; auto-updates stock on receipt
- Vendor/supplier management with contact info
- Physical inventory counts with variance application
- Multi-location inventory with location management
- Stock transfers between locations
- Kit/bundle assembly from components
- Cost price and margin tracking
- Barcode label printing
- Inventory reports (valuation, low-stock, margin)
POS
- Product grid with category filtering, search, and barcode scanning
- Cart with quantity controls and running total
- Discount (percentage or fixed amount)
- Order notes
- Payment methods: Cash, Card, Other
- Auto change calculation
- Quick keys for one-tap product add
- Transaction history
- Sales reports by date, total, payment method
- Returns with receipt lookup and stock reversal
- Shift management with cash reconciliation
- Cashier role for non-admin staff
Customers
- Registration with email confirmation
- Order history per customer
- Customer groups with percentage discounts
- Customer Lifetime Value tracking (total spent, order count, AOV)
Admin
- Product CRUD with images, colors, sizes, vendor assignment
- Category and subcategory management
- Coupon management
- Delivery and payment method configuration
- Order management with status tracking and email notifications
- Bulk product upload via Excel
- Role-based access control
Security
- CSRF protection on all POST routes
- Admin-only access on management routes
- Login required for all management endpoints
- File upload type and size validation
Built on Shopyo with isolated module architecture.
E-Commerce Configuration
The shopyo_ecommerce module reads these Flask config keys. Defaults are applied automatically, override them in your config.py or instance config:
| Key | Default | Description |
|---|---|---|
SHOPYO_ECOMMERCE_URL |
/shopyo-ecommerce |
URL prefix for all ecommerce routes |
SHOPYO_ECOMMERCE_CURRENCY |
USD |
ISO 4217 currency code (e.g. MUR, EUR, GBP) |
SHOPYO_ECOMMERCE_SECTION_NAME |
Shop |
Section name shown in dashboard and settings |
SHOPYO_ECOMMERCE_ITEMS_PER_PAGE |
12 |
Products per page in shop listings |
SHOPYO_ECOMMERCE_ENABLE_WISHLIST |
True |
Enable/disable the wishlist feature |
SHOPYO_ECOMMERCE_ENABLE_REVIEWS |
False |
Enable/disable product reviews |
SHOPYO_ECOMMERCE_CATEGORYPHOTOS_UPLOADSET |
categoryphotos |
Flask-Uploads set name for category images |
SHOPYO_ECOMMERCE_SUBCATEGORYPHOTOS_UPLOADSET |
subcategoryphotos |
Flask-Uploads set name for subcategory images |
SHOPYO_ECOMMERCE_PRODUCTEXCEL_UPLOADSET |
productexcel |
Flask-Uploads set name for product Excel imports |
SHOPYO_ECOMMERCE_PRODUCTPHOTOS_UPLOADSET |
productphotos |
Flask-Uploads set name for product images |
SHOPYO_ECOMMERCE_UPLOADED_CATEGORYPHOTOS_DEST |
static/uploads/categoryphotos |
Upload destination for category images |
SHOPYO_ECOMMERCE_UPLOADED_SUBCATEGORYPHOTOS_DEST |
static/uploads/subcategoryphotos |
Upload destination for subcategory images |
SHOPYO_ECOMMERCE_UPLOADED_PRODUCTEXCEL_DEST |
static/uploads/productexcel |
Upload destination for product Excel files |
SHOPYO_ECOMMERCE_UPLOADED_PRODUCTPHOTOS_DEST |
static/uploads/productphotos |
Upload destination for product images |
Example:
class Config:
SHOPYO_ECOMMERCE_URL = "/shop"
SHOPYO_ECOMMERCE_CURRENCY = "MUR"
SHOPYO_ECOMMERCE_ITEMS_PER_PAGE = 24
SHOPYO_ECOMMERCE_ENABLE_WISHLIST = False
SHOPYO_ECOMMERCE_UPLOADED_PRODUCTPHOTOS_DEST = "/data/uploads/products"
Currency symbols are resolved from the ISO 4217 code via the iso4217parse package (e.g. MUR -> ₨, EUR -> €).
Metadata
Release files for shopcube 5.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| shopcube-5.1.0.tar.gz | 115.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shopcube-5.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 287.8 kB
Release files / shopcube-5.1.0.tar.gz
| Download URL | shopcube-5.1.0.tar.gz |
|---|---|
| Size | 115.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
161d26ec2578e522a3a495f93129bd597f55caf4c065c6c62b5d8f80c0969dfc
|
|
BLAKE2b-256 checksum How to use checksums |
a29e0351ca85e37bb292d56829760e54a1b04d5fe2a7c8fe73eea124dc6c10cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / shopcube-5.1.0-py3-none-any.whl
| Download URL | shopcube-5.1.0-py3-none-any.whl |
|---|---|
| Size | 171.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0135574690cae8ec7b5f1b59df6d6d09ec50b9f1ad527fe8d4b79a0828f95fba
|
|
BLAKE2b-256 checksum How to use checksums |
d6f8c7174d3238038c44d42895e7f6e7fbde051eb5b850beadd6e72098c2c6b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for shopcube 5.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.