For the first project in Flatiron School's Software Engineering Bootcamp, students are asked to build a Command Line Interface (CLI) to an external data source. The CLI should be composed of an Object Oriented Ruby application, and demonstrate knowledge gained during the Ruby Module of the program.
For my project, I scraped data from Wine Spectator's list of Top 100 Wines of 2020 and created an app that allows users to interact with the information provided.
PLAN
Being that this was my first full-scale project build, I spent a considerable amount of time in the planning phase. I studied the requirements, watched live build videos, and explored code from other projects to visualize how I wanted to structure my own.
REQUIREMENTS
- Provide a CLI
- CLI application must provide access to data from a web page
- The data provided must go one level deep - where a user can make a choice and receive detailed information on their selection
- Use strong Object Oriented design patterns - data should be stored in a collection of objects, not hashes
OUTLINE
The goal of the Top 100 Wines CLI App is to output a numbered list of wines by rank, allow the user to select a wine that they're interested in, provide the details of that wine, and then either loop back to the list or exit the program based on user input.
BUILD
After creating the skeleton of my application (bin files, gemspec, environment, etc.), I focused on the structure and responsibilities of my Class files.
SCRAPER CLASS
The Scraper Class is responsible for scraping data from the Wine Spectator website.
WINE CLASS
The Wine Class is responsible for creating and storing wine objects.
CLI CLASS
The CLI Class is responsible for all operational functionality. In addition to listing the wines numerically by rank, I implemented a method asking the user which group of wines they would like to view in intervals of 20. I also utilized the Colorize gem to add some visual depth to the program.
EXECUTE
The video below demos the app at runtime.

Top comments (1)
When developing a Ruby CLI project centered on Wine Spectator's Top 100 Wines, prioritize creating an intuitive user experience that allows individuals to delve into rankings, geographic origins, types of grapes, and tasting notes directly from the command line.
The most engaging aspect is enabling users to stumble upon wines they may have otherwise overlooked. From a wine enthusiast's perspective, rankings serve as a valuable initial reference point, but their usefulness is amplified when combined with the ability to browse a diverse range of wines. This is where retailers like RoyalSpirit prove invaluable, as they enable wine aficionados to explore various styles and regions once they've identified something of interest on a list.
An effective wine application should go beyond simply showcasing rankings, instead guiding users in their search for a new favorite wine.