Inspiration

I created the initial skill to accompany my website. However, this would require my users to have their laptops or phones in hand. I wanted to give my customers a hands-free, voice options to get movie reviews. Expanding my user base to customers with smart home devices. They can get the latest reviews, without opening their laptop. Also, this can drive traffic to the initial site.

What it does

I created the skill to give users the last 4 reviews I posted in the major website categories - In The Theater, Made for TV, Must Buy, Video on Demand. However, I realized new TV movies come out every week. And during the holidays, more than 5 would come out at a time. So, some reviews would never be on the skill. First, I decided to add a searchable Library. Even if movie reviews were never displayed on the Made for TV section, it can be added to the library, giving the users an exclusive review. I go In the Theater often. So, I receive Early Screening passes frequently. These passes allow me to see movie 1 day to 6 months before the movie come out in theaters. These reviews will be in the Early Screening review section to my skill. Now, users can get reviews for movies not in the theater. Early Screening and the Library will only be accessible to users with a Premium Access subscription.

How I built it

The code is based in NodeJS. The code is zipped and sent to the designated Lambda function. Most of the information is housed in JS files. However, the Library is stored in Aurora DB. And all images are in a public S3 bucket. Once the skill is approved, CodePipeline will be used. It will listen for a git push signal. Once signaled, CodeBuild will build the skill and push it to a test Lambda. It has a manual testing step, so I can view and hear what Alexa is saying and showing to the customer. Once approved, the code is pushed to the production Lambda.

Challenges I ran into

When I decided to add the library, I had to determine the best database. Since the code would require a lot of searches and bring back 0 to many results, a relational database is the best option. So, I choose RDS. I put my Lambda and RDS in the same VPC and the search worked fine. However, the ISP did not. I didn't realize that my Lambda could not be in a VPC for the ISP to work. So, I put a message in slack and it was suggested that I use AuroraDB. Moving the database wasn't a lateral movie since my RDS was using MySQL 5.7 and Aurora uses 5.6. So, I used a SELECT statement to print everything to a file. Then created a script to read that file and created insert statements. I fed those insert statements to AuroraDB. With a working database, I was able to remove my Lambda from the VPC and the ISP worked fine.

Accomplishments that I'm proud of

For six months I wanted to create a library and have ISP. But I always made excuses. "I have to work", "I have movies to review", "I need to update my site". This hackathon removed the excuses and put a due date on my work. I was gently pushed into getting it done. I am truly proud it is complete.

What I learned

I learned a lot about AuroraDB. I never considered using it because of the price. However, it's worth the price because it reduces a lot of headaches. I learned more about customer experience with this project. My past Skill had very basic functionality. Now, I was able to add full sentences to provide a better user experience.

What's next for Premium Access for The Best Darn Girls Skill

On social media, I will get request to review certain movies. Whether it comes from the director, actor, writer, or a fan of the network. For a fee, I want users to be able to request a review in the app. Once the review is complete, I can send the person an alert to let them know their requested review is up.

Built With

Share this project:

Updates