I came up with Wander because of my family's struggle with finding a convenient outdoor activity. Our constant Google searching for fun things to do is usually a futile effort, and we often end up giving up settling for a movie instead. However, my goal is not only to eliminate this problem for my family-- I hope Wander can help other teenagers, professionals, and families who have trouble finding the time to relax and appreciate nature.
What it does
Wander eliminates the struggle of finding the perfect outdoor activity. Users can input their current location or any city they plan to go to. Then, they can choose any of six buttons, labeled lakes, parks, camping, trails, pools, and beaches. They will be presented with dozens of nearby places to go based on the activity they chose, and can select their favorites. They can then create an event and invite friends to vote on the places they picked, making the trip planning process much easier. The experiences and memories that my app helps create are invaluable.
How I built it
Wander is an iPhone app, so I had to use Swift 3 and Xcode to build it. I manage all of my users' info with Firebase, and call the Google Maps/Places API to show nearby places.
Challenges I ran into
Coding: Before making Wander, I had only ever made simple HTML pages. This project taught me so much about coding in general. Even if my code was working and functioning correctly, I constantly had to be updating it and revising it in order to maintain its readability. Going back and trying to understand the code I had implemented earlier was a challenge, and I soon learned that as the developer, I had to know exactly how Wander works in order to debug and add more features. I also got into the habit of committing on GitHub every single time I added a new feature. Debugging: This was probably the most painful challenge of all. I learned that writing code is pretty important, but debugging it is even more important and impressive. Breakpoints and print statements are basically my best friends now. UI: It took me weeks to finalize Wander's UI. Originally, I wanted something similar to Yelp. I ended up spending hours making sketches in my notebook until I liked the screens I designed.
Accomplishments that I'm proud of
All of the challenges I mentioned are now lessons I have learned for life. I am so proud to now have a functional app that anyone can use! I'm also proud that I made a professional-looking app in just a few weeks. I can now call myself an iPhone app developer! :)
What I learned
Using Firebase Database: When I first started making Wander, I had no idea how I was going to store user information. Thankfully, Make School introduced me to Firebase. I had to learn how to structure and maintain my database in order to get information to show up on different View Controllers. I am so excited to use this awesome tool for another app! Implementing Google Maps/Places API: Just getting the API key to work took me an entire week. In order to make my code as simple as possible, I had to create one function that I called for every single button in my Home View Controller. Now, I know exactly how to implement APIs into iPhone apps. Voting Feature: The voting feature was pretty buggy throughout my Wander journey. Upon clicking the "Vote" button, sometimes the number of votes would become -1! It turns out I had added a slew of unnecessary code and just needed to add a return statement. This experience taught me to remain calm and try to understand the problem better before adding random lines of code. User Testing: At first, the perfectionist in me was hesitant to show people my unfinished product. However, when they discovered different ways to crash my app, I realized user testing is actually an essential part of the app development process.
What's next for Wander - Trip Planner
I already have a long list of features I want to add to Wander. It would be cool if I could add a map view of all the nearby places, allow users to add friends and view their profiles, and personalize the screens a little bit more. There are a lot of improvements I can make, and I can't wait to implement all of my visions-- that's why app development is so fun.