Inspiration
The theme of HackItShipIt reminded my brother and I of the few experiences (living in landlocked regions our whole life) we have had around water - swimming at our local recreation center! We thought about all the times our parents would not let us go without supervision due to safety concerns. Thinking about this made us realize that countless other people may have the same thought process. The lack of comfortability with letting a loved one go for a swim for reasons such as age, disability or, in some cases, risky behavior (if recorded in the past by the organization) is prevalent despite the presence of lifeguards. We wanted to find a solution that would not only provide more security around water and prevent accidents but also make the job of lifeguards easier.
What it does
This application allows lifeguards to track swimmers at their pool location based on the necessary care/monitoring level. Swimmers can check in and check out through the same app updating the lifeguards display in real time.
How we built it
We listed the Registration/Sign, Checkin/Checkout, and Lifeguard Display as the higher level tasks that could further be split up. To enumerate:
Registration/Sign in: Pool location (the organization which, for example, may be a recreation center) can sign in and register on these pages. We used a function of Google Cloud's Firebase called Authentication which allowed us to register each pool location with an email and password. Kanav Bengani worked on this portion.
Checkin/Checkout: Members (customers) of the pool location can check in and check out here. There would be a tablet/phone setup outside the pool area (may be manned by an employee) where members can take a picture of the swimmer (done with the image-picker API), enter their name, and attention level needed. All this gets sent to our Firebase database to be stored. As they are exiting the premises, the Checkout page will allow them to enter their names and check out deleting their database and Lifeguard Display entry. This portion was completed by Ricky Bengani.
Lifeguard Display: This feature is used by the lifeguards to decide which member of the pool’s location needs to be monitored more closely. The way it works is that it obtains a snapshot of the pool’s members from Firebase's Cloud Firestore (attributes include name, image, & monitoring level) as well as the image link associated with it in the Firebase Storage Bucket. It then reads this snapshot and filters the members based on their monitoring level. The data is then displayed in different pages of the bottom tab bar navigator. This UI portion was completed by Ricky Bengani, and the backend integration was completed by Kanav Bengani.
Challenges we ran into
The biggest challenge we faced was performing calls to the Firebase database. To elaborate, in order to separate the profile blocks between the tabs in the Lifeguard Display, we had to parse through data obtained from a snapshot of the database documents. This proved to be quite difficult due to the complex logic and snapshot filtering syntax, which was needed to filter and sort the different members based on necessary monitoring level.
Accomplishments that we're proud of
We are extremely proud to have gotten all the elements successfully implemented in the given time. The UI that we had planned for came out as we had imagined, despite the detail it called for, thanks to the quality that the Flutter SDK provided. Overall, our workflow was very smooth and efficient!
What we learned
This project was definitely UI intensive. There were several components we aimed to implement within the short period of time. This meant that a good portion of our time would be spent planning and deciding how we would split up the work and integrate everything. It was an excellent learning experience in that regard. Furthermore, neither of us have worked extensively with the Flutter SDK prior to this. While we were pleasantly surprised by how easy it is to work with and create beautiful UI, there was still a lot to learn. As for the backend, Firebase was something that none of us had much experience with either. One of the biggest things we learnt was the integration and calls between Flutter and Google Cloud's Firebase.
What's next for SwimSafe
We believe that this application has the potential to scale even bigger to provide security to organizations and guests/customers alike - these may include gyms, trampoline parks, and recreation centers. Companies like Costco and Sam’s Club which require membership could automate the member check in process with this functionality as well. Further technology implementations we plan to explore as we continue to develop include geofencing and image recognition APIs for automatic checkins, firewalls for added security, data collection and analysis with AI/ML, and more!
Built With
- dart
- firebase
- flutter
- image-picker
- visual-studio
Log in or sign up for Devpost to join the conversation.