Overview
The e-commerce API uses environment variables for configuration. All settings are defined in .env files and loaded using python-dotenv. See .env.example for a template.
Never commit .env files with sensitive credentials to version control. Use .env.example as a template and add .env to .gitignore.
Application Settings
Basic Configuration
Variable Type Default Description PORTinteger 8000Port number for the API server ENVstring - Environment name (development, staging, production) API_HOSTstring - Public API host URL (e.g., https://api.example.com) LOGGING_PATHstring /tmp/my-log-file.logPath for application logs
API Prefixes
The application uses multiple API versions and specialized prefixes:
API_PREFIX = '/api/v2' # Main API v2
NEW_API_PREFIX = '/api/v3' # New API v3
HAPTIK_API_PREFIX = '/api/v2/haptik' # Haptik chatbot integration
EXTERNAL_API_PREFIX = '/api/v2/external' # External partner APIs
Timezone
TIMEZONE_IST = 'Asia/Kolkata' # Default timezone for the application
Database Configuration
MySQL (Primary Database)
Writer Instance
Variable Type Required Description HOSTstring ✓ MySQL host address DBPORTinteger ✓ MySQL port (default: 3306) USERstring ✓ Database username PASSWORDstring ✓ Database password DATABASEstring ✓ Database name POOL_SIZEinteger 5SQLAlchemy connection pool size MAX_OVERFLOWinteger 30Maximum overflow connections
Reader Instance (Optional)
For read replicas:
Variable Type Required Description R_HOSTstring - Reader host address R_DBPORTinteger - Reader port R_USERstring - Reader username R_PASSWORDstring - Reader password R_DATABASEstring - Reader database name R_POOL_SIZEinteger 5Reader pool size R_MAX_OVERFLOWinteger 30Reader max overflow
MongoDB
Variable Type Required Description MONGO_HOSTstring ✓ MongoDB host address MONGO_PORTinteger ✓ MongoDB port (default: 27017) MONGO_DATABASEstring ✓ Database name MONGO_USERstring - MongoDB username (if auth enabled) MONGO_PASSWORDstring - MongoDB password (if auth enabled) MONGO_LIMITinteger 50Default query limit
DGraph (Graph Database)
Variable Type Required Description DGRAPH_SERVER_CLIENTstring - DGraph server address (e.g., localhost:9080)
MongoDB Connection Example
from pymongo import MongoClient
# Without authentication
client = MongoClient( f " { MONGO_HOST } : { MONGO_PORT } " )
db = client[ MONGO_DATABASE ]
# With authentication
client = MongoClient(
f "mongodb:// { MONGO_USER } : { MONGO_PASSWORD } @ { MONGO_HOST } : { MONGO_PORT } / { MONGO_DATABASE } "
)
Cache Configuration
Redis Instances
The application uses multiple Redis instances for different purposes:
Primary Redis
Variable Type Description REDIS_HOSTstring Primary Redis host REDIS_PORTinteger Primary Redis port (default: 6379)
Specialized Redis Instances
# CMS Cache
CMS_REDIS_HOST = your-cms-redis-host
CMS_REDIS_PORT = 6379
CMS_REDIS_DB = 0
CMS_REDIS_USERNAME =
CMS_REDIS_PASSWORD =
# Buffer Cache
REDIS_BUFFER_HOST = your-buffer-redis-host
REDIS_BUFFER_PORT = 6379
# Payment Cache
PAYMENT_REDIS_HOST = your-payment-redis-host
PAYMENT_REDIS_PORT = 6379
# Blacklist Cache
BLACKLIST_REDIS_HOST = your-blacklist-redis-host
BLACKLIST_REDIS_PORT = 6379
# User Cache
USER_REDIS_HOST = your-user-redis-host
USER_REDIS_PORT = 6379
# A/B Testing
AB_REDIS_HOST = your-ab-redis-host
AB_REDIS_PORT = 6379
# Abandon Cart
ABANDON_CART_REDIS_HOST = your-abandon-redis-host
ABANDON_CART_REDIS_PORT = 6379
ABANDON_CART_REDIS_DB = 0
Beaker Cache
Variable Type Description BEAKER_REDIS_URLstring Beaker cache Redis URL (format: host:port)
Cache TTL Settings
# Cache duration in seconds
CACHE_ULTRA_SHORT_TERM = 5 # 5 seconds
CACHE_MINI_SHORT_TERM = 60 # 1 minute
CACHE_SHORT_TERM = 600 # 10 minutes
CACHE_LONG_TERM = 3600 # 1 hour
CACHE_MAJOR_LONG_TERM = 7200 # 2 hours
CACHE_ULTRA_LONG_TERM = 86400 # 24 hours
# Object expiry
REDIS_OBJECT_EXPIRY_IN_SEC = 3600
REDIS_BLACKLIST_OBJECT_EXPIRY_IN_SEC = 86400
REDIS_COUPON_EXPIRY_IN_SEC = 3600
# Auth cache
AUTH_USER_CACHE_TTL = 300 # 5 minutes
# Short URL cache
SHORT_URL_TTL_IN_SEC = 86400 # 24 hours
Security Settings
Authentication
Variable Type Description SECRET_KEYstring Main encryption key (256-bit recommended) SECRET_KEY_512string 512-bit encryption key for sensitive data JWT_EXPIRY_DAYinteger JWT token expiry in days (default: 30) JWT_EXPIRY_DAY_FOR_RESHIPinteger Reship JWT expiry in days (default: 1)
Social Authentication
# Apple Sign-In
SOCIAL_AUTH_APPLE_KEY_ID = your-apple-key-id
SOCIAL_AUTH_APPLE_TEAM_ID = your-apple-team-id
CLIENT_ID = your-apple-client-id
ACCESS_TOKEN_URL = https://appleid.apple.com/auth/token
# Google reCAPTCHA
GOOGLE_RECAPTCHA_SECRET_KEY = your-recaptcha-secret
GOOGLE_RECAPTCHA_URL = https://www.google.com/recaptcha/api/siteverify
Password & OTP Settings
FORGOT_PASSWORD_DURATION = 1 # Hours
FORGET_PASSWORD = 'http://localhost:8080/forgotpassword?token='
# Two-Factor Authentication
TWO_FA_ENABLE_DATETIME = '09-16-2021'
VERIFICATION_COUNT = 3
GENERATE_COUNT = 2
RESEND_COUNT = 6
USER_BLOCK_TIME_IN_SEC = 86400 # 24 hours
AWS Services
AWS Credentials
Variable Type Description AWS_ACCESS_KEYstring AWS access key ID AWS_SECRET_KEYstring AWS secret access key AWS_REGIONstring AWS region (e.g., ap-south-1) AWS_ACCESS_KEY_IDstring S3 access key AWS_SECRET_ACCESS_KEYstring S3 secret key AWS_BUCKET_NAMEstring S3 bucket name
Kinesis Streams
KINESIS_PRODUCT_STREAM = 'product'
KINESIS_PRODUCT_UPDATE_STREAM = 'product_update_stream'
KINESIS_ORDERS_STREAM = 'tss-order-stream'
KINESIS_INSERT_RATE_LIMIT = '1/s'
CELERY_KINESIS_ORDER_QUEUE = 'kinesis-order'
CELERY_KINESIS_PRODUCT_QUEUE = 'kinesis-product'
SEPARATE_SKU_CREATE_UPDATE_STREAM = 1
SQS Configuration
SQS_AWS_ACCESS_KEY_ID = your-sqs-access-key
SQS_AWS_SECRET_ACCESS_KEY = your-sqs-secret-key
SQS_QUEUE_URL = https://sqs.region.amazonaws.com/account-id/queue-name
Celery Task Queues
Queue Names
# Core queues
CELERY_COMMS_QUEUE = 'comms'
SYNC_QUEUE = 'sync_queue'
SINGLE_SYNC_QUEUE = 'single_sync_queue'
SEARCH_SYNC_QUEUE = 'search_sync_queue'
# Order processing
CELERY_CANCEL_ORDER_QUEUE = 'cancel-order'
CELERY_ORDER_REFUND_QUEUE = 'order-refund'
ORDER_FLAG_QUEUE = 'order_flag_queue'
WAREHOUSE_ASSIGN_QUEUE = 'warehouse_assign_queue'
PROCESS_HL_ORDER_QUEUE = 'process-hl-order'
# Events
FB_EVENTS_QUEUE = 'fb-events-queue'
NETCORE_EVENTS_QUEUE = 'netcore_events_queue'
NETCORE_BATCH_QUEUE = 'netcore-batch'
MOENGAGE_ORDER_ATTIBUTES_QUEUE = 'moengage_order_attributes_sync_queue'
# User operations
USER_BLOCK_QUEUE = 'user-block'
USER_WEBHOOK_LOG_QUEUE = 'user-webhook-log'
VISITED_PRODUCT_LOGGING_QUEUE = 'visited-product-log'
# Logistics
CALLBACK_QUEUE = 'callback'
AUTODELIVER_QUEUE = 'autodeliver'
HL_AVAILABILITY_LOG_QUEUE = 'hl_availability_log_queue'
SAVE_EDD_QUEUE = 'save_edd_queue'
# Product ratings
PRODUCT_RATINGS_QUEUE = 'product_ratings_queue'
Celery Settings
CELERY_TASK_RESULT_EXPIRES_IN_SEC = 3600
CELERY_VISIBILITY_TIMEOUT = 3600
Payment Configuration
Payment Gateway
PAYMENT_URL = 'https://api.thesouledstore.com/api/v2/payment/'
# Payment method settings
BANK_SECRET_KEY = your-bank-secret-key
BANK_VALID_PAYMENT_METHODS = '[1]' # JSON array
ENABLE_RECOMMENDED_PAYMENT_METHOD = 1
LAST_N_HOURS_FOR_PAY_METH = 1
PAYMENT_METHOD_FAILURE_THRESHOLD = 1
# Payment method mappings
APP_PAY_ID_INDEX_MAPPING = '{}'
WEB_PAY_ID_VALUE_MAPPING = '{}'
Juspay Integration
ALLOWING_OG_REFUND_MODE_BASED_ON_JUSPAY_STATUS = 1
JUSPAY_ORDER_STATUS_API_URL = 'https://api.juspay.in/orders'
JUSPAY_BASE_AUTH_TOKEN = 'your-juspay-token'
JUSPAY_ORDER_STATUS_CACHE_TTL = 3600
Order Settings
# Minimum order amounts
MIN_ORDER_AMOUNT = 164
MIN_COD_VALUE = 300
MAX_COD_VALUE = 4000
COD_CHARGES = 50
# Shipping
SHIPPING_CHARGES = 50
MIN_CART_VALUE_SHIPPING_CHANNELS = 445
# Processing fees
PREPAID_AMT_DEDUCTION = 0
REFUND_FEE_IN_TSS_MONEY = 1
REFUND_FEES_MODES = '[]'
Third-Party Integrations
Vinculum (ERP)
VINCULUM_CANCEL_URL = 'https://thesouledstore.vineretail.com/RestWS/api/eretail/v1/order/cancel'
VINCULUM_CANCEL_URL_PRODUCT = '...'
VINCULUM_API_OWNER = 'Test'
VINCULUM_API_KEY = 'your-vinculum-key'
VINCULUM_ORDER_DELIVERED_URL = '...'
VINCULUM_ORDER_SHIPPED_URL = '...'
VINCULUM_ORDER_UNHOLD_URL = '...'
VINCULUM_ORDER_PULL_URL = '...'
VINCULUM_ORDER_WAREHOUSE_UPDATE_URL = '...'
Elasticsearch
ELASTIC_SEARCH_HOST = 'your-elasticsearch-host'
SEARCH_ENDPOINT = 'https://search.example.com'
ES_SYNCER = 'http://your-es-syncer:7070/'
ELASTIC_DB_URL = 'http://elasticsearch:9200'
USER_WIDGETS_ELASTIC_INDEX = 'user-widgets'
MoEngage
MOENGAGE_AUTHORIZATION = 'your-moengage-auth'
MOENGAGE_APPKEY = 'your-app-key'
MOENGAGE_URL = 'https://api.moengage.com'
MOENGAGE_EVENTS_URL = 'https://api.moengage.com/v1/event'
MOENGAGE_USER_ORDER_EVENTS_API = '...'
IS_MOENGAGE_DELETE = 0
CleverTap
X_CLEVERTAP_ACCOUNT_ID = 'your-account-id'
X_CLEVERTAP_PASSCODE = 'your-passcode'
Netcore
NETCORE_ACTIVITY_API_URL = 'https://api.netcorecloud.com'
NETCORE_ACTIVITY_API_AUTHORIZATION = 'your-authorization'
NETCORE_ACTIVITY_ASSET_ID = 'your-asset-id'
GupShup SMS
GUPSHUP_SMS_USER_ID = 'your-user-id'
GUPSHUP_SMS_PASSWORD = 'your-password'
GUPSHUP_URL = 'https://enterprise.smsgupshup.com'
USER_ID = 'your-gupshup-user'
GUPSHUP_PASSWORD = 'your-gupshup-pass'
Haptik (Chatbot)
HAPTIK_API_KEY = 'your-haptik-key'
HAPTIK_AUTH_ID = 'your-auth-id'
HAPTIK_AUTH_CODE = 'your-auth-code'
HAPTIK_ORDER_LIMIT = 3
OneDirect
ONE_DIRECT_URL = 'https://api.onedirect.com'
ONE_DIRECT_API_KEY = 'your-api-key'
ONE_DIRECT_URL_HEALTH = 'https://api.onedirect.com/health'
OD_CLIENT_KEY = 'your-client-key'
OD_CREATE_TICKET_URL = '...'
OD_CREATE_TICKET_BOUNDARY = '...'
OD_CLOSE_TICKET_URL = '...'
OD_TOKEN_REFRESH_URL = '...'
Freshdesk
FRESHDESK_ENABLE = 0
FRESHDESK_CREATE_TICKET_URL = 'https://yourdomain.freshdesk.com/api/v2/tickets'
FRESHDESK_BASIC_AUTH_USERNAME = 'your-api-key'
FRESHDESK_BASIC_AUTH_PASSWORD = 'X'
FRESHDESK_GROUP_ID = 89000104397
Kapture CRM
KAPTURE_ENABLE = 1
KAPTURE_CREATE_TICKET_URL = 'https://api.kapture.com/tickets'
KAPTURE_BASIC_AUTH = 'your-basic-auth-token'
Clickpost (Logistics)
CLICKPOST_USER = 'your-username'
CLICKPOST_PASSWORD = 'your-password'
CLICKPOST_EDD_URL = 'https://api.clickpost.in/api/v1/edd'
CLICKPOST_EDD_LOGIC = 1
CLICKPOST_EDD_BUSINESS_LOGIC = 1
CLICKPOST_TRACK_ORDER_URL = 'https://thesouledstore.clickpost.in/api/v1/track-order?waybill='
CP_BUFFER_DAYS = 0
Ozonetel (Call Center)
OZONETEL_CALLBACK_MAX_RETRIES = 1
OZONETEL_ADD_CAMPAIGN_DATA_URL = '...'
OZONETEL_API_KEY = 'your-api-key'
OZONETEL_OUTBOUND_CAMPAIGN = 'your-campaign'
FAILED_CALL_MAX_RETRIES = 3
CALLBACK_RETRY_TIME_SECONDS = 300
CALLBACK_TIME_THRESHOLD = 19 # 7 PM
CALLBACK_TIME_WINDOW_HOURS = 24
ENABLE_MULTIPLE_CALLBACK_CHECK = 1
GoKwik
GOKWIK_ORDER_STATUS_UPDATE_URL = 'https://api.gokwik.com/order/status'
Climes
CLIMES_URL = 'https://api.climes.com'
CLIMES_API_KEY = 'your-climes-key'
Firebase Dynamic Links
FIREBASE_DYNAMIC_LINK = 'https://firebasedynamiclinks.googleapis.com/v1/shortLinks'
FIREBASE_DYNAMIC_LINK_KEY = 'your-firebase-key'
FIREBASE_DYNAMIC_LINK_AUTH = 'your-auth-token'
FIREBASE_DYNAMIC_LINK_DOMAIN_URI_PREFIX = 'https://yourapp.page.link'
FIREBASE_DYNAMIC_LINK_ANDROID_PCKG = 'com.yourapp.android'
FIREBASE_DYNAMIC_LINK_IOS_BUNDLE_ID = 'com.yourapp.ios'
FIREBASE_DYNAMIC_LINK_IOS_APP_STORE_ID = '123456789'
FIREBASE_DYNAMIC_LINK_IOS_IPAD_BUNDLE_ID = 'com.yourapp.ios.ipad'
Akamai
AKAMAI_HOST = 'your-akamai-host'
AKAMAI_CLIENT_TOKEN = 'your-client-token'
AKAMAI_CLIENT_SECRET = 'your-client-secret'
AKAMAI_ACCESS_TOKEN = 'your-access-token'
AlgoShack
ALGO_SHACK_PHONE_NUMBERS = '[]'
ALGO_SHACK_KEY = 'your-algo-shack-key'
ALGO_SHACK_USER_DELETE_MSG = 'User Deleted'
Feature Flags
Product Features
# Exclusive membership
EXCLUSIVE_PRODUCT_ID = 147421
EXCLUSIVE_PRICELISTS = '[5, 3, 1]'
EXCLUSIVE_LAUNCH_DATE = '2017-03-12 00:00:00'
SHOW_UPGRADE_PLAN = 1
REMOVE_UPGRADE_MEMBERSHIP = 1
IS_EXCLUSIVE_DISCOUNT_VISIBLE = 1
EXCLUSIVE_IMAGE = 'https://cdn.example.com/exclusive.png'
EXCLUSIVE_PURCHASE_LINK = 'https://example.com/exclusive'
EXCLUSIVE_USER_BY_ORDER = 0
# Product listings
FETCH_PRODUCTS_FROM_REDIS = 1
FETCH_PLP_DATA_FROM_REDIS = 1
RETRY_PLP_FROM_REDIS = 1
FETCH_ARTISTS_FROM_REDIS = 1
FETCH_TAGS_FROM_REDIS = 1
FETCH_CATEGORIES_FROM_REDIS = 1
# Cart validation
VALIDATE_CART_PRODUCTS = 1
PREVENT_SALE_PRODUCT_CART = 1
# Combos
COMBOS_LISTING_FLAG = 0
# Gift cards
IS_GIFT_CARD = 1
GC_SALT_KEY = 'your-salt-key'
GC_PIN_STATUS = 0
GC_PIN_LIMIT = 6
GC_PIN_LIMIT_EX = 86400
Order Features
# Cancellation
DISABLE_CANCEL_FOR_PREPAID_ORDERS = 1
PREPAID_ORDER_CANCEL_DISABLE_TAT_MINUTES = 30
ALLOW_INTERNATIONAL_ORDER_CANCEL = 0
# Return/Exchange
MAX_RETURN_DAYS = 30
MAX_EXCHANGE_DAYS = 30
MAX_EXCHANGE_TIMES = 3
INTERNATIONAL_RETURN_EXACHANGE_DENY = 1
STORE_ORDER_RETURN = 0
STORE_ORDER_EXCHANGE = 0
SHOW_FREEBIE_IN_EXCHANGE = 1
# Refunds
UPDATE_AUTOMATED_REFUND_FEATURE = 0
IS_REFUND_TSS_POINTS = 0
REFUND_INITIATED_TRACKING_AVAILABLE = 0
ENABLE_PLATFORM_FEE_REFUND_ON_UNDELIVERED = 0
ENABLE_NO_REFUND_RETURN_TRANS_FEE = 1
IS_DISABLED_REFUND_MODES = 0
# EDD (Estimated Delivery Date)
SHOW_EXTENDED_EDD = 1
EDD_EXTEND_DAYS = 3
EDD_BUFFER_DAYS = 0
IS_EDD_EARLY_DELAY_LOGIC = 1
EDD_DAY_ADJUSTMENT = 1
HIDE_DELIVERY_DATE_IF_OFD = 0
User Features
# Registration
IS_REGISTER_API_DEPRECATED = 0
# Account locking
USER_LOCK_ENABLE = 0
USER_LOCK_EXPIRY = 300
# Transaction locking
TXN_LOCK_ENABLE = 0
TXN_LOCK_EXPIRY = 900
DUPLICATE_ORDER_LOGGING = 1
RESTRICT_USER_TXN_ENABLE = 1
# Login
LOGIN_SMS_SAME_FOR_WEB = 1
LOGIN_API_V2_EXPIRY_DATE = '2025-12-31'
# Birthdate
DISABLED_BIRTHDATE = 1
BIRTHDATE_UPDATE_AFTER = 365
IS_AUTO_GENERATE_AGE = 1
UI/UX Features
# Filters and sorting
URL_WISE_SORT = 0
SHOW_ALL_CATEGORY_FILTER = 1
IS_PRIMARY_CATEGORY = 1
CONSIDER_FILTER_TOTAL_ONLY = 1
# Product display
REMOVE_BLUR_ON_LAUNCH_DATE = 1
REMOVE_LOCK_ON_LAUNCH_DATE = 1
REMOVE_IMAGE_ON_PRODUCT_LOCK = 1
REMOVE_PRODUCT_NAME_ON_PRODUCT_LOCK = 1
REMOVE_PRODUCT_SLUG_ON_PRODUCT_LOCK = 1
EXCLUDE_LOCKED_IMAGE = 1
# Notifications
ENABLE_NOTIFICATIONS = 1
# Tracking
IS_NEW_TRACKING_FOR_APP = 1
IS_VISITED_PRODUCT_LOGGING_ENABLED = 1
# Events
CART_EVENT_TRACK = 0
CART_PROCESS_ORDER_TRACK = 0
A/B Testing
DESIGN_TYPE = 'A'
UPDATED_VERSION = 0
AB_DISTRIBUTION_PERCENTAGE = 50
GST Configuration
IS_DYNAMIC_GST_ENABLED = 1
DYNAMIC_GST_VALUE = 5
DYNAMIC_GST_THRESHOLD = 2500
EXCLUDE_CATEGORY_FOR_DYNAMIC_GST = '[1136, 1120, 378, 1833]'
USE_PARENT_GST = 1
Business Rules
TSS Points & Money
# Points
TSS_POINT_DISCOUNT_AMOUNT = 10
TSS_POINT_TICKER_PRICE_PERCENTAGE = 10
IS_TSS_POINTS_EXPIRE = 1
TSS_POINTS_EXPIRE_AFTER = 365
IS_TSS_POINT_REFUND_ON_RETURN = 1
# Money
IS_TSS_MONEY_EXPIRE = 1
TSS_MONEY_EXPIRY_IN_DAYS = 365
THRESHOLD_TSS_MONEY_ENABLED = 0
THRESHOLD_AMOUNT_FOR_TSS_MONEY = 10000
# Expiry notifications
N_DAYS_FOR_EXPIRATION = 0
Cashback
START_DATE_TIME = '2020-10-30 00:00:00'
END_DATE_TIME = '2020-11-15 23:59:59'
CASHBACK_PERCENT = 20
CREDIT_CASHBACK_DAY = 7
APP_CASHBACK_EXPIRY = 90
APP_CASHBACK_ORDER_LIMIT = 100
APP_CASHBACK_RETURN_ORDER_LIMIT = 100
APP_DISCOUNT_PERCENT = 10
Referral Program
REFERRAL_EARNING_AMT = 100
REFERRAL_EARNING_EXPIRY = 90
Freebies
EXCLUSIVE_FREEBIE = '{}'
BAMBOO_TOOTHBRUSH_EM = 'product-id'
FREE_EXCLUSIVE_PRODUCT = 'product-id'
ADD_FREEBIE_ON_THE_BASE_OF_CART_MOV = 1
USERTYPE_ALLOWED_FOR_FREEBIE = '[2]'
Welcome Offer
WELCOME_NOTE_ENABLED = 0
WELCOME_NOTE_PRODUCT_ID = 'product-id'
Miscellaneous
External URLs
V1_HOST = 'http://tss-staging.clu.pw/'
WWE_URL = 'http://staging.wweshop.in'
POS_ADMIN_URL = '...'
TSS_OBSERVER_URL = '...'
TSS_EVENTS_URL = '...'
STAGING_CMS_ENDPOINT = '...'
BACKEND_TSS_SYNC_BASE_URL = 'https://prod-backend-tss-sync.thesouledstore.pvt'
BACKEND_TSS_SYNC_API_KEY = 'your-sync-key'
Image URLs
IMAGE_HOST = 'https://prod-img.thesouledstore.com'
IMAGE_URL = 'https://prod-img.thesouledstore.com/public/theSoul/uploads/catalog/product/'
PRODUCT_URL = 'https://www.thesouledstore.com/product/'
IMAGE_URL_SUFFIX = '?v=2'
IMAGE_SIZE_LIMIT = 5 # MB
IMAGE_VALID_EXTENSIONS = '["png","jpeg"]'
Site URLs
SITEURL = 'https://www.thesouledstore.com'
CATEGORYURL = 'https://www.thesouledstore.com/category/'
PRODUCTURL = 'https://www.thesouledstore.com/product/'
ARTISTURL = 'https://www.thesouledstore.com/artist/'
TAGURL = 'https://www.thesouledstore.com/tag/'
CHECKOUT_DOMAIN = 'https://checkout.thesouledstore.com'
SITE_CHECKOUT_LINK = 'https://www.thesouledstore.com/checkout'
Automation Testing
AUTOMATION_USER_ID = 123456
AUTOMATION_USER_OTP = 123456
Data Settings
ORDERS_DATA_START_DATE = '2023-01-01 00:00:00'
IS_LINE_ITEM_ENABLED = 1
SEND_PROD_QTY_INCASE_OF_COMBO = 0
Environment-Specific Overrides
Development
Staging
Production
ENV = development
PORT = 8001
API_HOST = http://localhost:8001
LOGGING_PATH = /tmp/dev-log.log
DB_ECHO = True
LOG_LEVEL = debug
Configuration Validation
Before deploying, validate your configuration:
import os
from settings import ENV
# Required variables
required_vars = [
'PORT' , 'HOST' , 'USER' , 'PASSWORD' , 'DATABASE' ,
'MONGO_HOST' , 'MONGO_PORT' , 'MONGO_DATABASE' ,
'REDIS_HOST' , 'REDIS_PORT' ,
'SECRET_KEY' , 'JWT_EXPIRY_DAY'
]
missing = [var for var in required_vars if not os.getenv(var)]
if missing:
raise ValueError ( f "Missing required environment variables: { missing } " )
print ( f "Configuration validated for environment: { ENV .get( 'ENV' ) } " )
Next Steps