Documentation: MKDocs GitHub Site
The RDS App is an open-source web application for conducting Respondent-Driven Sampling (RDS) surveys of unsheltered populations. Developed in collaboration with the University of Washington County Regional Homelessness Authority (KCRHA), the app enables volunteers and administrators to collect survey data, track referral chains, and develop population estimates for Point-in-Time (PIT) counts.
The codebase is a TypeScript monorepo: React frontend (client/), Node.js/Express backend (server/), and MongoDB for data storage. Authentication is handled via Twilio Verify (OTP). The present deployment is through Azure App Service.
- Clone the repo
git clone https://github.com/SSDALab/respondent-driven-sampling.git
cd respondent-driven-sampling-
Set environment variables
Copy the template to create your local env file:
cp server/.env.example server/.env
Open
server/.envand fill in your values:NODE_ENV=development MONGO_URI=mongodb+srv://YOUR_USER:YOUR_PASSWORD@YOUR_CLUSTER.mongodb.net/ MONGO_DB_NAME=rds-your-db-name TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx TWILIO_AUTH_TOKEN=your_twilio_auth_token TWILIO_VERIFY_SID=VAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx TWILIO_PHONE_NUMBER=+12065551234 AUTH_SECRET=paste_output_of_openssl_rand_-hex_32 TIMEZONE=America/Los_Angeles
Where do I get these values? These credentials are not included in the repository. Contact a project maintainer to obtain shared development values, or set up your own MongoDB Atlas and Twilio accounts. Generate
AUTH_SECRETlocally withopenssl rand -hex 32. See the full Environment Variables reference for details on each variable.Important: The file must be
server/.env(next toserver/package.json), not insideserver/src/or the repository root. -
Install packages
cd client && npm install
cd ../server && npm install- Start the backend server (with hot reload)
cd server
npm run devFor production-style run: npm run build then npm start.
- Start the frontend dev server (in a separate terminal)
cd client
npm run dev- Visit the app at http://localhost:3000.
The login page will load, but authentication requires the database to be initialised with locations, a super admin account, and seeds. See Getting Started for the full setup walkthrough.
The following features have been identified as high-priority candidates for future development:
App Features
- Auto-populate location from last survey entry
- Widget for staff to comment on survey responses
- Integration with Homeless Management Information System (HMIS)
- Volunteer scheduling dashboard for administrators
- Resume unfinished survey feature
- Admin ability to edit survey questions
- Volunteer ability to edit survey responses
- Survey analytics dashboard
Testing
- Dynamic Application Security Testing (DAST)
This project is supported by:
- NSF CAREER Grant #SES-2142964 to Zack Almquist (PI)
- UW Population Health Grant Tier 3
If you use this software, please cite it via the "Cite this repository" button on GitHub or see CITATION.cff. Zenodo concept DOI: https://doi.org/10.5281/zenodo.19393410.
- This project is supported by
- NSF CAREER GRANT #SES-2142964 to Zack Almquist (PI)
- UW Population Health Grant Tier 3