We've all been in high-stress situations - be it the organization of a large event, a large move, or anything involving a lot of logistics and a lot of people - where communication could be a lot better. New tasks always pop up in the most unexpected of times, and many of these aren't properly tracked, delegated or sometimes even carried out. This is the problem TaskMaster hopes to resolve.
What it does
It's an iOS app that allows event organizers to delegate tasks effectively. First, an event organizer creates an event in the app, and all other organizers/voluteers/helpers subscribe to it. Beyond that point, anyone in the event can add new tasks to the event that need to be done (eg. of how a typical task might look like - "bring chairs from storage room to auditorium"), and those tasks will be automatically assigned to the person best suited for them. The main board is updated in real time too, with a notification sent to every new assignee.
Factors for picking the best person for a task include location/proximity to the places mentioned in the task, availability of that person, and the number of tasks they've done up to this point. The goal is to maximize efficiency and to reduce communication barriers in hectic situations like event organization.
How I built it
The iOS app is written entirely in Swift, and uses Firebase as the main backend data store. Natural language processing (to determine locations as well as basic intents of tasks) is handled by Wit.ai.
Challenges I ran into
Since there's no custom backend code, many tasks that would have been better handled in a proper backend like task delegation and notifications were instead handled in the frontend, which increased the amount of data requests made to Firebase. The code was also less clean, but overall we didn't face any showstoppers on this front.
Accomplishments that I'm proud of
We were able to get bluetooth iBeacon integration working, which was pretty cool. Having beacons representing areas/rooms makes it easier for the app to target incoming tasks to people close to the areas/rooms mentioned in those tasks.
We were able to grasp the JSON-like structure of Firebase pretty well right away, and exploit that well for our use case. Overall, we felt like we went from zero to a well-functioning Swift app very quickly. We were also proud that we were able to bring a bit of natural language processing into the fold to make the task matching process a lot smarter.
What I learned
We all improved on our proficiency of Swift, and learned a lot about real-time syncing and denormalized (i.e. with duplicates) data storage. We were all beginner-to-intermediate iOS developers going into this hack, and now we feel more confident about our skills than we originally did.
What's next for TaskMaster
We'd like to make the user experience even easier to use - with voice dictation to fully take advantage of natural language processing. This would eliminate a lot of clicks, and would greatly increase TaskMaster's utility. Other improvements could revolve around fine-tuning the task matching algorithm to also take into account the type of task rather than just their location - and arrive at a decision based on the kinds of tasks each individual might prefer.