Open source packages - Quarto, Shiny, and more Company, events, and community

Shiny Wordle Word Journey

portrait of Tracy Teal in front of an abstract painting
Written by Tracy Teal
2022-03-28
Three wordle rows that spell out build, shiny, and words

A couple of weeks ago, Winston Chang showed how to create a Wordle app in Shiny in a four-part video series. Go watch the video series to see how he did it! Also, follow along on the first steps to start with Shiny in this tutorial.

In our house, we like puzzles and Wordle. My family noticed while playing the deployed version that there were some words that, while amusing to younger children, were not necessarily what we were expecting to be included. So, with Winston’s support, we decided to take a look at the word list and see if we could make some updates.

I’ve used GitHub and R, so I could start from there. I started with a few steps:

  • Fork the GitHub repository
  • Clone the forked repository to my computer
  • Open the file ‘wordlist.R’ in the RStudio IDE

I was expecting to just modify a word list, basically by parsing and modifying the text file ‘wordlist.R’, putting in a pull request and waiting for it to be merged by Winston to see our changes. But, of course, we didn’t want to wait that long, so we decided to try deploying the Shiny app on our own instead.

First, we wanted to see if we could deploy it as it is without any modifications. I saw that Winston’s was deployed at shinyapps.io, so I too went to shinyapps.io to get set up.

Then, I went back to my RStudio IDE to try to deploy a Shiny app.

I thought I’d try the demo one first to make sure things were working, so I did File -> New File -> Shiny Web App:

RStudio's file menu opning up a Shiny Web App

That brought up a ‘New Shiny Web Application’ window. I named the it ‘shiny-demo’ and clicked ‘Create’.

New Shiny Web App window in RStudio with shiny-demo as the name of the new app

That opened a window with the file ‘app.R’ that told me to click the button ‘Run App’, so I did!

New app.R file letting you know that this is a Shiny app that you can run by clicking Run App

And up opened a Shiny app on Old Faithful!

Old Faithful Geyser Data app showing a histogram of the data and a slider for number of bins

Great, so we had it working locally. We’re basically the coolest now; we did something interactive! Now, could we deploy it to shinyapps.io to share this exciting app with the world?

I went down to the console, first loaded the rsconnect package, and then deployed the app.

library('rsconnect')

(If you forget to load the library, fear not, it won’t work, so you’ll be reminded that you need to do it).

deployApp()
Text shown when deploying an app letting you know the process of being uploaded to shinyapps.io

Then 🎉! There it was at https://tracy-teal.shinyapps.io/shiny-demo/.

Empowered by deploying something, we wanted to go on to deploy the Shiny Wordle app. If we could, it would give us all the power to create whatever word lists we wanted!

I went back to my ‘shiny-wordle’ directory:

  • Set the working directory to that folder using setwd()
  • Open the file ‘app-final.R’ and click ‘Run App’

It opened locally! It was working!

Now to deploy.

I tried deployApp('app-final.R').

That didn’t work. It said Error in deployApp("app-final.R"):

"/Users/tracyteal/Documents/git/fork/shiny-wordle/app-final.R must be a directory, an R Markdown document, or an HTML document."

So, I renamed app-final.R to app.R and ran:

deployApp()

(But I could have done shiny::shinyAppFile("app-final.R")).

Then, it started and took awhile and then success!

There my app was at https://tracy-teal.shinyapps.io/shiny-wordle/.

Blank Shiny Wordle app

Now to try editing the files.

We edited ‘wordlist.R’. The vector words_common contains the set of words that are chosen to be the correct ones. So, rather than a whole list, we put in just a few words that we wanted to have as the answers.

wordlist R file open to show the words common vector of correct words

If you want to add new words that aren’t necessarily actual words, like people’s names, you need to add them to both the words_common and words_all lists.

wordlist R file open to show the words all vector of correct words

Then, we redeployed by running deployApp() again.

We had to hit ‘y’ when it asked if we wanted to ‘Update application currently deployed’.

It ran and then, 🎉! We had our very own Wordle with our very own words!

A customized word list could be a very good gift for family or friends. ☺️

We went on to modify the whole word list, and put in that PR for Winston.

We learned a lot and are excited to try more. We were super excited to get an interactive app up and running so quickly.

So, with the Shiny app, we’ll keep working on the words, and maybe even a version with a different number of letters, as long as we can find a wordlist…

portrait of Tracy Teal in front of an abstract painting

Tracy Teal

Open Source Program Director at Posit, PBC
Tracy Teal has been working with open source communities as a developer, instructor and project leader throughout her career. As a PhD student at Caltech and then as an Assistant Professor in bioinformatics at Michigan State University, she saw that the bottleneck to discovery was no longer data production, but the skills and perspective to work with data. She went on to co-found Data Carpentry to scale data training along with data production and then became Executive Director of The Carpentries, continuing to develop open curriculum and an inclusive instructor community. She is currently the Open Source Program Director at Posit where she is passionate about supporting open source developers and expanding access to tools that help people use data to answer the questions that are important to them.