Architecture - PCNI/homeless-helper GitHub Wiki

High-Level Architecture

Data Sources

Update job postings (tools.update_jobs)

  • Query Indeed.com RSS feed for new jobs.
  • Insert new jobs to 'resource' collection.
  • Check for expired jobs and remove from 'resource' collection.

Update bed availability (tools.update_beds)

  • Query NJHMIS for beds.csv.
  • Update bed availability for each shelter in 'resource' collection.

Update shelters (tools.update_shelters)

  • Query OpenHMIS API and add new shelter resources.
  • Perform reverse geocoding via Google Maps API.
  • Insert new shelters to 'resource' collection.

Clients

Mobile Web Application

All mobile web methods reside in the '/mobile' namespace.

iOS Application

Methods to support iOS requests:

  • /api/resource/get
  • /api/resource/list
  • /ios/admin
  • /ios/admin/update
  • /ios/shelter_register
  • /ios/job_new

Telephony Application

Inbound Twilio requests query 'resource' collection.

Methods to support Twilio requests:

  • /api/resource/sms_inbound
  • /api/resource/voice_inbound
  • /api/resource/voice_zipcode

Analytics

Localytics: iOS app event tracking

Google Analytics: Web app event tracking