DEV Community

Ricardo Sueiras for AWS

Posted on

Building a tool to collect audience feedback in real time

Doing live demos and coding is one of the most fun (if a little nerve wracking) parts of the job of a developer advocate. I have been doing a series of talks called "From Zero to shipped in 30 minutes" where I start with nothing but a blank IDE, and then attempt to build a working application in the allotted time.

Frequently I want to get feedback, input, or ideas from the audience. Tonight was a good example, I decided I would try and build a Wish List web application - it is coming up to Christmas after all, and it was top of mind. I wanted to get some audience participation, asking them to provide me with some links that I could use to test the app out (and maybe even get some good ideas in the process!)

There are many ways I could has asked attendees to provide that, but they all seemed very inefficient. I was thinking about this on the train journey to the event, and decided I would try and build something their and then. This blog posts outlines how I built a very simple, but effective too to help with audience participation. It is a good start, and I will try and build upon it with new features. Of course this was all possible thanks to my good friend and trust companion, Amazon Q Developer.

Using /dev to build the application

As this was going to be a simple application, I decided I would use Amazon Q Developer Agent for software development to create the initial code. I came up with the following outline of a prompt that I supplied to Amazon Q Developer via the chat interface:

I want to create a simple application that I can capture audience feedback in real time. It must

- use a Python web framework (do not use Django)
- provide a feedback link that uses a simple web interface to allow people to submit a simple message
- generate a QR code so that I can share the feedback link
- provide a messages screen that displays all the messages that people have submitted
- capture messages in a local json file that is loaded/updated as the application is stopped or started
Enter fullscreen mode Exit fullscreen mode

After about 6 minutes, I have some very decent code that provides a homepage that displays a QR code, and then a separate message screen for entering feedback. After installing the requirements (/dev automatically created this for me) I had the application up and running. After a quick test to make sure it worked as intended, I realised I wanted to make a few improvements.

Improving the initial code

The first improvement was to optimise it for mobile devices. Opening up the relevant file (message.html and feedback.html), I used the following prompt in the Amazon Q Developer chat interface:

Optimise the code for mobile devices

Repeating this prompt against both those html pages resulted in much improved code that looked way better.

Feedback Application

After testing the application I was ready to deploy it.

Deploying this to AWS

I did not want to over engineer the deployment - I needed something quick and simple. When I asked Amazon Q:

What is the easiest way to deploy this on AWS

I was guided towards deploying this using AWS AppRunner. If you are not familiar with AWS AppRunner, it is one of the simplest ways of running containerised application. I followed up with some additional prompts, such as

  • Create a Dockerfile for this application
  • Create a script that will build and push a container image to Amazon ECR
  • Provide step by step guide on using AWS AppRunner to deploy this

And I was quickly helped in creating an ok Dockerfile*, a script that took care of all the heavily lifting (build.sh) and before long, I had the application up and running on AWS AppRunner.

*I did encounter the issue with my initial attempt in that as I was building these locally on my Arm based Macbook M1, the containers would fail as AWS AppRunner does not appear to support Arm based container images. Luckily in 2 seconds Amazon Q told me how to fix this.

I have a hosted DNS zone on Amazon Route 53, and this made it super simple to hook up a custom domain to the feedback application.

Automated updates

I had to make a few changes to the code, and every time I updated the container image via the script, AWS AppRunner would automatically redeploy the latest version. This was super awesome, especially when I was hotspotting of my iPhone when trying to do this.

Deployed application on AWS AppRuner

Conclusion

That's all folks, in this blog post I walked you through how you can develop a simple tool to collect feedback from your audience, in less time than it took for my train to arrive at its destination. I love the way that Amazon Q Developer allows you to build anything in such a short amount of time.

If you want to try this for yourself, you can grab the code at the GitHub Repo here

You can try Amazon Q Developer for free today, by signing up for a Builder ID. You can also check out my other posts on community.aws, as I have been sharing a lot of tips and use cases of how I am using Amazon Q Developer. You can also keep up to date with all the new features and improvements of Amazon Q Developer by checking out the changelog.

Top comments (0)