Version: 2.0.0 | Last updated: 2026
Imprex is a complete, ready-to-deploy point-of-sale system built with Flask (Python). Designed for small and medium businesses, it offers a touch-friendly cashier interface, real-time inventory tracking, multi-currency support, and an admin dashboard with sales analytics.
Live Preview Click to access the live demo at the link above.runnewpc.bat — it will: .env from .env.example with a generated SECRET_KEY (first run only)http://127.0.0.1:5000 start.bat to start the application.runnewpc.bat and start.bat automatically create .env from .env.example with a securely generated SECRET_KEY the first time they run. No manual configuration is required to get started. python -m venv venv # Windows: venv\Scripts\activate # macOS / Linux: source venv/bin/activate pip install -r requirements.txt # Windows: copy .env.example .env # macOS / Linux: cp .env.example .env python run.py http://localhost:5000 and log in with admin / admin.admin / admin and user / user) — no manual database setup required. The application is configured via the .env file. Available settings:
| Variable | Description | Default Value |
|---|---|---|
SECRET_KEY | Flask secret key for session encryption. Auto-generated by start.bat / runnewpc.bat on first run. | Auto-generated (change for production) |
DATABASE_URL | Database connection string | sqlite:///instance/pos.db |
ADMIN_USERNAME | Default admin username | admin |
ADMIN_PASSWORD | Default admin password | admin |
CASHIER_USERNAME | Default cashier username | user |
CASHIER_PASSWORD | Default cashier password | user |
SEED_DEMO_USERS | Auto-create demo accounts on first launch (set to false after initial setup in production) | true |
STORE_NAME | Store name displayed on receipts and the UI | Imprex POS |
STORE_ADDRESS | Store address displayed on receipts | Your Address Here |
CURRENCY | Default currency code | MAD |
SECRET_KEY and all passwords via environment variables before deploying to production. The admin dashboard provides:
The POS interface offers:
To test the live application online before installing it locally, use the credentials below:
| Role | Username | Password | Access |
|---|---|---|---|
| Admin | admin | admin | Full access: dashboard, products, users, reports |
| Cashier | user | user | POS interface only |
Unlike a local installation where .bat files handle setup automatically, a production environment (such as cPanel Shared Hosting) requires explicit steps to isolate the environment and generate seed users over restrictive environments. Follow these commands in order via your cPanel Browser Terminal or direct SSH client (like PuTTY):
cd public_html/imprex-pos Shared hosts usually disable ensurepip natively. We safely create the venv without pip and activate it first:
python3 -m venv venv --without-pip source venv/bin/activate Check: You should now see (venv) prepended to your terminal line.
curl https://bootstrap.pypa.io/pip/3.9/get-pip.py -o get-pip.py python3 get-pip.py rm get-pip.py pip install -r requirements.txt cp .env.example .env Tip: You can now access your .env inside cPanel File Manager to change production settings like your live database URL or store details.
Execute this unified script to securely create your tables (`instance/pos.db`) and seed your default administrative user safely across production factory patterns:
python3 -c " from app import create_app, db import sys sys.path.append('.') try: import models except ImportError: from app import models app = create_app() with app.app_context(): db.create_all() UserModel = None if hasattr(models, 'User'): UserModel = models.User elif hasattr(sys.modules['app'], 'models') and hasattr(sys.modules['app'].models, 'User'): UserModel = sys.modules['app'].models.User if UserModel and not UserModel.query.filter_by(username='admin').first(): admin_user = UserModel(username='admin', role='admin') admin_user.set_password('admin') db.session.add(admin_user) db.session.commit() print('SUCCESS: Database created and admin user seeded!') else: print('INFO: Admin already exists or DB ready.') " Shared hosting Passenger WSGI layers cache the server processes. Run this to force cPanel to immediately read your new active database updates and configurations:
mkdir -p tmp touch tmp/restart.txt Ctrl + F5) to clean up old session cache, and log in securely with admin / admin. debug=False in production.SECRET_KEY.imprex-pos/ app.py # Main Flask application config.py # Configuration settings models.py # Database models (SQLAlchemy) run.py # Application entry point hardware.py # Optional hardware drivers (printer, cash drawer, VFD) requirements.txt # Python dependencies passenger_wsgi.py # WSGI entry point for cPanel start.bat # Windows daily-launch script (auto-creates .env on first run) runnewpc.bat # Windows first-install script .env.example # Environment configuration template (copy to .env) documentation/ # Documentation folder index.html # This documentation file instance/ # SQLite database (auto-generated) static/ css/ pos.css # Custom CSS styles js/ app.js # Common JavaScript utilities pos.js # POS interface JavaScript templates/ base.html # Base layout template dashboard.html # Admin dashboard history.html # Transaction history index.html # Home page inventory.html # Product inventory management login.html # Login page pos.html # Main POS (cashier) interface product_form.html # Add/edit product form category_form.html # Add/edit category form sale_detail.html # Detailed sale view scan.html # Barcode scanning stock_adjustment.html # Stock adjustment form users.html # User management user_form.html # Add/edit user form uploads/ # Uploaded product images This usually means a pre-seeded database exists. Delete the instance/pos.db file (or the entire instance/ folder) and restart — the application will re-seed fresh accounts matching your .env credentials.
If you encounter database errors, delete the instance/ folder and restart the application. The database will be recreated automatically with demo data.
If port 5000 is already in use, you can change the port by setting PORT=5001 (or any free port) in your .env file.
Make sure you are using the correct Python version (3.8+). Try upgrading pip first:
pip install --upgrade pip Hardware peripherals are optional. If the python-escpos package cannot load (missing USB drivers, unsupported OS, etc.), the application continues to run normally — printer and cash drawer features are simply disabled. Check the server log for a warning message like “python-escpos unavailable”. To enable hardware support, install the USB drivers for your printer and ensure python-escpos>=3.1.0 is installed.
Make sure the uploads/ folder exists and is writable. Product images are stored locally in this folder.
$23 |
Download |
0 average based on 0 ratings.
| Last Update | 2026-07-02 |
| Created | 2026-07-02 |
| Sales | 0 |
| Discussion | Comments |
| Application Runtime | Native |
| High Resolution | Yes |
| Compatible OS Versions | Windows 11 Windows 10 |
| Video Preview Resolution |