a Rails 7 boilerplate template by @ryanckulp, created to ship SaaS apps quickly. Learn how to use this at 24 Hour MVP.
features:
- user authentication via Devise
- design via Tailwind UI
- user billing management via Stripe Checkout portal
- safely manage ENV variables with Figaro
- responsive toggle navbar w/ logic for login, signup, settings
- SEO toolbelt via metamagic
- rename your app in 1 command with Rename
- increased debugging power with Better Errors
- seed your DB in seconds via Seed Dump
- production-ready DB via Postgres
- easy API requests with HTTParty
- Postmark for transactional emails, letter_opener for local dev mailers
- script tag component (Google Analytics, etc)
- testing suite via RSpec
- cron job task scheduler (
lib/tasks/scheduler.rake
) - random data generation with Faker
- Heroku <> Cloudflare HTTPS via
lib/cloudflare_proxy.rb
- background job queue via Delayed
- paid subscriptions CRUD via Stripe Checkout
- clone the repo
cd speedrail && bundle
(installs dependencies)rails g rename:into new_app_name
(thencd ../new_app_name
to refresh)- remove
gem 'rename'
from Gemfile, thenbin/setup
to create DB bundle exec figaro install
cp config/application-sample.yml config/application.yml
(put ENV vars here)
bin/dev # uses foreman to boot server, frontend, and bg job queue
troubleshooting
Turbo Drive
lazy-loads pages following form submission, causing script tags at the bottom of following views to not always load.
<!-- add data-turbo=false to form submission buttons if the following view needs a full render -->
<button data-turbo="false" type="submit" ...>Submit</button>
bundle exec rspec # run all tests inside spec/
bundle exec rspec spec/dir_name # run all tests inside given directory
figaro heroku:set -e production # you only need to do this once
heroku git:remote -a heroku_app_name_here # you only need to do this once
git push heroku master # deploys master branch
git push heroku some_branch_name:master # deploys non-master branch
note: Heroku must have 2 'dynos' enabled, web
+ worker
, to process background jobs. if you don't need a queue, simply remove the worker
task from Procfile
and don't invoke .delayed
functions.
to use Postmark for emails, set postmark_api_token
inside application.yml
, then verify your sending domain.