Top of Page Milestones Screenshots


Senior Design Project

Advising and Tutoring iPhone App


Overview

My goal for this project was to create an iPhone app that would streamline the process of scheduling appointments for both advising and tutoring. The app is built using SwiftUI and has database connections through Firebase. Firebase serves as storage for both the user authentication as well as the database for the scheduled appointments. Each user is unique and can schedule appointments within the app. The app provides functionality to sign up, sign in, create an appointment, and view advisor and tutor information.

Using Xcode to code this app provides a great deal of tools and resources to make the user interface easy to unserstand. Xcode provides the user with a live canvas to show what changes are being made to each app screen. This means that the user does not have to compile or run the code everytime a change is made. There is instant feedback, which is very useful

Xcode also has a built in simulator allowing for the app to run on a virtual iPhone. Unlike the canvas, the simulator will store any data entered into the app and function exactly like a normal app would. The canvas is more beneficial when altering UI elements while the simulator is useful for both the UI as well as data management and backend storage.


Milestones

Milestone 1

I had to learn Swift to code this iPhone app, Swift is a language created by Apple as a successor to Objective-C. The language was completely new to me, so I first had to familiarize myself with it. I watched many different YouTube videos and created basic programs to learn the basics of the language. There are similarities with C++ and other languages, but there are intricacies that make it unique and different.

Milestone 2

After learning the Swift basics, I had to then become familiar with SwiftUI. SwiftUI is a user interface framework built upon Swift. Xcode makes learning SwiftUI relatively simple because it has a built-in library of all the SwiftUI components that the user can add to their code immediately. The canvas preview also makes creating the UI easier because of the real-time updating.

Milestone 3

After becoming familiar with both Swift and SwiftUI, I began designing and implementing my app. I wanted a page to see the scheduled appointments, information about the tutors, information about the advisors, and a page for submitting an appointment. I sketched a rough idea on paper and then began implementing, initially without any functionality. The login and sign-up page would come later, as I had not yet linked the app to the Firebase server.

Milestone 4

Next, I began to add functionality using SwiftData. SwiftData is a way to persistently store data within your app locally. SwiftData creates a local database that stores data of a class, creating a custom schema. As new attributes are added to the class, a migration plan is needed to ensure the data remains accurate and up to date. I initially implemented it this way, intending to store the data on a server like Firebase later on. However, starting with the server implementation would’ve been more beneficial, as my final product does not use the local SwiftData database.

Milestone 5

Creating unique users was the next step using Firebase authentication. Firebase provides SDKs that you download and add to your program to link with the database on the Firebase servers. I created a login that defaults when opening the app, preventing users from using the app if they’re not logged in, as well as a sign-up page. Once a user is logged in, they will stay logged in even if they leave the app. However, because the appointments were created locally, the appointments could be seen by everyone, not just the user who created them.

Milestone 6

To make sure each user could only see their own appointments, I moved the storage of the appointments to the Firebase server using Firestore. Firestore uses a NoSQL database, which allows for less structure and freedom within the database. The database consists of users that match the users created from the sign-up page. Each user then has a collection of appointments that is unique to them. Because each user has their appointments as a part of their internal data, I could then access only their appointments, instead of all of them from every user.

Future Plans

Some future plans for the app are to make the information regarding the tutors and advisors dynamic and stored in the database along with the other users. Currently, that information is hardcoded. I would also like an implementation for the advisors and tutors to submit their information for the students to see. Finally, I plan to add functionality for advisors and tutors to view all of the scheduled appointments with them.


Screenshots

House House House House

House House House House

House House