Employ Me is an app for Cornell Students to get connected! Post and browse jobs within the Cornell community. Whether you're a graphic designer, tutor, or makeup artist, this is the place to find clients on campus!
November 2019 - Present
Swift, SnapKit, GoogleSignIn
Python, SQLAlchemy, Heroku
Cornell's college campus is brimming with talent. However, it’s often a challenge to reach a large audience of students quickly and easily. Other than the Cornell meme Facebook group, individual clubs, and other campus groups, it can seem impossible to bring the community together. I wanted to create a freelance marketplace that allows students to post their talents and services for others to take advantage of. On the flip side, if someone were ever in need of a tutor for an upcoming prelim, a photographer to snap a new fancy headshot, or even a software engineer to make the next best social network come to life, they could use Employ Me to fulfill their needs and support their peers at same time.
I started this project in November of 2019. Unfortunately, it was kind of pushed to the back burner as school picked up for the spring semester. However, once I got home for coronacation~, I wanted to take advantage of my newfound free time. Within the first few days of coming home, I spent hours setting up the server, deploying it to Heroku, and connecting it to the frontend. I think that finally being able to retrieve data from the server was one of my proudest accomplishments of the whole project. Since then, I have added so much more to the app. In addition to creating my own server, I did a complete redesign, learned all about networking, integrated Google Sign in, experimented with tab view controllers, and more.
This project was my first time experimenting with Google Sign, and it was definitely no walk in the park. Setting up the sign in page part wasn’t too bad, thanks to the super helpful documentation that Google provides. However, the main challenge was integrating the sign in view controller with the other controllers. Ultimately, I decided to set the root view controller to a UINavigationController and then present the sign in view controller modally. This way, the sign in page is only presented if the user is not signed in.
At school, I was lucky enough to take a backend development course,
where I learned how to create a Python Flask app using SQL and
SQLAlchemy. I learned how to run localhost and test routes using
Postman. However, deployment was a completely new challenge. I did
some research, and decided that Heroku would be the best choice for
me. It seemed pretty popular (and more importantly, free). Connecting
Heroku to the git repository, setting up the environment, and adding
all required files almost made me pull my hair out was
definitely super easy and no problem at all. Always up for a
challenge, though, and reaching this milestone was definitely one of
my most proud accomplishments for this project!
I needed to figure out a way to deal with the job images. Originally, I had images in the assets folder, and was just storing the names of the images in the database. However, I knew that this wasn't scalable. I considered using Google Firebase to store the images, but ultimately decided to use base 64 encoding. It seemed easy enough: convert an image to a string, store the string, and then fetch the string and decode it to use in the collection view cells. It was a challenge trying to figure out what the base 64 strings of the original images were, because they were too long to print out. I then tried to use an online encoder, but it was giving me the wrong strings, resulting in a bunch of fatal errors because they couldn't be decoded properly. Finally, I decided to use breakpoints to hover over the variables and copy the base 64 strings, which I then pasted into the SQLite database. Yay! I know that this might not be the best solution to my problem, however, I think that it works perfectly fine for the size and purpose of my app. If I ever were to actually release my app for the public, learning more about data storage and considering privacy, security and space concerns would be really interesting!
Previously, I didn’t think that virtual environments were worth my time. I didn’t see the need for them and they just seemed like a pain to navigate. Naively, I would just download Python packages straight to my computer. Honey, did I have a big storm coming. Creating a requirements.txt file for deployment with only the necessary dependencies was virtually (haha, punny) impossible with all of the dozens of packages I had installed. Using a virtual environment made everything so much easier to work with!
When I started making this app in November, I could never have imagined what it turned into. So many hours of watching YouTube tutorials, learning new things, debugging, and just staring at the computer screen hopelessly went into this project. There were so many times that I thought about giving up. But, with every challenge that I faced, the feeling of finding a solution just got more and more exhilarating. I am so proud of what I have created, and it just goes to show that I can do anything that I put my mind to. I can’t wait to see what the future holds!
If I were to continue developing this app, I have a lot of ideas. Firstly, I would create a system where users could leave reviews on certain postings, so that future users could gain some more insight on a potential hire. Secondly, I would integrate Google Firebase Chat to allow for communication directly inside the app. Lastly, I would incorporate some kind of payment platform, such as Venmo, which would allow all transactions to occur within the app, too.