BuddyOut

Objective:
Creating an online app that provides you with a reason to get out of unsafe situations.
Tools:
Twilio, JavaScript, Third-party API, Velo
Practices:
Web Development, Backend Development
Team:
Martin Mullappallil Johney, Yewon Bin,
Moyo Dawodu

Problem

How can I stay safe when meaning someone new?
With the rise of the internet we are meeting more people form online in person. Because of safety concerns, we developed a web based application that informs users and their emergency contact if they need a quick getaway.  Buddy Out aims to solve in situations where users might be alone or in potentially risky environments. The idea came from recognizing the need for a safety solution that could easily reach out to emergency contacts if necessary, but at the same time, not inundate them with unnecessary alerts
Timeline

User Input

Creating the frontend for the website and gathering user information

Collecting Data

Setting up and organizing collections

Scheduling

Developing the backend and scheduling fucntions

Sending Message

Integrating Twilio API to send and receive messages

User Input

During the frontend development phase, we utilized Velo by Wix to design a user-friendly and interactive interface for our safety check-in web service. We created a well-organized form within Wix Editor, enabling users to input their name, phone number, emergency contact's phone number, and the scheduled time for the safety check. To maintain data accuracy and completeness, I implemented form validation. The validation logic ensured that each field contained the required information in the correct format. If the form contained any validation errors upon submission, I prevented it from being sent until the user addressed the issues. Instead, error messages were displayed next to the relevant input fields to notify users of any necessary adjustments. Once the form passed validation and was successfully submitted, a confirmation message reassured users that their data had been received, and they would receive a summary message immediately. Through these measures, I aimed to deliver a seamless user experience, ensuring accurate data input, and minimizing the risk of errors during the safety

Collecting Data

During the process of saving user data, we leveraged Velo by Wix's backend capabilities to securely store the information provided by users. When users submitted the form with their details, the frontend triggered a backend function responsible for handling the form submissions. The backend function received the user's name, phone number, emergency contact's phone number, and scheduled time as parameters. In the backend function, I implemented database integration, utilizing Velo's database features to insert the user's data into a designated database collection. This process ensured that the user's information, including their name, phone number, emergency contact's phone number, and scheduled time, was safely stored and readily accessible for the safety check-in service. To enhance data security, we also incorporated measures such as encryption for sensitive information and access controls to manage data access appropriately. Throughout the process, the backend seamlessly handled the data processing, offering a reliable and secure user experience.

Scheduling

To handle scheduling for the safety check-in web service, we employed Wix’s natively offer a built-in scheduler, I employed an external solution, such as a separate Node.js server. This external server used a scheduling package, like node-cron, to manage the scheduling process.

The server, triggers a request to the Velo backend API, asking for the list of users scheduled for a safety check at the current time. By using node-cron, the external server could manage recurring tasks and perform this check at the appropriate intervals. Once the Velo backend API received the request, it processed the list of users scheduled for a safety check at that specific time and fetched their details from the database collection. Subsequently, the backend code utilized Twilio's API to send the safety check message to each user's phone number individually.

By employing an external server and proper scheduling techniques, we ensured that the safety check messages were delivered accurately and on time, offering an effective and reliable safety check-in service to users.

Sending Messages

For each user in the list, the backend code used Twilio's API to send a premade message safety check message to their designated phone number. This approach ensured that users received relevant and identifiable messages, enhancing the user experience.
After sending the messages, the system awaited user responses. When a user replied to the message, the backend promptly processed the response and checked whether it contained the predefined keyword "SAFE." If the response included the keyword, the system marked the user as safe and stopped sending any further scheduled messages to that user. Otherwise, it informs their emergency contact of their situation.

By handling the message processing and sending in this manner, the system effectively communicated with users, providing a seamless safety check-in experience. The timely responses and accurate handling of user replies ensured that the service operated reliably and delivered valuable support to users during their scheduled safety checks.

Reflection

During the process of developing the safety check-in web service, I underwent a significant learning journey that enriched my skills and understanding as a developer. Working with Twilio's API provided me with valuable insights into integrating third-party services seamlessly into a web application. I learned the intricacies of handling API requests and responses, implementing error handling, and ensuring reliable communication with external platforms. The safety-oriented nature of the service underscored the significance of data security. As a result, I deepened my understanding of encryption techniques and the measures necessary to safeguard sensitive user information. Moreover, I dived into the realm of scheduling and task management, exploring how to manage recurring tasks.

Throughout the project, the deployment process and production testing became valuable lessons. I gained hands-on experience with deploying a web service, testing it in staging environments, and ensuring a smooth transition to production. Above all, this project emphasized the value of continuous learning in the dynamic field of technology. The journey instilled in me a growth mindset, encouraging me to stay updated on the latest trends and best practices to create meaningful and impactful software solutions.