We wanted to simplify the process of collecting data from a group of people. The number one way that we thought we could do this was to eliminate the web interface, which means there is no need for a Wi-Fi or LTE connection. It also means that there is no need to sign up for a service, which makes the surveying process much simpler.
What it does
SMSurvey is our solution to this problem. With our application, a user is able to create a survey and send it to any number of known phone numbers. We also have an option to collect phone numbers by having the surveyees send a text message to a number that is provided to them. This will then add them to the roster of people being surveyed, and the surveying process will begin. Once the survey is complete, the results are downloadable as a .csv file.
How we built it
On the Python side we use the Twilio API to send a list of survey questions to a list of phone numbers one at a time as responses are received. The responses are then stored in a .csv file and sent to the surveyor so that it can be downloaded and analyzed.
Challenges we ran into
Figuring out how to structure our data surrounding the surveys. We needed things like Survey, User, Messenger classes to be able to interact, and deciding how to go about that to make the rest of the code as simple as possible was definitely a challenge. We think we settled on a pretty sound plan, and using it (once it was done).
Accomplishments that we're proud of
In the end, our frontend and backend interact incredibly smoothly through our Google Cloud Platform server. We thought that this was going to be the most difficult part of our project, when in actuality it ended up being very straightforward for us to implement.
We feel like the frontend UI is quite intuitive and has minimalist feel. It is visually pleasing to use.
What we learned
How to work on projects with multiple people
Working towards a goal with time constraints
Working under stress
We learned how to use Twilio's API
How to use Flask
One of us learned how to write Python
How to use React
How to make everything else interact with React
A lot about backend development
A lot about frontend development
A lot about meshing the two together
How to use Google Cloud Platform
Vastly increased understanding of Git and Github
What's next for SMSurvey
Automatically importing numbers during the collection process
Actually validating phone numbers rather than the E.164 regular expression
User accounts so you can keep track of surveys that have been sent
Ability to have multiple concurrent surveys with the same group of users or at least with some overlap