I Made A Mobile App for my Significant Other (And She Won't Use It)
My partner and I always have trouble finding what movie to watch. The typical process usually goes like this:
What do you want to watch?
I don't know, what do you want to watch?
Let's watch Kong vs. Godzilla
No, how about Zack Snyder's Justice League?
No, that's way too long. How about Minari?
No, too serious. How about...
You get the point.
We usually watch 1-2 movies a week, so we go through this process quite often... And this isn't just something that happens with my partner. I have literally spent over an hour trying to pick a movie with my friend group before.
The problem was simple: we don't know the subset of movies that we are willing to watch. Heck, I don't even know the movies I'm willing to watch until you ask me! If only there were a way for me to fix this...
Of course there's a way!
I'm a Software Engineer! I literally make tech for a living. Surely, I could make something that will solve this problem for us. I began doing research into ways people have gone about solving this problem and found this glorious tweet.
Ok I’m stoned but this seems like a good idea: what if there was an app that both you and your partner have where you both swipe right or left on movies that are on your streaming services and when you find a match it lets you know— c a i t l i n (@hello__caitlin) September 11, 2020
It wasn't an original idea, but I've never made a mobile app before, so I thought it would be a cool learning experience. On top of that, I would be making it to solve an actual problem I have with people I care about, and that's pretty special!
How the heck do I make a mobile app?!
I knew at the basic level I would need:
- A backend server to handle API calls
- A frontend client to actually render the app
- A database to store movies and user's likes
- An object storage solution to store images
Well, if I was already delving into mobile app development for the first time, why not just learn something new on all levels? 🤪
The Frontend: React Native
I didn't want to write native code because, well... I don't have time for that. Cross-platform development is clearly ideal. As far as I knew, my choices were React Native or Flutter. I have worked with React on some of my previous projects. I'm no expert in React, but I at least knew the basics. So, I decided to go with React Native.
It's worth noting that I used expo to handle the actual build and deployment process. It really did save me hours of work at no cost!
The Backend: express.js
I don't have too much to say about this. I had never used Node.js before, but I heard about it so often that I wanted to give it a shot.
I was shocked at how easy it was to use! If you understand how APIs work, it's pretty easy to dive into. Also, I wrote my own middlewares for the first time - frickin amazing! Saved me so much time!
The Database: MongoDB
I had only worked with SQL databases before, so I thought I'd also give document-oriented databases a shot. Writing the models were pretty easy, but I had a hard time understanding MongoDB's query and aggregation flow.
I think the queries can definitely be optimized, but hey, I was able to get it to work.
Blob Storage: Azure Storage
The only reason I chose to use this was because I get $100 of free monthly Azure credit. Honestly, I thought it was poorly documented and hard to interface with. It works, but it's still not clear how I should handle certain occurances.
Getting The Data
I wrote an automated web scraper that populates my database with new movies. Did you know that there are only about 500,000 movies? I can very feasibly have every movie ever made in my database :)
Building The App
Honestly, building the app was the least time intensive, which became a point of frustration for me. It took me 2-3 weeks to build out the app to a point where it worked (with the exception of minor bug fixes).
I was pretty impressed by the end of it. I was able to:
- See what me and a friend was willing to watch
- Start a group and see what we were all willing to watch
- Filter and see movies by service (Netflix, Hulu, etc.)
- Filter and see movies by genre
Getting Approved For The App Store
Jeez, this process sucks. I had to pay a $25 one-time fee to get onto the Google Play Store, and an annual $100 to get onto Apple's app store.
And there are all these stupid requirements. I need at least X screenshots, and they have to be this exact resolution blah blah blah. On top of that, it took so long to get approved. My ADHD brain really suffered waiting for the gratification.
Eat my butt, Apple. Eat my butt, Google. Just let me publish my frickin app, you already emptied my pockets.
I know it was originally just for me and my friends, but if I had to pay to make this app, maybe I can get some more users and make my money back.
As always, I spread it all over reddit, and got some pretty positive feedback, with multiple posts getting around 100 upvotes on r/sideproject.
I've never done this before, but I shared what I created with my friends from college by posting on *dun dun dun* Facebook. They were actually really supportive, and helped me spread the app! I should have known, they're my friends!
I actually found this pretty cool service called loom and recorded a personal thank you to all my friends that signed up. It was very sweet. They were happy to see me, and I was happy to get the chance to say something nice to them. It also encouraged them to share it with their friends!
Now, WeWatch has around 400 users, which is many more users than I've ever had on anything I've made! So that's also a really cool feeling :)
Last weekend, my partner had her friends stay with us over the weekend. We needed to find a movie to watch. This was my chance! I was so excited!
"Let's use WeWatch!"
"No, it would take too long. Let's just watch Space Jam."
☹️ Guess I still have some improvements to make.
If you liked this, follow me on Twitter!