Inspiration
A few months ago, my wife and I were discussing current events and the current political climate. We don't often do this since it terribly depressing. While discussing the premise of gun control vs gun rights, it was apparent that too many people fall under the "all or nothing" category when forming their opinions of policy. The inspiration of Impact is Incremental spawned from this discussion: Even if you can't solve a problem entirely, doing something/anything MUST be better than nothing? Regardless of how insignificant it may seem. While this project isn't tailored to the gun debate in the US, it motivated me to put this premise to action. Perhaps a little meta, what if making a positive impact on the environment is itself an incremental step toward addressing other societal issues?
What it does
An Impact is something a user did, saw someone else do, or is planning on doing. I have created a basic site to allow users to report their impacts. The interface is incredibly basic, and this was intentional. Keeping the theme of III to be all about "quick wins", I did not want to bog users down recording their impacts by having more than the bare minimum amount of information.
The Alexa skill acts as a reader to the API I created to drive the site. Through my own use of Alexa, I find that "less is more" is especially true for voice interfaces. By hearing what other users are doing, the hope is that III will either inspire users to try some of the same simple Impacts, or to encourage users to simply try something/anything.
How I built it
The skill(ASK SDK) and API (express) are lambda functions provisioned for dynamoDB. The client was built with React and hosted on S3. I used ClaudiaJS to deploy the skill and API to lamdba (by far the best discovery I made on this challenge that I was unaware of during LifeHacks or Kids). Using CloudFront, Route 53, and Certificate Manager, I was able to serve my static React site over SSL, since no one really wants to use insecure sites in the current digital age.
Challenges I ran into
Much like every Alexa skill I have developed, the biggest challenge was the time it took to debug new code. Because I didn't have a local environment properly setup, I often had to deploy the code, and test it with the Alexa simulator. When new code failed, I had to go back and over log any location it had the opportunity to fail. It was a slow process.
Much like my other Alexa challenge entries, I am still not a fan of the dynamoDB API for node. The errors are cryptic, the available function feel limited compared to other ORMs I have used in the past.
Accomplishments that I'm proud of
I went all in on on AWS for this project. With the exception of my domain name, the entire solution is made possible by the various offerings. It is also the first multichannel product I have developed end to end. As an iOS developer by trade, I do not have opportunities to dip my toe into front end, API, or networking tasks that were required to glue this all together.
What's next for Impact is Incremental
As mentioned above, being an iOS developer, I think a simple mobile application with a Today extension would be a good fit for what III is trying to accomplish.
This being a hackathon, what I have built is very MVP. With more time, I would like to add more feature to the client to provide opportunities for more engagement/discovery of other impacts. A basic voting system would allow popular Impacts to be surfaced in the Alexa skill for example.