Simple Survey Tool #94
Replies: 3 comments
-
Some quick examples sketches (mobile first, as most recipients don't have an computer). This should give a better idea of how the survey tool could look like. |
Beta Was this translation helpful? Give feedback.
-
sgtm
sgtm
This sounds good to me. We then can have some functions to aggregate statistics into a publicly readable collection.
Generally, UUIDs are not necessarily designed as a cryptographical random generator. They are designed to create unique ids, but are not per design unpredictable. https://research.nccgroup.com/2021/05/10/using-uuids-for-authorization-is-dangerous-even-if-theyre-cryptographically-random/ I think I would prefer if we generate for each recipient a secure token, add this to the recipient document as an attribute (e.g. survey_token), and then use that one instead of directly the UUID. We could then design the firestore rules that one can read/write a survey document with Another approach would be to use proper jwt tokens using the auth module in firebase. https://firebase.google.com/docs/auth/admin/create-custom-tokens#create_custom_tokens_using_the_firebase_admin_sdk. |
Beta Was this translation helpful? Give feedback.
-
The progress of the survey tool can now be viewed on this board view. |
Beta Was this translation helpful? Give feedback.
-
Currently we use the third-party tool Typeform for the recipients surveys. This setup has considerable drawbacks: costs ($800+ per year), data in US, flexibility, no multi-language, managing surveys for recipients (knowing who filled out what) and less privacy etc.
An option – which has been in discussion – is to create a standalone solution:
What could be a good unique identifier for the surveys (also used in the URL to access it)? The most obvious option could be the randomly assigned document id, which is created by firebase for each user. This could also be helpful, if the state of the survey (i.e.
submitted
,started
) should be written into the respective recipients document (and allowing this via firebase rules).How would user XY with
UID
=S5bTLl2ZVeccOPJcJ788
access a survey:surveys.socialincome.org/S5bTLl2ZVeccOPJcJ788/ -> overview of all surveys for XY
surveys.socialincome.org/S5bTLl2ZVeccOPJcJ788/onboarding -> onboarding survey for XY
Remember: Recipients don't have a login. So the
UID
should make sure that a) we know who filled it out, b) can connect the recurring survey answers to one user (measuring poverty level over time) and c) have a bit of security from someone randomly filling out or accessing surveys (i.e. when we use sequential numbering and it's easily guessable) and d) provide a way to manage recipients surveys.Other information: each recipients gets approx. 8 surveys over the 3 years. In the best case, recipients get the survey in their main language (often not English), so multi-language should be thought into it (but it's different from the routing of the website, where we have to guess based on IP or browser language or cookie. We know who is accessing the survey (thanks to the
UID
) we could easily serve the right language based on the recipientsmain language
field. As a start it could also be only English (as it is now, until the discussion here found its decision.Any thoughts on this @andrashee @renestalder @sdwivedi @mkue?
Beta Was this translation helpful? Give feedback.
All reactions