Table of contents
Our goal was to create a women's safety app, as a potential use case for a humanity NGO with volunteers throughout the city.
Introduction 🚀
S-Guard is a client-focused emergency system that lets you ping your live audio, video and location to an interconnected NGO network. (The heart of the app is a well-implemented SOS button that does all three at once when double-tapped during a panic situation)
Local Development 🎞
I built the solution as an Android app coded in Flutter, that uses Firebase as its backend, and relies on multiple APIs to better the user experience.
Day 1 -> Followed my gut instinct and started building up the screens and adding app themes.
Day 2 -> Continued building the front-end (Apparently I had severely underestimated the time taken to create registration form screens)
Day 3 -> Researched on WebRTC (which is awesome, look it up) and read up a few tutorials. Added basic routing logic to the app.
Day 4 -> Implemented the user location model using Flutter Maps API.
Day 5 -> Created a general Signalling peer network on a google STUN server. (By midnight, the app had a functional video/audio transfer system)
Day 6 -> Added overall button logic to the app.
Things I Learned 🎓
I made myself proficient in creating model classes to better implement any given UI.
I acquainted myself with SOLID principles and have been trying to follow them since.
I learned about various factors that govern the market health of an app. We were asked to comment on the selling strategy of our app along with a good analysis of how it could be monetized. We created presentations depicting current app trends and predicting what position our app would hold in such a scenario.
I learned about WebRTC and implemented it in a basic format. Through this implementation, I can say I have a fair share of knowledge about STUN Servers and Signalling.
I practiced using and calling third-party APIs. I also learned that the Google Maps API is not exactly free to use :/
Interestingly, I learned how to ask the user's device for mic/cam and Bluetooth permissions through the codebase itself.
Lastly, I learned how to better refactor my projects and improve code reusability.
Might learn how deployment works. (I’m planning on taking a quick refactor day and cleaning my code further before it finally happens, sigh)
Conclusion ⏳
We didn’t win the hackathon, but I’m pretty sure it taught me most of my core dev concepts.
I’ve read this over and over again and it does no justice to the real development process. I never thought I’d have actual fun doing something that contributes majorly to my studies.
Here’s the GitHub repo in case someone read this through. (Personal documentation is tough when you’re looking to show off your tech stack at the same time)