Our collaboration with HaloSOS was quite complex, as we undertook a series of improvements to the system's frontend and backend. We also focused on expanding the overall performance and integrating an authentication system for wearable devices. Currently, frontend uses Angular version 5.2. However, the most recent release is version 13.0, which would bring significant improvements in terms of security and general application stability. As such, our proposal's first item involves updating the Angular version to the latest stable version and updating dependent libraries to their latest versions. On the backend, we simplified actions and nested user dependencies while reducing the size of many controllers by incorporating suggested libraries such as gem ransack. Our main goal is to assess the HaloSOS app's performance in terms of concurrent users or requests per second, emphasising robustness, availability, and error handling under heavy loads or extreme conditions. Finally, we implemented our solution for the authentication of wearable devices.
We first updated HaloSOS' Angular version to the latest stable version, along with all dependent libraries. This update prompted us to improve the overall application structure by applying good practices of modules and component engineering. For the backend, we suggested several changes to the Ruby on Rails API. To generate interactive API documentation, we used Swagger. Then, we refactored the controllers to simplify actions, nest user dependency, and reduce action size using recommended libraries like the gem ransack. These improvements were necessary so the HaloSOS system could dynamically support multiple clients/hotels. We planned to segregate the data from each hotel into different databases. To achieve this, we modified the system to identify the hotel and determine the data scope for all of them. Lastly, we created a solution to authenticate wearable devices for the HaloSOS app, as the existing authentication methods were unavailable. The proposal consists of a three-step process in which the watch calls an endpoint with a unique code, a secret is generated and compared by both the client and backend, and the wearable device retrieves the token by making a GET request to the endpoint.
Overall, our collaboration with HaloSOS resulted in a more robust, scalable, and secure system that provides a people-focused solution for raising alarms in dangerous situations. The updated system can handle heavy loads and extreme conditions while ensuring uninterrupted coverage with the switch to cell coverage in areas with wifi access point failure. The security console interface provides real-time alerts, which only designated responders can cancel, ensuring any crisis to be dealt promptly and efficiently. With our solution, the HaloSOS app can now authenticate wearable devices, ensuring only authorized users can trigger an alarm in dangerous situations.
Check out some of the related projects