Get your Rails app off the ground, fast

Limestone

Limestone is a boilerplate SaaS app built with Rails 5 and allows for an opinionated integration with NPM using webpacker. The opinions of this boilerplate stop short of choosing a front-end framework like React or Vue, so you can use what you like. This is a work in progress.

The Stack

The gemset has been chosen to be modern, performant, and take care of a number of business concerns common to SaaS.

  • Administrate
  • Bootstrap 4
  • CoffeeScript
  • Devise
  • Discard
  • Flipper
  • HAML
  • jQuery
  • Postgres
  • Pretender
  • Pundit
  • Rspec (w/ shouldamatchers, databasecleaner)
  • Searchkick
  • Shrine
  • Sidekiq
  • Simple Form
  • Stripe (w/ stripe-ruby-mock, stripe_event)
  • Turbolinks 5

Features

  • Trial begins upon registration without credit card.
  • Subscription management. Card update form and cancel account button.
  • Emails for welcome, billing updated, invoice paid, invoice failed and trial expiring. All except welcome are controlled by Stripe webhooks.
  • Invoice PDF attached to invoice paid email.
  • Mail sends through Sidekiq with deliver_later. Devise mailing also configured for Sidekiq dispatch.
  • Direct uploading to S3 with ActiveStorage. Lazy transform for resizing. Demonstrated with user avatars.
  • Icon helper for user avatars with fallback to circle with user initials. Icon helper for font awesome icons.
  • Administrate dashboard lets you CRUD records (ex: users). Easy to add more and customize as you like. Visit /admin/.
  • Impersonate users through administrate dashboard.
  • Pretty modals using bootstrap integrated into rails_ujs data-confirm. Demonstrated with cancel account button.
  • Banner with a link to billing page users that are past due.
  • Opinionated search integration using Elasticsearch via Searchkick. Gem is in place but integration is up to you.
  • Feature control using the flipper gem. Demonstrated with public_registration.
  • 86% RSpec test coverage.

Roadmap

  • In-browser image cropping using jcrop or the likes.
  • Custom error pages.

Notes

  • RSpec controller tests have been omitted in favour of requests tests.
  • You can run tests locally with docker-compose run website rspec

Getting Started

  • Install Docker
  • Customize .env from .env-example
  • run docker-compose run webpacker yarn install --pure-lockfile to install all node modules. See issue #3 about this.
  • run docker-compose up --build to create and run the various images, volumes, containers and a network
  • run docker-compose exec website rails db:setup to create DB, load schema and seed. Seeding will also create your plan(s) in Stripe.
  • Visit localhost:3000 and rejoice

Bonus points

  • Login as the admin user that was created (from .env)
  • Visit /admin/flipper
  • Create the feature public_registration as a boolean and enable it. Now anyone can register :clap:

Setting up production

A wiki will be written about this.

Jun 08
Jun 09
Jun 10
Jun 11
Jun 12
Jun 13
Jun 14
Jun 15
23
24
25
Stars
Jun 08
Jun 09
Jun 10
Jun 11
Jun 12
Jun 13
Jun 14
Jun 15
4
5
6
Forks
Jun 08
Jun 09
Jun 10
Jun 11
Jun 12
Jun 13
Jun 14
Jun 15
0
1
2
Issues