Let’s Build: With Ruby on Rails – Event Scheduling App with Payments

Welcome to my next installment of the Let’s Build: With Ruby on Rails screencast series. After a bit of a hiatus, I’m back building apps with Ruby on Rails. My goal is to learn in the public as well as teach those interested in doing the same.

Much of the content you see out there about Ruby on Rails is quite dated so this series and more is an attempted to get things up to speed when it comes to new technologies, conventions, configurations, and more.

Source Code

Download the source code

About the build

In this seven-part series, I will build an app called Consultly. The app primarily deals with event scheduling but could be extended a great deal.

Any new user can sign up for free but will be charged if they are interested in scheduling a consultation session (with the admin of the app). All data pertaining to each new session will be relative to the currently logged in user. The primary focus is to provide an entrepreneurial consultant a platform to receive payments, communicate with clients, and book sessions without exchanging a lot of emails or phone calls.

I’ll add support for an admin user role to manage users, see upcoming sessions that have been booked, as well as manage the application.

Topics of discussion include:

Gems we’ll harness

It’s probably easier to share my Gemfile so find the gems we use below. Note: Some of these come bundled with my Kickoff – Tailwind application template.

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.3'

gem 'rails', '~> 5.2.1'
gem 'sqlite3'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
# gem 'mini_racer', platforms: :ruby
gem 'coffee-rails', '~> 4.2'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'redis', '~> 4.0'
# gem 'bcrypt', '~> 3.1.7'

# Use ActiveStorage variant
# gem 'mini_magick', '~> 4.8'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.1.0', require: false

group :development, :test do
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

group :test do
  gem 'capybara', '>= 2.15'
  gem 'selenium-webdriver'
  gem 'chromedriver-helper'
end

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

gem 'devise', '~> 4.4', '>= 4.4.3'
gem 'friendly_id', '~> 5.2', '>= 5.2.4'
gem 'foreman', '~> 0.84.0'
gem 'sidekiq', '~> 5.1', '>= 5.1.3'
gem 'tailwindcss', '~> 0.2.0'
gem 'webpacker', '~> 3.5', '>= 3.5.3'

# consultly specific
gem 'simple_calendar', '~> 2.3'
gem 'trix', '~> 0.9.9'
gem 'stripe', '~> 4.0', '>= 4.0.2'

group :development, :test do
  gem 'better_errors'
end

Following along

I think the videos do a much better job as a step by step guide when following along with this build. Being that it covers a great bit of detail I invite you to watch and follow along on your own. Some folks prefer written format and I can relate but I honestly ran out of time on this one. If you would prefer a written format please leave a comment below expressing so.

The Videos

Watch the seven-part Let’s Build: With Ruby on Rails – Event Scheduling App with Payments series below:

Part 1

Part 2

Part 3

Part 4

Part 5

Part 6

Part 7

The Let’s Build: With Ruby on Rails Series So Far