# Database DATABASE_URL="postgresql://hashex:password@localhost:5432/hashex" # NextAuth NEXTAUTH_SECRET="change-me-in-production-use-openssl-rand-base64-32" NEXTAUTH_URL="http://localhost:3000" # Redis (BullMQ) REDIS_URL="redis://localhost:6379" # Mastodon API - configurable instance MASTODON_INSTANCE="https://mastodon.social" MASTODON_ACCESS_TOKEN="your-mastodon-access-token" # Worker tuning # Milliseconds to wait between Mastodon API calls (default: 2000 = 2s, safe for most instances) WORKER_RATE_LIMIT_MS=2000 # How often (minutes) to queue a full price-update sweep (default: 60) PRICE_UPDATE_INTERVAL_MINUTES=60 # How long (hours) a hashtag stays active after being researched or after its last position closes (default: 24) HASHTAG_ACTIVE_HOURS=24 # Max pagination pages to fetch when counting posts (default: 5 = up to 200 posts) MAX_PAGES_PER_HASHTAG=5 # Price history retention: days to keep for active hashtags, hours for inactive ones PRICE_HISTORY_ACTIVE_DAYS=7 PRICE_HISTORY_INACTIVE_HOURS=24 # Consecutive zero-post updates before all positions are force-closed and the hashtag retired ZOMBIE_ZERO_COUNT=1000 # Initial admin user — only used by `npm run db:seed`, not the running app. # Pass these at seed time: docker exec -e ADMIN_USERNAME=x -e ADMIN_PASSWORD=y npm run db:seed # If omitted, defaults to admin / changeme123 (change immediately after first login). # ADMIN_USERNAME=admin # ADMIN_PASSWORD=changeme123 # Postgres (used by postgres container in prod-compose.yml) POSTGRES_DB=hashex POSTGRES_USER=hashex POSTGRES_PASSWORD=changeme