-
Notifications
You must be signed in to change notification settings - Fork 66
Expand file tree
/
Copy path.env.example
More file actions
131 lines (103 loc) · 4.68 KB
/
Copy path.env.example
File metadata and controls
131 lines (103 loc) · 4.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Server
PORT=4000
# Redis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_URL=redis://redis:6379
# Database
DATABASE_URL=postgres://smartdrop:smartdrop@postgres:5432/smartdrop
# Runtime environment
# NODE_ENV: string enum (development, test, production). Default: development.
NODE_ENV=development
# PORT: number. Default: 3000.
PORT=3000
# Database
DATABASE_URL=postgres://postgres:postgres@localhost:5432/smartdrop
# Stellar Horizon
# REDIS_URL: URL. Required in production. Development/test default: redis://localhost:6379.
REDIS_URL=redis://localhost:6379
# DATABASE_URL: URL. Required in production. Development default: postgres://localhost/smartdrop. Test default: postgres://localhost/smartdrop_test.
DATABASE_URL=postgres://localhost/smartdrop
# STELLAR_HORIZON_URL: URL. Default: https://horizon.stellar.org.
STELLAR_HORIZON_URL=https://horizon.stellar.org
# Soroban event indexer
SOROBAN_RPC_URL=https://soroban-rpc.mainnet.stellar.gateway.fm
SMARTDROP_CONTRACT_ID=
INDEXER_ENABLED=true
INDEXER_POLL_INTERVAL_MS=5000
INDEXER_POLL_LIMIT=100
INDEXER_START_LEDGER=0
# Stellar USDC Issuer
# USDC_ISSUER: Stellar public key. Default: Stellar USDC issuer.
USDC_ISSUER=GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335AX2OBFLDTQLNUEHRGPTM6RIA
# COINGECKO_API_KEY: string. Optional. Default: empty.
COINGECKO_API_KEY=
# COINMARKETCAP_API_KEY: string. Optional. Default: empty.
COINMARKETCAP_API_KEY=
# PRICE_CACHE_TTL_SECONDS: number. Default: 60.
PRICE_CACHE_TTL_SECONDS=60
# PRICE_REFRESH_INTERVAL_SECONDS: number. Default: 30.
PRICE_REFRESH_INTERVAL_SECONDS=30
# PRICE_STALE_THRESHOLD_MINUTES: number. Default: 5.
PRICE_STALE_THRESHOLD_MINUTES=5
# PRICE_ANOMALY_THRESHOLD_PCT: number. Default: 20.
PRICE_ANOMALY_THRESHOLD_PCT=20
# AIRDROP_EXPIRY_CHECK_INTERVAL_SECONDS: number. Default: 60.
AIRDROP_EXPIRY_CHECK_INTERVAL_SECONDS=60
# AIRDROP_LEDGER_CACHE_TTL_MS: number. Default: 5000.
AIRDROP_LEDGER_CACHE_TTL_MS=5000
# AIRDROP_EXPIRY_SCAN_BATCH_SIZE: number. Default: 100.
AIRDROP_EXPIRY_SCAN_BATCH_SIZE=100
# Airdrop request limits
# Maximum recipient CSV upload size in bytes. Default: 5 MiB.
AIRDROP_CSV_MAX_BYTES=5242880
# Maximum JSON request body size in bytes. Default: 2 MiB, sufficient for 10,000 recipients.
AIRDROP_JSON_MAX_BYTES=2097152
# Per-IP limits for airdrop creation and recipient additions.
AIRDROP_RATELIMIT_WINDOW=60
AIRDROP_RATELIMIT_MAX=10
# WATCHED_ASSETS: comma-separated CODE or CODE:ISSUER values warmed before startup.
WATCHED_ASSETS=XLM,USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
# API key auth
ADMIN_API_KEY=
# LOG_LEVEL: string enum (debug, info, warn, error). Default: info.
LOG_LEVEL=info
# SLOW_REQUEST_THRESHOLD_MS: number. Default: 1000.
SLOW_REQUEST_THRESHOLD_MS=1000
# Rate limiting (Redis-backed, per IP)
# RATE_LIMIT_WINDOW_MS: global API window in milliseconds. Default: 60000 (1 minute).
RATE_LIMIT_WINDOW_MS=60000
# RATE_LIMIT_MAX: max requests per IP per global window. Default: 100.
RATE_LIMIT_MAX=100
# PRICE_RATELIMIT_WINDOW: price endpoint window in seconds. Default: 60.
PRICE_RATELIMIT_WINDOW=60
# PRICE_RATELIMIT_MAX: max price requests per IP per window. Default: 30.
PRICE_RATELIMIT_MAX=30
# Redis concurrency and backpressure (issue #249)
# REDIS_MAX_CONCURRENT_OPS: max concurrent Redis operations via semaphore. Default: 50.
REDIS_MAX_CONCURRENT_OPS=50
# REDIS_COMMAND_QUEUE_WARN_THRESHOLD: log warning when command queue exceeds this. Default: 100.
REDIS_COMMAND_QUEUE_WARN_THRESHOLD=100
# REDIS_COMMAND_QUEUE_BACKPRESSURE_THRESHOLD: log error and apply backpressure above this. Default: 500.
REDIS_COMMAND_QUEUE_BACKPRESSURE_THRESHOLD=500
# Rate limiting (Redis-backed, per API key)
# Each authenticated key is metered in its own bucket sized by its tier, so
# one abusive key cannot exhaust the shared per-IP bucket for everybody else.
# API_KEY_RATELIMIT_WINDOW_SECONDS: per-key window in seconds. Default: 60.
API_KEY_RATELIMIT_WINDOW_SECONDS=60
# API_KEY_RATELIMIT_FREE_MAX: max requests per window for free-tier keys. Default: 100.
API_KEY_RATELIMIT_FREE_MAX=100
# API_KEY_RATELIMIT_PRO_MAX: max requests per window for pro-tier keys. Default: 1000.
API_KEY_RATELIMIT_PRO_MAX=1000
# API_KEY_RATELIMIT_ADMIN_MAX: max requests per window for admin-tier keys. Default: 10000.
API_KEY_RATELIMIT_ADMIN_MAX=10000
# CORS
CORS_ALLOWED_ORIGINS=http://localhost:4000,http://localhost:3001
# Indexer resilience (issue #255)
# INDEXER_MAX_POLL_INTERVAL_MS: ceiling on the adaptive poll interval. Default: 300000 (5 min).
INDEXER_MAX_POLL_INTERVAL_MS=300000
# INDEXER_BACKOFF_FACTOR: multiplier applied per consecutive failed poll. Default: 2.
INDEXER_BACKOFF_FACTOR=2
# INDEXER_LAG_ALERT_THRESHOLD: ledgers behind the tip before lag is alerted. Default: 100.
INDEXER_LAG_ALERT_THRESHOLD=100