Getting the Data

I needed to automatically get information on all the movies coming out, I certainly wasn’t going to be able to manually create the list with associated data, even if I wanted too, which I didn’t.

I needed the list of upcoming movies, the release dates for those movies, all the meta data (title, description, images) and I also wanted trailers for the movies. Although not required and not perfect, trailers are a good way to judge how much I want to go see a movie.

Most movies also have a number of trailers, so this would provide more content to the website, instead of just listing the movies.

Movie Data APIs

There are a lot movie related APIs. Some are better than others, and I’ve worked with The Movie Database API before, so I confirmed they had the data I needed and decided to stick with what I know!

I built a Laravel command that could be run at any interval, currently I have it scheduled to run once per day, but will probably make it run numerous time per day.

The command gathers a list of upcoming movies. For each movie, I also add the list of trailers. TheMovieDB only provides the ID of the YouTube (in most cases) video, so I also ended up having to use the YouTube API to access more information about the video (thumbnail, runtime, publication date).

Building the Website

I had all the data I needed to build the website.

I wanted to keep the website simple, that is one of the my complaints with other sites, they add so much fluff around the movie information that it can be hard to find the information I really want.

For the MUP (Minimum Usable Product) there would be no user registration, everyone would get the same experience. To serve its primary purpose, I wanted a list of new movies coming out, with some help to decided if I wanted to watch the movie or not. This included the trailers, genre, short description and the trailers.

After I shared early versions of the site, with a few people their first request was to be able to mark movies as favorite. This would allow them to maintain a list of movies they wanted to see, so my plans changed to include user registration and favoriting.

Getting the Users

The most effective way of getting users, without spending a lot of money, is to focus on search engine optimization.

I know movies are hugely popular, so the competition is tough, but ranking well for niche search term that people search for a lot but isn’t dominated by the big sites is a good way to position yourself for growth.

I typically use the Google Adwords tools to estimate interest in a particular search term. I start with a general term, in this case simply “movies” or “new movies” and start exploring from there.

I eventually landed on the term “new movies coming out”, which showed about 60K search every month. There are also a bunch of other related terms (with specific dates) that could also provide a good source of users if you rank well for the main term.

Unfortunately the .com for the site was already taken, but just showing a parked site. Most of the other TLD’s where available. Ultimately I landed on newmoviescomingout.us, as I decided that the website would focus entirely on release dates for the US market.

If things went well, I thought I could spin up sites with international TLDs that focused on those countries instead. Given the automated nature of the site, and desire to keep things simple, this seemed like a good approach.

Having all the countries on one site, might eventually help with SEO, but could complicate the interface for the users.

Just targeting a keyword isn’t enough to rank well, there will be some work to do to generate back links, to the site, but it can be done sporadically and when time allows.

Sharing

Photo by Slava Bowman on Unsplash

Another very time consuming part of running a website is sharing content.

Via social media and mailing lists you have to build an audience and feed that audience new content to get them to return to the website, or you will be forgotten.

Having to write tweet and newsletters whenever you have new content can eat up a lot time, not something that fits well with a side project, especially one that I originally built just for myself.

How can we automate this?

Fortunately there are API for all the major social media platforms as well for sending emails. I didn’t however want to spend weeks writing code to integrate with each social media site to share my content, so I decide on a different route.

Social Media

IFTTT is a popular service that allows you to automate tasks. I decided to leverage the work they had already done to help me automate things.

Movies get added to the database at random times long before they are interesting to users, so sharing them immediately is not wise. The trailers however are far more interesting and warrant immediate sharing.

I built an RSS feed for the trailers when they are added to the database. I then used an IFTTT applets to automatically share the content of the feed to both Twitter and Facebook.

Email

My first thought was to create a mailing list and send the same weekly newsletter to everyone. However, as I added user registration and the ability to favorite movies, I thought it would be better to send customized emails to everyone instead.

I opted to use Sparkpost to send individual emails to users instead.

The plan is to send an email on Wednesday’s (time TBD), with the movies coming out in the next week. Since most movies are released on Thursday or Friday this seemed like a good solution.

I wrote some code that iterates over the list of subscribers and queried the database for the list of upcoming movies and those the subscriber (if they are also a user) has favorited. Once the list has been generated it sends the email to subscriber via the Sparkpost API.