Robert Kwan Laurel rokwa19

Introduction

The project that I decided to work on is StudyBuddy, an app for students to find other people to study with.

Basically the app functions on a system similar to IRC chats and tinder where students can either join group chats or get matched with someone to study.

This app is very important to me as being an exchange student I had a lot of problems catching up with class. This was compounded with getting very sick, having problems with the class system, and having to deal with many other things in my workload. This made me wish for a platform where I could find some other students as lost as me, or someone who could help.

Although this was just my experience, I’m not alone in this. Many other exchange students had many problems adjusting to the university initially, especially those of us not from Europe. That’s why this app hopefully will be able to bridge the cultural and mental gap for exchange students. But this app isn’t only limited to exchange students. Many students in general have problems finding someone to help them in their studies.

Even though the fields of study may not be the same, sometimes just having someone else to share a situation with is more than enough help already. Talking with my fellow exchange students further inspired me to create the app as many of us shared the same difficulties and I saw this as an opportunity to be able to improve our lives.

Method

I wasn’t able to go that in depth with this project so all that is really needed to understand it is a basic knowledge of coding, swift, and APIs.

My initial plan was to use a virtual machine as I had no access to a MacOS based computer so this was my first order of research. Then I would research about how to integrate a database (initially using MySQL) and other web based apps such as google, emails, a translator and more. Aside from watching lessons about Xcode and Swift I also had plans to search various methods of accessing apple’s native messaging and sensor based features.

Initial Prototype

To further focus the concept of the app an initial prototype was made. This was a paper prototype that mostly focused on concept. Most of those I interviewed responded positively to this prototype. One explanation and common comment was that it was similar to already existing messaging apps such as tinder or WhatsApp.

One order of confusion was about how the app would exactly decide to match people up. The feedback was taken into consideration and plans for a matching system were thought about. The main priority of the app however, is still to get a functioning chat system.

Another point brought up by a student was that those not from Europe or those not that familiar with English in general might have trouble using the app especially when the other person wouldn’t know anything about their native language. Due to this an in-app translator was also planned to be put into place.

Results

After much trial, some functions of the app were brought up to working condition. The sign up and login functions are now working, with the data being successfully added to firebase.

@IBAction func signUpAction(_ sender: Any) {

    if password.text != passwordConfirm.text {

    let alertController = UIAlertController(title: "Password Incorrect", message: "Please re-type password", preferredStyle: .alert)

    let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)

                

    alertController.addAction(defaultAction)

    self.present(alertController, animated: true, completion: nil)

            }

    else{

    Auth.auth().createUser(withEmail: email.text!, password: password.text!){ (user, error) in

     if error == nil {

       self.performSegue(withIdentifier: "signupToWelcome", sender: self)

                    }

     else{

       let alertController = UIAlertController(title: "Error", message: error?.localizedDescription, preferredStyle: .alert)

       let defaultAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)

                        

        alertController.addAction(defaultAction)

        self.present(alertController, animated: true, completion: nil)

           }

                }

          }

    }

This code was taken online to add the sign up data to the database.

https://medium.com/@ashikabala01/how-to-build-login-and-sign-up-functionality-for-your-ios-app-using-firebase-within-15-mins-df4731faf2f7

The add photo function while incomplete opens the camera function. Finally the chat function has a field where text can be entered and received as data that can potentially be sent as a chat.

Mistakes

The first and possibly most vital mistake made was initially using a virtual machine to code. It was what I initially used to create the project and

After deciding that virtual machines were not the way, I decided to try the Mac labs. It was only after a week of using it however, that I realised that I needed Administrator access before any of my code could be compiled.

When it comes to making the app itself the execution was too ambitious. Many things such as the matching system, translation system, and a database were far too advanced for not only my current skill level, but also where I was on the app. It would have turned out a lot better if I just focused on the foundation first.

Takeaways

I think my main takeaway from this project was learning more about not just IOS programming, but programming in general. A lot of the things I had to do for the project were things that I tried for the first time. I don’t have a lot of experience coding especially with this being one of the first coding classes that I’ve taken in my life. But I can say that I learned a lot from the experience. Aside from IOS in general, I was able to learn to use pods, APIs, databases, different UIs, and Xcode in general, so I don’t regard the project as a complete failure.

I also had a very confusing experience using git for the first time. I still don’t really understand it, but I got my files online so that’s good.

Moving Forward

Now that I have a better perspective on what the app requires, I can take it forward. First and foremost, I won’t use a virtual machine to create the app as that was a big source of setbacks for the project. Aside from the Mac labs which I was able to use in the last week, I also might be able to borrow one once I go back to my country. Next, I’ll have to strengthen my foundations in swift so that there would be less time spent on the many errors that pop up.

On the coding side of things, I plan to implement that chat even more, making it integrated further to the server. The other planned functions of the app such as a translator, integration with the University’s database and more are also planned to be completed.

Leave a Reply