Creating or Modifying a List
A Phone List for Referees at a Rowing Regatta
Alternative Uses - Schedules
Alternative Uses - Field Trips Groups
Alternative Uses - Grocery Lists
I attend a lot of events, like rowing regattas and interviewing events, where I prepare phone lists. When I officiate a rowing regatta, my standard method involves copying and pasting phone numbers in Excel. I’ll print out some extra copies for my colleagues. On the day of the event, I then learn the actual positions we’ll be working at which involves creating another ad hoc list on the spot, and these assignments may differ on different days of the regatta. If I actually need to call someone, that involves cross-referencing two or more paper lists which takes valuable time and either list can easily be lost or damaged by rain. I then have to repeat this entire process at the next regatta or the next day.
Going into Make School, I knew I wanted to make an app that I would actually use myself so this idea gradually made its way to the top of the list. While there is a very specialized use it is intended for, it also has enough flexibility to be used for other purposes. In addition, the body of this app can be used for another app idea I have.
What it does
PhoneShare lets you create customized phone and contact lists. You can group individual entries into categories and customize it in other ways. You can save lists as templates which you can then reuse for future phone lists. You can then send out the phone list to other users and when you pull it up, you can just tap the appropriate cell in the list to call that person.
In the context of a regatta, I can prepare the list beforehand by entering in all of the officiating referees into an existing template. On the day of the regatta, I can update the list with the assignments and move around the ordering to make it more logical. I can then send the list to every single referee. And then I can easily call someone by figuring out their position (if, for example, I need to reach someone at the Start or at the Finish). Previously, I would need to cross-reference multiple lists and then enter in the appropriate phone number but PhoneShare simplifies the entire process.
The only limit to PhoneShare's uses is your own imagination! You could use it for scheduling (such as interviews or meetings). Use the Category/Label to indicate the time for each person and if someone is missing, you can easily call that person instead of needing to look up their information. For field trips and other events, you could use PhoneShare to group participants based on their chaperone. This then makes it easy for people to contact each other. You could even use PhoneShare for grocery lists, by displaying what each person is in charge of or where they are going to shop. Then, if you need an additional item, you can figure out who the appropriate person to call would be and then call them with a tap.
How I built it
I envisioned PhoneShare's three primary functionalities as Create (the creation and editing of phone lists), Share (sending it to other people), and Explore (where you interact and utilize the list).
In order to persist information and store it, I knew early on that I would rely heavily on Firebase.
In order to implement the Create functionality, I drew upon what I learned from the Notes app we worked on at the beginning of Make School. This was particularly helpful in figuring out the Table display. I had to consult with a lot of outside sources on how to implement editing functionality.
For Sharing, I had to continue to work on Firebase but now needed to figure out how to allow one user to send data to another.
And for Exploring, I initially just displayed the data but on the last day of Make School, I finally figured out how to allow the app to make phone calls.
Challenges I ran into
The biggest issue I ran into was interacting with Firebase. The crux of my program is storing and retrieving data so I had to decide on the right data structure and then figure out the right commands to retrieve and convert that information.
I spent a lot of time on trying to configure the table display. Initially, I had Table View Controllers but I ultimately switched to embedding Tables into normal View Controllers. It was also tricky trying to send data to new and existing users, especially since I don't actually have an iPhone yet and couldn't easily simulate multiple users.
Once my app was finally working, I encountered another major challenge when I first submitted my app to the App Store! Constraints and formatting reared its hideous, ugly head! While my app looked fine with the iPhone 6 and iPhone 7, it had major display issues on smaller screens (like the iPhone 5) as well as wider screens (Plus versions). Fortunately, one of my Make School instructors spent several hours helping me figure out how to redo constraints which I then managed to complete on my own.
Accomplishments that I'm proud of
I am proud of what I was able to accomplish in the span of several weeks. I am glad I was able to incorporate a lot of the functionalities I wanted and this is definitely something that I will be using myself!
What I learned
I learned about Xcode, Swift, and iOS development. I learned how to use storyboards, how to configure constraints, and what the process is like for submitting an app to the App Store.
What's next for PhoneShare
There are still a lot of additional features I plan to add, such as allowing you to import contacts from your phone's Contact lists and to save entries as contacts. I would like to add a tutorial and to have expandable menus for the tables. There are also some minor tweaks to make (and tiny bugs to squash!). Last of all, I can port over much of this code for another app idea I have.