Start Here
Alright. No fluff. No theory. Just pure setup.
If you're here, you're probably ready to run this locally and see what the magic looks like behind the scenes. So let’s skip the unnecessary intros (finally) and just get your terminal moving.
Step 1: Fork & Clone
You can start by forking the main repo so you can break things safely (and maybe even contribute back!).
# Fork the repo on GitHub first, then clone your fork.
git clone https://github.com/YOUR_USERNAME/thedaotool.git
cd thedaotool# If you just want to clone the main repository. (read-only)
git clone https://github.com/kartikmehta8/thedaotool.git
cd thedaotoolStep 2: Install Dependencies
Install the frontend and backend packages in one go.
# For client.
cd client
npm install
# Then, server.
cd ../server
npm installStep 3: Set Up Environment Variables
From the /server & /client directories, create your .env file:
cp .env.example .envNow edit .env and fill in the following:
Core App Config
PORT=5050The port your backend server will run on.NODE_ENV=developmentIndicates whether you’re indevelopmentorproductionmode.FRONTEND_URL=http://localhost:3000Where your frontend client is running. Important for CORS and cookie settings.SERVER_URL=http://localhost:5050The base URL for your backend API.
Firebase Config
FB_STORAGE_BUCKET=Firebase Cloud Storage bucket URL used for file uploads.FB_REALTIME_DATABASE=Realtime Database URL used for live chat and real-time features.
You will need to download a Service Account file as well — this will be covered on the next page.
Redis
REDIS_URL=redis://localhost:6379A Redis instance is used for background queues such as GitHub sync, email dispatch, and OTP jobs. When using Docker, the URL will beredis://redis:6379.
Email Configuration
SMTP_USER=SMTP (Simple Mail Transfer Protocol) username for sending emails - Google in our case.SMTP_PASS=Password or API key to authenticate with your email provider.
GitHub OAuth
GITHUB_CLIENT_ID=Client ID from your GitHub OAuth App — used for repo access and issue syncing.GITHUB_CLIENT_SECRET=Secret key for verifying GitHub logins and tokens.
Discord Bot Integration
DISCORD_CLIENT_ID=Bot client ID from the Discord Developer Portal.DISCORD_CLIENT_SECRET=Secret for authenticating Discord OAuth.DISCORD_BOT_TOKEN=Token used by the bot to post messages like bounty announcements into channels.
JWT Auth & Security
JWT_SECRET=itisasecretSecret string for signing JWT tokens. Keep this very secret.JWT_EXPIRATION=1dToken validity period. You can use formats like1d,12h,30m.MAX_LOGIN_ATTEMPTS=3Security feature to prevent brute-force attacks by locking out users after failed attempts.ENCRYPTION_SECRET=anothersecretAdditional layer of encryption for sensitive data like verification tokens.
Wallet & Payments (Privy + Solana)
PRIVY_APP_ID=Your app ID from Privy, used for wallet authentication and linking.PRIVY_APP_SECRET=App secret for verifying Privy token integrity.SOLANA_CAIP2=Chain identifier in CAIP-2 format. Example:solana:mainnet.SOLANA_RPC_URL=URL of your Solana RPC endpoint (via Helius, Triton, or public RPCs) to trigger on-chain USDC payments.
In your /client directory, you'll also need a .env file. The main variable required here is:
REACT_APP_BACKEND_URL
REACT_APP_BACKEND_URLThis is the URL the React frontend will use to communicate with your backend server.
In local development, this is usually:
REACT_APP_BACKEND_URL=http://localhost:5050In production or staging, point it to your deployed backend:
REACT_APP_BACKEND_URL=https://api.thedaotool.com (This is our instance.)
Make sure this URL matches what you’ve set in CORS config on the server side, otherwise requests from the frontend will get blocked.
That’s it! You’re now fully equipped with the environment configuration for both frontend and backend. From here, you're ready to continue with Firebase setup.
Last updated