Skip to main content
Under Reviewv0.1.0-alpha

Configuration Reference

The app reads its runtime configuration from config.yaml, mounted into the container at /app/config.yaml. Secrets (JWT key, API keys, DB passwords) are provided via environment variables and override the corresponding config file values.

Each deployment folder ships two variants:

FileEventsCacheUse when
config.yamllocalmemoryDB-only scenarios (no RabbitMQ/Redis)
config.full.yamlrabbitmqredisFull infra scenarios

Top-Level

port: "8080"
secret: "your-jwt-secret" # overridden by JWT_SECRET env var
service_name: "ecom-engine"
max_request_size: 5242880 # bytes (default: 5 MB)
KeyTypeDescription
portstringHTTP server listen port
secretstringJWT signing secret (HS256). Set via JWT_SECRET env var in production
service_namestringService name used in logs and traces
max_request_sizeintMaximum request body size in bytes

auth

auth:
mode: local
KeyValuesDescription
modelocalAuthentication mode. local uses the built-in JWT auth module

db

db:
type: mongodb # or postgres
connection_string: "mongodb://db:27017?replicaSet=rs0&directConnection=true"
database: ecom_db # MongoDB only
KeyDescription
typemongodb or postgres
connection_stringFull DB connection URI. Overridden by DB_CONNECTION_STRING env var
databaseDatabase name (MongoDB only; PostgreSQL uses the name in the connection string)

cache

Memory cache (default)

cache:
type: memory
l1_ttl: 5m
l1_max_items: 10000

Redis cache

cache:
type: redis
addr: "redis:6379"
password: ""
db: 0
pool_size: 10
l1_ttl: 5m # in-process L1 TTL (sits in front of Redis)
l1_max_items: 10000
KeyDescription
typememory or redis
addrRedis address (Redis only)
passwordRedis password, empty string if none
dbRedis database index
pool_sizeRedis connection pool size
l1_ttlTTL for the in-process L1 cache layer
l1_max_itemsMaximum items in the L1 cache

storage

File storage is configured independently of the database and messaging stack. S3-compatible storage is recommended for production.

storage:
provider: local # or s3
bucket: products
region: us-east-1

For S3 / Cloudflare R2:

storage:
provider: s3
bucket: your-bucket-name
region: us-east-1
endpoint: "" # leave empty for AWS S3; set for R2 or MinIO
access_key: "" # set via env var in production
secret_key: "" # set via env var in production
KeyDescription
providerlocal (container filesystem) or s3 (AWS S3 / R2 / MinIO)
bucketBucket or folder name
regionAWS/R2 region
endpointCustom endpoint URL for non-AWS providers (Cloudflare R2, MinIO)
access_key / secret_keyS3 credentials

events

Local (in-process)

events:
provider: local
retry:
max_retries: 3
initial_backoff: 50ms
max_backoff: 2s
local:
dlq_buffer_size: 100

RabbitMQ

events:
provider: rabbitmq
retry:
max_retries: 3
initial_backoff: 50ms
max_backoff: 2s
rabbitmq:
url: "amqp://guest:guest@rabbitmq:5672/"
exchange_name: ecom_events
exchange_type: topic
queue_name: ecom_queue
dlq_exchange: ecom_events_dlq
dlq_queue: ecom_queue_dlq
KeyDescription
providerlocal or rabbitmq
retry.max_retriesNumber of delivery retries before sending to DLQ
retry.initial_backoffFirst retry delay
retry.max_backoffMaximum retry delay (exponential backoff cap)
local.dlq_buffer_sizeIn-process DLQ channel buffer size
rabbitmq.urlAMQP connection URL
rabbitmq.exchange_nameMain exchange name
rabbitmq.exchange_typeExchange type (topic, direct, fanout)
rabbitmq.queue_namePrimary queue
rabbitmq.dlq_exchange / dlq_queueDead-letter exchange and queue

modules

Each module can be individually enabled or disabled. Features within a module can also be toggled.

modules:
catalog:
enabled: true
features:
images: true
variants: true
discounts: true
bulk: true
reviews: true
inventory:
enabled: true
features:
bulk: true
history: true
reservation: true
reports: true
transfer: true
adjustment: true
sync: true
cart:
enabled: true
orders:
enabled: true
payments:
enabled: true
provider: stripe
api_key: "sk_test_your_key_here" # overridden by PAYMENT_API_KEY env var
shipping:
enabled: true
providers:
- type: flatrate
rate: 5.0
- type: freeabove
threshold: 50.0
notifications:
enabled: true

Shipping providers

TypeConfigDescription
flatraterateFixed shipping cost on every order
freeabovethresholdFree shipping when order subtotal exceeds the threshold