Project

DrumRole

Screenshot of DrumRole website showing how you can search for jobs.

During the pandemic I wanted to do something positive, so I designed and built DrumRole - a site to help people find a job at a company putting people and the planet first.

I selected companies to add to the site, then each day the app collected jobs by scraping the companies' career site. DrumRole was then updated, adding new jobs and removing old ones. Once this was done it sent me an email of the results.

Design

Unlike most job sites, only select companies were included on DrumRole. There were no ads, no recruitment agents, and no spyware or cookies.

DrumRole was different, and I wanted the design to reflect this.

I emphasised both companies and jobs, and created a mid-century inspired style and colour palette to stand out from the usual white with red or blue accents. And the illustrations were not only unique, but helped portray the focus on putting people and the planet first.

Many people search for jobs on their phone, so making the site look good at a variety of screen sizes was important. I achieved this using flexible layouts and fluid space and typography (you can read more about it here). I also created individual pages for common searches to maximise the site's footprint for search engines.

Tech Stack

  • Ruby on Rails

  • Hotwire

  • CUBE CSS

  • SQLite

  • Hosted on Fly.io

Technical

After the release of Hotwire, I chose to build DrumRole in Ruby on Rails as I could build a modern full-stack application with one framework.

Turbo frames and streams helped make the app feel fast and responsive. And for finer details, like search-as-you-type, I used Stimulus.

A key part of the app was collecting jobs from company career sites. This area of the app fell out of the scope of the Rails MVC architecture, so I used object oriented programming principles and techniques to scrape the target pages, extract the data I needed, save it to the database, update existing records, and create a report of the results.

A few of the key libraries, gems and services I use are:

  • Phlex components
  • RSpec
  • Solid Queue for background and scheduled jobs
  • Sitepress for static pages
  • Devise for authentication
  • ScrapingBee (web scraping)
  • Postmark (emails)
  • HoneyBadger (application monitoring)
  • VCR for HTTP interaction tests

The site was hosted on Fly using Docker. Originally I used a PostgreSQL database, but in an effort to simplify the infrastructure needed to run the app I switched to SQLite.

SQLite was a good fit for DrumRole because it was read heavy. Using Fly I was able to persist the database between deploys.

Screenshots

DrumRole in action:

The DrumRole home page:

DrumRole homepage.