QR Print Station uses a dual-source configuration system.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hxmz-axfn07/qr-printing-sfw/llms.txt
Use this file to discover all available pages before exploring further.
config.yml acts as the file-level fallback and is always read first. The MySQL settings table then acts as a runtime override layer — any key present in the database takes precedence over the corresponding value from config.yml. This lets you update shop details, upload limits, and theme colors through direct SQL queries without touching the file system or restarting the server.
Settings table schema
Thesettings table is created automatically on first startup. Its structure is intentionally simple: a plain key/value store where each row holds one named setting.
config.yml on startup using INSERT IGNORE, so they are only written once and are safe to modify afterward.
Available setting keys
The following keys are recognized byapply_db_settings() in server/app.py. Any key not in this list is silently ignored.
| Key | Type | Description |
|---|---|---|
shop_name | string | Overrides shop.name from config.yml. Displayed as the page title and home page heading. |
shop_address | string | Overrides shop.address from config.yml. Shown as the eyebrow/subtitle on the home page. |
shop_phone | string | Overrides shop.phone from config.yml. Shown in the shop info section. |
max_upload_mb | integer string | Overrides shop.max_upload_mb. Controls the per-file upload size limit enforced during order submission. Store as a quoted integer (e.g. '25'). |
currency_symbol | string | Currency prefix displayed next to prices throughout the customer UI (default: Rs). |
theme_accent | hex color string | Overrides theme.accent from config.yml. Sets the primary action color used on buttons and links. |
Reading and updating settings
Use the following SQL patterns to inspect and change settings at runtime.theme_accent is not seeded by default), insert it:
Pricing table
Pricing is stored in its ownpricing table, separate from settings. The server loads active pricing via load_db_pricing() using the following query:
Soft-delete pattern
Pricing rows are never hard-deleted. Settingdeleted_at to a non-null timestamp marks a row as inactive — it will no longer appear in the pricing lookup or be presented to customers. Rows where deleted_at IS NULL are considered active.
Managing pricing rows
pricing table has a UNIQUE KEY uq_pricing (paper_size, color_mode, print_style) constraint, so each combination of paper size, color mode, and print style can only have one active row. Attempting to INSERT a duplicate will raise an error — use UPDATE to change the price for an existing combination instead.
To restore a soft-deleted row, set deleted_at back to NULL: