This guide documents the most common setup issues contributors encounter and how to fix them. If your problem is not listed here, please open a GitHub Issue.
- Prerequisites Checklist
- Environment Variables
- Smart Contracts (Rust / Soroban)
- Listener Service (Node.js)
- Dashboard (React + Vite)
- General Issues
Before starting, verify every tool is installed and working:
rustc --version # Rust compiler
cargo --version # Rust package manager
stellar --version # Stellar CLI
node --version # Node.js (v18+ recommended)
npm --version # npm package managerRust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/envWebAssembly target (required for Soroban contracts)
rustup target add wasm32-unknown-unknownStellar CLI
cargo install --locked stellar-cli --features optNode.js — download the LTS version from https://nodejs.org
Copy the example file and edit it:
cd listener
cp .env.example .envFull reference with all available variables:
# ── Stellar Network ──────────────────────────────────────────────────────────
# RPC endpoint for the Stellar network to monitor
STELLAR_RPC_URL=https://soroban-testnet.stellar.org
# Network name (testnet, pubnet, or custom)
STELLAR_NETWORK=testnet
# JSON array of contract addresses to monitor
CONTRACT_ADDRESSES=[{"address":"CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","events":["*"]}]
# ── Listener API ─────────────────────────────────────────────────────────────
# Port the events HTTP API will listen on
EVENTS_API_PORT=8787
# How often (ms) the service polls for new on-chain events
POLL_INTERVAL_MS=30000
# ── Discord Notifications (optional) ─────────────────────────────────────────
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_TOKEN
DISCORD_WEBHOOK_ID=YOUR_WEBHOOK_ID
# ── Scheduler (optional) ─────────────────────────────────────────────────────
SCHEDULER_ENABLED=true
DATABASE_PATH=./data/notifications.db
SCHEDULER_POLL_INTERVAL_MS=10000
SCHEDULER_LOCK_TIMEOUT_MS=60000
SCHEDULER_BATCH_SIZE=10
SCHEDULER_TIMING_BUFFER_MS=60000
# Auto-generated if left empty
SCHEDULER_PROCESSOR_ID=Tip for first-time contributors: You only need
STELLAR_RPC_URL,CONTRACT_ADDRESSES, andEVENTS_API_PORTto run the listener locally. Everything else is optional.
cd dashboardCreate a .env file:
# URL where your local listener is running
VITE_EVENTS_API_URL=http://localhost:8787/api/eventsCause: The WebAssembly target is not installed.
Fix:
rustup target add wasm32-unknown-unknownCause: This happens when building without the correct target flag.
Fix: Always build with the wasm target:
cargo build --target wasm32-unknown-unknown --release
# or using Stellar CLI (handles the target automatically):
stellar contract buildCause: Stellar CLI is not installed or not in your PATH.
Fix:
cargo install --locked stellar-cli --features opt
# Then reload your shell:
source $HOME/.cargo/envCause: The .wasm file does not exist — the contract was not built first.
Fix:
# AutoShare contract
cd contract
stellar contract build
# TaskBounty contract
cd Documents/Task\ Bounty
stellar contract buildCause: Running cargo test from the wrong directory.
Fix:
# AutoShare tests
cd contract/contracts/hello-world
cargo test
# TaskBounty tests
cd Documents/Task\ Bounty
cargo testCause: Friendbot rate limit or network issue.
Fix: Try again after a few seconds, or fund manually:
stellar keys generate my-identity --network testnet
stellar keys fund my-identity --network testnetFix: Install dependencies first:
cd listener
npm installCause: The database migration has not been run.
Fix:
cd listener
npm run migrateIf the error persists:
# Make sure the data directory exists
mkdir -p data
NODE_ENV=development npm run migrateCause: Native bindings need to be rebuilt for your Node.js version.
Fix:
npm rebuild sqlite3If that fails:
npm uninstall sqlite3
npm install sqlite3Checklist:
- Is
CONTRACT_ADDRESSESset correctly in your.env?grep CONTRACT_ADDRESSES listener/.env
- Is the contract deployed on the same network as
STELLAR_RPC_URL? - Check live logs:
cd listener npm run dev # Look for lines like: "Received events" or "Processing event"
- Verify the API is responding:
curl http://localhost:8787/health curl http://localhost:8787/api/events
Cause: Port 8787 is already occupied by another process.
Fix (Linux/macOS):
lsof -i :8787
kill -9 <PID>Fix (Windows):
netstat -ano | findstr :8787
taskkill /PID <PID> /FOr change the port in your .env:
EVENTS_API_PORT=8788Checklist:
- Is
DISCORD_WEBHOOK_URLset in.env? - Test the webhook manually:
curl -H "Content-Type: application/json" \ -d '{"content": "test"}' \ YOUR_DISCORD_WEBHOOK_URL
- Check logs for errors mentioning
DiscordNotificationService.
Cause: The dashboard cannot reach the listener API.
Checklist:
- Is the listener running? (
npm run devinsidelistener/) - Is
VITE_EVENTS_API_URLset correctly indashboard/.env?# Should match the listener's API events endpoint VITE_EVENTS_API_URL=http://localhost:8787/api/events - Restart the Vite dev server after editing
.env:cd dashboard npm run dev - Check the browser console (F12 → Console) for CORS errors:
# If you see CORS errors, update listener/.env: EVENTS_API_CORS_ORIGIN=http://localhost:5173
Fix:
cd dashboard
npm installFix: Run the linter first to catch issues:
cd dashboard
npm run lintAddress any reported errors, then build again:
npm run buildCause: The listener is not polling or the event store is empty.
Fix:
- Confirm the listener is running and healthy:
curl http://localhost:8787/health
- Hard-refresh the browser (
Ctrl + Shift + R/Cmd + Shift + R). - Check the browser console for network errors (F12 → Console).
Cause: The frontend cannot reach the listener API or the API URL is not configured.
Checklist:
- Is the listener running? (
npm run devinsidelistener/) - If using a custom API URL, create
frontend/.env.local:NEXT_PUBLIC_API_URL=http://localhost:8787
- Restart the Next.js dev server after creating
.env.local:cd frontend npm run dev
# Temporary workaround — reset after cloning
git config --global http.sslVerify false
git clone https://github.com/Core-Foundry/Notify-Chain.git
git config --global http.sslVerify trueRun the full refresh sequence:
# Contracts
cd contract && stellar contract build
# Listener
cd ../listener && npm install && npm run migrate
# Dashboard
cd ../dashboard && npm install- Search open issues — your problem may already be reported.
- Open a new issue with:
- Your OS and version
- Output of
rustc --version,node --version,stellar --version - The full error message
- Steps you already tried