Sinatra: Liquid Refreshment

For my Sinatra project I decided to create an application for a local brewery that I frequent. The breweries name is Cloudburst, and they release a handful of unique beers every month to a rotating roster of beers both, light and dark, most of which are never to be seen or heard from again. Every year, they have a big birthday bash and invite people to vote for their favorite beer from the past year. The problem is that they have such random names with crazy nonsensical descriptions that it’s virtually impossible to look at a list and remember what you tried, let alone what you liked in order to bring one back for their party. Liquid Refreshment is a sinatra application that I created to solve that problem.

Liquid Refreshment is CRUD in two different parts — first there is a wikipedia style entry at the beer level. Any registered user can create or update a beer (some of the descriptions can be crazy long and nonsensical). A Beer exists entirely on it’s own, but a User can also make a personal Opinion about a beer such as a rating of 1–5 stars and also add in any individual tasting notes that they can refer back to later. Personal Opinions are only visible and updateable to the user that created them. One thing that I wanted to implement in this project is a fuzzy search — I have a lookup upon Beer creation for a matching title and description, but it’s looking for an exact match and therefor not as effective.

This project also tackled the problem of user authentication. I used bcrypt as my engription gem, and users can create/delete accounts as well as update their passwords and usernames. Another item that I would have liked to implement here is a mailer, for 2 factor authentication purposes, and also to get this up on heroku, but I wasn’t able to get it to work on my own out of the box initially, and that isn’t something that is covered in the curriculum. I have mixed feelings about pushing it up now without the missing pieces I covered above as I feel like not having those doesn’t really make this a production worthy app. I also have some questions about general security issues that I may be completely blindsighted to as a new developer, but I guess I will have to save those for another day.




Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

How to increase the page load speed of your website pages and why this is extremely important right…

Hafiz’s EdTech Tools for Teachers

🔥 DeSpace Protocol Announces NFT Collaborations with Major Celebrities

Acceptance Testing With Spring Cloud Contract

Read Medium on your Kindle

How to use gitignore

NLP Shorts — Tokenizer

Post-Mortem Analysis of the Notional Finance Vulnerability — A Tautological Invariant

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Lucid Pixelations

Lucid Pixelations

More from Medium

Process incoming emails in Rails 6 with Action Mailbox : from development to production

Ruby on Rails — Phase 4 Project

The Binding Class (and binding.pry)

Rails 7: Turbo-charging car shopping