Inspiration
What it does
We open doors without keys! Using geographic coordinates in degrees combined with the coordinates of admin-defined doors, GeograKey allows users to open doors within 5 meters of their location. (Assuming they have high enough permission granted by their organization!)
How we built it
GeograKey is built with 3 "sections", a Google Cloud / Firestore Database, a Node.js Backend running on Express.js, and an iOS App running with SwiftUI. We used MVVM structure for our SwiftUI (best practices ofc!) and split our Node.js into services, controllers, and routes. We didn't just want to do it, we wanted to do it right.
Challenges we ran into
Unexpectedly our application had to use explicit math! In fact, we are converting degrees and radians, and finding the distance between two points on a sphere (EARTH) using the Haversine Distance formula. We didn't expected to do much in the way of mathematics coming into the weekend, but it was a pleasant surprise to learn something new!
What we learned and what we're proud of
We spent a good deal of time wrapping our brains around Apple's Location APIs and implementing them into our swift code. We were more comfortable with Node.js and Express.js so Swift was the bulk of the learning curve. However, pretty confident all members of our team can say we are iOS Developers now :D Beyond that, we had to teach ourselves some math, learn Firestore from scratch, and juggle connecting our backend to the Swift app.
What's next for GeograKey
Given the limited time we had this weekend, there was only so much we give our new child in such a short period of time. In the future, it would be ideal to implement an admin-side, user-friendly dashboard where they could monitor the use of doors/control permissions, add additional widgets to the user interface, and increase the number of third-party authentication methods we are compatible with to appeal to a greater number of users.
Built With
- express.js
- firestore
- node.js
- swift
- swiftui
Log in or sign up for Devpost to join the conversation.