My Wordle results, a Sinatra/Parklife app
Like many others last year I fell into a daily Wordle routine – I also collected the results. It’s taken a while but I’ve turned the data into a microsite of my Wordle results. It’s a Sinatra/Parklife app and a good (albeit tiny) example of using Parklife in the wild showing just how incredibly easy it is to take a standard Sinatra app and turn it into a static production build.
Whilst Ruby and its wealth of web libraries make it easy to create a web site the question of deployment isn’t as simple as it used to be. Back when Heroku had a free plan it would have been a prime choice for a little app like this and even though the content is essentially static it would still be a good match, but $60/year is enough of a nudge to reconsider whether essentially static should be actually static. I suspect this is a common situation.
The site itself is custom content and code that wouldn’t easily be squeezed into a more traditional blogging engine which is one of the reasons I think it’s a good example of why you should use Parklife and demonstrates the space that Parklife fills in the Ruby world of static sites.
In the past I’ve generated a number of custom static sites with Ruby, each time getting to know ERB and each one resulting in its own unique build process using Rake, Make, or some other bunch of scripts to generate HTML. They all worked fine and were satisfying to build but it’s not a sustainable, repeatable approach and it isn’t suitable for everyone. Parklife completely changes the landscape in this regard because it allows you to use any of the great existing frameworks you already know and lets you follow the same familiar approach as all your other Ruby apps – did I mention your preferred development flow remains completely unchanged.
My Wordle results are stored in a text file (currently 467 results, 2924 lines) that’s parsed into Result objects and served by a Sinatra app (a single route). At first I was surprised just how large the HTML was (its file size) and made a scattering of changes in an attempt to reduce it before finally switching to Phlex which doesn’t output additional whitespace (you could say it uglifies by default…). The final piece was to add Parklife and run
parklife init --sinatra --github-pages to generate everything required to turn the app into a static site including a GitHub Actions workflow to build and deploy to GitHub Pages. Oh and the repo is public on GitHub.
Hopefully this example will encourage you to avoid dependency hell and use Ruby for your next static site.