Skip to content

SSDALab/respondent-driven-sampling

ssec DOI License

Overview

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.

Local Development

  1. Clone the repo
git clone https://github.com/SSDALab/respondent-driven-sampling.git
cd respondent-driven-sampling
  1. Set environment variables

    Copy the template to create your local env file:

    cp server/.env.example server/.env

    Open server/.env and 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_SECRET locally with openssl rand -hex 32. See the full Environment Variables reference for details on each variable.

    Important: The file must be server/.env (next to server/package.json), not inside server/src/ or the repository root.

  2. Install packages

cd client && npm install
cd ../server && npm install
  1. Start the backend server (with hot reload)
cd server
npm run dev

For production-style run: npm run build then npm start.

  1. Start the frontend dev server (in a separate terminal)
cd client
npm run dev
  1. 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.

Future Directions

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)

Funding Support

This project is supported by:

  • NSF CAREER Grant #SES-2142964 to Zack Almquist (PI)
  • UW Population Health Grant Tier 3

Citation

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.

Funding Support

  • This project is supported by
    • NSF CAREER GRANT #SES-2142964 to Zack Almquist (PI)
    • UW Population Health Grant Tier 3

Contributors

Contributors

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors