My New Side Project
— MovieQuiz — 4 min read
You know how when you go to the movies with your friends and while you're watching the previews, there's movie trivia that comes up? What if you could actually submit your answers and compete with the rest of the audience? You wouldn't have to download an app or even login, you would just have to enter a special URL and you would be in. That's the elevator pitch of my new side project and since naming things is the hardest part about programming, it's going to be called MovieQuiz.
I like this project because the idea is concise. It's easy to describe it and people can immediately see its value. There's also a lot of different applications that could come out of the same project. It could be used in a bar for trivia or it could be played at a house party on a Chromecast, just to name a few.
Motivation
I'm going to use this idea to learn some new technologies that I wouldn't normally use in my day job. SwingAI has a pretty robust stack with some of the latest frameworks, but I want an excuse to play around with some other frameworks I keep hearing about.
I also want to build a web application from the ground up. Every side project I've done so far has just been a static website. I want to go through the process of deciding what database I'm going to use, how my deployment will run, the whole nine yards. My focus is going to be on simplicity. I'm just a one man team. I don't want a complicated infrastructure. I want the ability to focus on just the business logic as much as possible.
There are two frameworks that look particularly interesting: React Native and NativeScript. These frameworks let you write a mobile app in Javascript, and then compile it to iOS and Android. I'd like to see how viable these frameworks are because that means I would be able to build a mobile apps without knowing Swift or the Android SDK. This would be an incredibly powerful skill to know.
I'm going to write about my decisions as I go through them. I'd like to create resources that other developers can use on their own projects. I wrote an article on Medium awhile back that showed how to build a Partial Collapse in Bootstrap 3. It's rewarding to see other people learn from my own content and I'd like to continue that.
Minimum Viable Product
Version 1 of the app is going to be a web application. I don't want users to have to download anything. I know I just mentioned React Native and NativeScript, but I don't want to build a native app for the first version. Also, there won't be a main display screen. Integrating with a movie theater is going to be complicated. I'm not sure if the preview reel is a roll of film, or if it's a digital display. If it is a digital display, can we dynamically change what is projected? These are problems I don't want to worry about right now.
The quiz will be controlled from a mobile phone. There will be a Quiz Master who sets up the quiz. They'll share the quiz URL with the participants. Once the participants are in the lobby, the Quiz Master will start the quiz. The application will take care of the rest of the experience from there.
There will be no user accounts. I don't want there to be any roadblocks between the players and the quiz. The names will initialize as Anonymous01
and so on. The players will have the ability to change their name, but that feature will be totally optional. I'll have to implement an input black list to prevent players from entering profanity.
Each quiz will have a theme. The Quiz Master will select the theme when setting up the quiz. The themes will be along the lines of Action
, Horror
, and other movie genres. The quiz will have a series of multiple choice questions. The players will have a short amount of time to enter each question so they can't look up the answers online.
After each question, the app will display the current leaderboard with all of the participants. The quiz URL will also be displayed so that new players can join during the quiz. Players that join during the quiz will be taken to the current question. The'll start with 0 correct answers and will be at a disadvantage, but they'll be a part of the fun!
At the end of the quiz, the application will display the final leaderboard and congratulate the winner. That will conclude the MovieQuiz experience.
Potential Problems
If you've read this much, then you've probably noticed the elephant in the room.
If you think this is a good idea, why are you sharing it with everyone?
First of all, it's not an original idea. My friend was telling me that Nintendo has something similar. If Nintendo did it, then it must not be a bad idea. More importantly though, ideas are cheap, execution is everything. Instagram is a perfect example of an app that didn't reinvent the wheel, but executed perfectly.
If my idea really gets poached and becomes the next best thing, I'll probably be a little pissed. But didn't the Winklevoss twins make out alright? In all seriousness though, I'm just a one person team with zero funding. The greatest value this project will give me is knowledge and experience, probably. I'll keep it in a private repository, how about that.
I want to share my experience because I think explaining how something works is the best way to know for yourself. I just mentioned that the greatest value I'll probably get from this project is learning more. Blogging about it should amplify the learning process.
In Conclusion
I'm excited to get started! There are a ton of obstacles ahead of me, but I really think the developer on the other side is a much more competent version of myself today.
I'm also personally excited about this project. I've never really done a game that I want to play, let alone share with my friends. The product is something I'm excited about and I want to complete.
Until next time, take it easy.