# OpenVibe.Shoes — environment (production: /etc/openvibe/shoes.env). Names only; never commit values. NODE_ENV=production PORT=5180 HOST=127.0.0.1 BASE_URL=https://open.shoes TRUST_PROXY=2 # PostgreSQL (ADR-035), written by OpenVibe.Host roles/data/add-service.sh: the runtime role through PgBouncer, # the owner on a direct connection (migrations), and Valkey (shared limit counters). # Without DATABASE_URL, development uses an embedded PGlite database in data/pglite. DATABASE_URL= DATABASE_DIRECT_URL= VALKEY_URL= VALKEY_PREFIX=ov:shoes: # Per-address limits (server/app.js). #SHOES_API_RATE_LIMIT_PER_MIN=240 #SHOES_RATE_LIMIT_PER_MIN=300 # OpenVibe.Network: SSO (OAuth client `shoes`, PKCE S256) and its JWKS. OV_NETWORK_URL=https://openvibe.network OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000 # OV_NETWORK_ISSUER=https://openvibe.network OV_OAUTH_CLIENT_ID=shoes OV_OAUTH_CLIENT_SECRET= # OV_OAUTH_REDIRECT_URI=https://open.shoes/auth/callback # SHOES_AUDIENCE=open.shoes # OV_SESSION_AUDIENCE=openvibe.network # SHOES_PGLITE_DIR=./data/pglite # OpenVibe.Events: account export/deletion deliveries to POST /internal/events. The secret signs a delivery # (comma-separated for rotation, 32+ characters each; unset makes the route answer 503). SHOES_EVENTS_SECRET= SHOES_EVENTS_URL= #SHOES_EVENTS_ENDPOINT=http://127.0.0.1:5180/internal/events #SHOES_EVENTS_INTERVAL_MS=5000 # The sources the jobs read. OpenVibe.Deals' public API needs no key. SHOES_DEALS_URL=https://openvibe.deals # How many newest offer pages per run (25 offers a page; 20 pages = 500 offers). #SHOES_OFFERS_PAGES=20 # How many product lookups per run (the public product record gives the brand). #SHOES_PRODUCT_LOOKUPS=300 #SHOES_STALE_HOURS=48 #SHOES_UPSTREAM_TIMEOUT_MS=15000 # A polite gap between reads of the public source, in milliseconds (0 turns it off). #SHOES_REQUEST_GAP_MS=250 # The official release calendar (a brand's or a store's own page), and optional RSS feeds as a JSON array: # SHOES_DROP_FEEDS=[{"url":"https://example.com/releases.rss","name":"Example releases","type":"rss"}] SHOES_DROPS_URL=https://www.nike.com/launch SHOES_DROPS_SOURCE_NAME=Nike SNKRS launch calendar # eBay's official Browse API: off unless both are set. Never commit the pair; production reads it from this file. SHOES_EBAY_CLIENT_ID= SHOES_EBAY_CLIENT_SECRET= #SHOES_EBAY_MARKETPLACE=EBAY_US #SHOES_EBAY_CATEGORY_ID=93427 #SHOES_EBAY_LIMIT=50 # OpenVibe.Watch: a watch is created with the signed-in person's own Network token. Without one the watch is saved # on Shoes and marked "not connected" (a plain note, never an error). SHOES_WATCH_URL=https://openvibe.watch SHOES_WATCH_INTERNAL_URL=http://127.0.0.1:4730 #SHOES_WATCH_EVERY_SEC=21600 # OpenVibe.Today: the drops calendar's reminders (the person's own Network token is the Bearer). SHOES_TODAY_URL=https://openvibe.today SHOES_TODAY_INTERNAL_URL=http://127.0.0.1:5100 # Job intervals (off under SHOES_DRILL=1). #SHOES_OFFERS_INTERVAL_MS=1800000 #SHOES_DROPS_INTERVAL_MS=21600000 #SHOES_EBAY_INTERVAL_MS=3600000 # A restore drill starts no jobs and creates no subscriptions. #SHOES_DRILL=0 # optional: defaults to true in production # COOKIE_SECURE=true