Alexa is a perfect platform for storytelling and adventure games, and we figured that a path choosing adventure skill would be the right amount of interaction and passive listening for users, hence Story Seeker. We also wanted to open up contribution to the whole community. To do that, we created the companion website where authors can write their own stories and submit them to be added to Story Seeker, creating a dynamic library of user-generated content.
What it does
Story Seeker is a Choose Your Own Adventure type skill for Alexa. Users can purchase tokens using In-Skill Purchasing, and can then redeem these to add stories to their library. Once added, a story can be read any number of times. The skill doesn't come pre-loaded with stories, but relies on user-generated stories. We created a companion site, https://www.storyseeker.fun which provides a graph editing tool for users to write their own stories and let others listen to them.
How we built it
The core Alexa skill component is built using Python and Lambda to handle user interactions. User data, stories, purchases and more are all persisted in a PostgreSQL database, hosted on AWS's RDS system.
The companion builder website was created with Typescript, using the ReactJS framework. The React bundle is hosted on a Flask server on AWS's Elastic Beanstalk. This backend server also manages requests to submit stories.
Challenges we ran into
The sheer scope of this project was a major challenge, especially as we are both full-time college students. Managing the requirements of classes alongside this project proved difficult, although not insurmountable. Another challenge was the lack of experience we shared in this development environment. Neither of us had built an Alexa Skill before, and integrating all the components including the database, server, skill and website was challenging. In addition, the library we chose for rendering the graphs on the website was still in beta and had minimal documentation. As such, we needed to investigate the source code to understand how to implement certain features.
Accomplishments that we're proud of
We're both very proud of the degree of completeness of this skill. We've both worked on several projects in the past outside of school/work, but most start off and don't ever get completed. This skill however is some of the most complete work we have produced together. In addition, working with an entirely new system (Alexa skills) and being able to read through documentation to create a solution without any outside help was a great accomplishment.
What we learned
One of the most important things we learned was the value of perseverance and a timeline. With the knowledge of the due date for the skill, we worked hard early on to get the base of code up and running. Continuing through issues, like the first time configuring Elastic Beanstalk for HTTPS and parsing through the source code of a library taught that working together and toward a common goal can be extremely valuable. We also learned a lot about interaction on Alexa, and how to build skills that seem to naturally fit into typical conversations.
What's next for Story Seeker
The companion website needs some TLC to fix bugs and add some of our desired functionality, like Login With Amazon. In addition, our current library of stories is pretty sparse, and we'd like to both write more quality stories ourselves and advertise for other writers to contribute. We also want to be able to set up payments so that third party authors with high numbers of purchases can get a share of the revenue, further incentivizing contribution to the repository of stories.