Real Time Map Updating on a Website
Budget: $750 – $1,500 USD
Overall: I have a website with a form, code to take form data and create a map, and I need the map to update in real time on the website.
Requirements
User Story:
As a survey responder, I need real time map location updates of a limited number of medical providers near me so that I can get the relevant help I need for my medical conditions.
Description:
The proposed work requires implementation within a pre-existing framework of services, which has been determined to have minimal disruption to the current process, while acknowledging that this can be integrated into a single stack at a later time. With regard to 3rd party platform integrations, developer is expected to know how to be effective with TypeForm webhook configuration, Google Sheets API, and the mechanics of how script deployment works on the Plotly platform.
Current state:
Consists of three main web services from separate vendors (TypeForm, Google Sheets, and Plotly). TypeForm is being used as a UI for input by users which sends responses to a Google Sheet in real time, Google Sheets being used as a persistent data store from which Python/Pyspark code needs to read, and Plotly is being used to render an interactive Map component for the end user (its plots are based on output of the Python/Pyspark code).
Desired State:
TypeForm Service will simultaneously issue POST requests to Google Sheets Service (survey data) and Plotly Service (survey completed signal), afterwhich the Plotly Service will issue a GET request to Google Sheets Service to obtain newly posted data and kick off various processes, which I've already have coded in an ipynb in Python and Pyspark syntax. To mitigate the potential issue of requesting data from the Google Sheets job queue before new data has been posted, the Plotly Service will retry requests every 1 second until new data is obtained.
Other Information:
Desired iteration of this project is to be considered a fully operational prototype due to the type of third party services involved. In the future, all services listed in the spec will be integrated in-house.
Use of docker containers is encouraged to allow the developer to mock services locally prior to implementing in production. No intermediate staging is available.
Tasks:
- Set up FastAPI + Plotly API service
- Set up Job Queue Sheet in Google Sheets to be used as input data for Plotly API.
- Integrate existing .ipynb script into API service hosted on Plotly, creating an endpoint used to receive signal of completed survey from TypeForm.
- Configure webhook in TypeForm Service to signal Plotly API of completed survey.
- Configure API service to issue GET request from Google Sheets to pull in necessary data from Google Sheets upon receiving signal of survey completion, then removing items from Job Queue sheet when successful. Retry request every 1 second until Job Queue data is available.
- Test on developer's local machine.
- Deploy script to Plotly service.
Acceptance Criteria:
Users will be able to submit data via TypeForm, which will result in a "real-time" update to the interactive map rendered by the Plotly service.
Language:
- Python
Libraries:
- FastAPI + Plotly Library (https://github.com/rusnyder/fastapi-plotly-dash)
- httpx
- Google Sheets Integration Library
- Others as required by developer
Platforms:
- TypeForm
- Google Sheets
- Plotly
Please include when responding to post:
- Examples of similar automation work you've done
- Info on what files/code you'd need from me to get started
- Outline of how you'd build the required state
Requirements
User Story:
As a survey responder, I need real time map location updates of a limited number of medical providers near me so that I can get the relevant help I need for my medical conditions.
Description:
The proposed work requires implementation within a pre-existing framework of services, which has been determined to have minimal disruption to the current process, while acknowledging that this can be integrated into a single stack at a later time. With regard to 3rd party platform integrations, developer is expected to know how to be effective with TypeForm webhook configuration, Google Sheets API, and the mechanics of how script deployment works on the Plotly platform.
Current state:
Consists of three main web services from separate vendors (TypeForm, Google Sheets, and Plotly). TypeForm is being used as a UI for input by users which sends responses to a Google Sheet in real time, Google Sheets being used as a persistent data store from which Python/Pyspark code needs to read, and Plotly is being used to render an interactive Map component for the end user (its plots are based on output of the Python/Pyspark code).
Desired State:
TypeForm Service will simultaneously issue POST requests to Google Sheets Service (survey data) and Plotly Service (survey completed signal), afterwhich the Plotly Service will issue a GET request to Google Sheets Service to obtain newly posted data and kick off various processes, which I've already have coded in an ipynb in Python and Pyspark syntax. To mitigate the potential issue of requesting data from the Google Sheets job queue before new data has been posted, the Plotly Service will retry requests every 1 second until new data is obtained.
Other Information:
Desired iteration of this project is to be considered a fully operational prototype due to the type of third party services involved. In the future, all services listed in the spec will be integrated in-house.
Use of docker containers is encouraged to allow the developer to mock services locally prior to implementing in production. No intermediate staging is available.
Tasks:
- Set up FastAPI + Plotly API service
- Set up Job Queue Sheet in Google Sheets to be used as input data for Plotly API.
- Integrate existing .ipynb script into API service hosted on Plotly, creating an endpoint used to receive signal of completed survey from TypeForm.
- Configure webhook in TypeForm Service to signal Plotly API of completed survey.
- Configure API service to issue GET request from Google Sheets to pull in necessary data from Google Sheets upon receiving signal of survey completion, then removing items from Job Queue sheet when successful. Retry request every 1 second until Job Queue data is available.
- Test on developer's local machine.
- Deploy script to Plotly service.
Acceptance Criteria:
Users will be able to submit data via TypeForm, which will result in a "real-time" update to the interactive map rendered by the Plotly service.
Language:
- Python
Libraries:
- FastAPI + Plotly Library (https://github.com/rusnyder/fastapi-plotly-dash)
- httpx
- Google Sheets Integration Library
- Others as required by developer
Platforms:
- TypeForm
- Google Sheets
- Plotly
Please include when responding to post:
- Examples of similar automation work you've done
- Info on what files/code you'd need from me to get started
- Outline of how you'd build the required state