Giter VIP home page Giter VIP logo

speedrail's Introduction

Speedrail

a Rails 7 template by @ryanckulp, created to ship SaaS apps quickly.

learn to build 3 projects with Speedrail at 24 Hour MVP, or check out the premium documentation.

Speedrail features

  • rich text blog CMS
  • embedded subscription payment portal via Stripe Checkout
  • built-in referral marketing via Rewardful
  • admin panel with Tailwind CSS via Active Admin
  • user authentication via Devise
  • A/B testing with Split
  • design via Flowbite and Tailwind UI
  • SEO toolbelt via metamagic
  • responsive and mobile friendly navigation
  • beautiful code coverage GUI via SimpleCov and TailwindCov
  • rename your app in 1 command with Rename
  • debugging with Better Errors
  • production-ready DB with Postgres
  • easy API requests with HTTParty
  • Postmark for transactional emails, letter_opener for local preview
  • script tag GUI (for 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
  • interactive charts via Chartkick
  • automated testing via GitHub actions + PR status check
  • Rubocop for code style enforcement and linting auto-fixes

Installation

  1. clone the repo
  2. speedrail/bin/speedrail new_app_name
  3. inspect, then save/close the generated credentials file
  4. cd new_app_name

For detailed, step by step tutorials to using Speedrail, get lifetime access to the Speedrail Docs for a one-time fee of $49.

Development

bin/dev # uses foreman to boot server, frontend, and bg job queue

To sync your project with the latest Speedrail improvements:

# one time only
git remote add speedrail https://github.com/ryanckulp/speedrail.git

# when you notice Speedrail updates on GitHub
git pull
git fetch speedrail
git merge speedrail/master --allow-unrelated-histories
git checkout -b speedrail_updates
git add .
git push speedrail_updates
# use GitHub UI to handle conflicts

Testing

# headless
bundle exec rspec # run all tests inside spec/
bundle exec rspec spec/dir_name # run all tests inside given directory

# headed (in a real browser)
HEADED=TRUE bundle exec rspec

Code Quality

clean code keeps projects manageable as they grow in complexity.

rubocop # checks your code against Ruby styling standards and calls out issues
rubocop -A # automatically fixes issues, can lead to false negatives
rubocop -a # automatically fixes "safe" issues, less aggressive than -A (uppercase)

Rubocop is an optional feature, however it runs automatically during GitHub CI checks. if you don't want to enforce the Rubocop style guide, simply disable the Rubocop Check step inside ci.yml.

Contributing

anyone is welcome to submit a PR with improvements of any kind.

speedrail's People

Contributors

5andu avatar bsierakowski avatar dependabot[bot] avatar digitalwestie avatar jro7 avatar matevzgolavsek avatar niklasbabel avatar preswick avatar ryanckulp avatar stets avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

speedrail's Issues

Suggestion: Add confirm_token logic

hey @ryanckulp, I'm starting a new project with this template and I think it'd be nice if speedrail had the confirm token logic to confirm users' emails from the founder hacker course.

What do you think?

happy to open a PR for it

User Who Hasn't Finished Onboarding Cannot Subscribe

I found a bug for users who haven't started a trial or where user.finished_onboarding? == false who try to subscribe from the My Account page

Steps to Replicate

  • Sign Up, get redirected to /subscribe route
  • Do not start the trial, instead click Account or navigate to /account route
  • Click Manage

The browser hangs on this screen:

image

Notes:

I believe this has something to do with unsafe URLs, but billing_portal_controller.rb has allow_other_host: true set, so it should work.

However, after clicking Manage, the stripe checkout URL is cut off after the # "hashtag character". Grabbing the real session URL from console and navigating directly to it works fine and loads the checkout.

Session URL has a format like:

https://checkout.stripe.com/c/pay/cs_test_<long_string_of_characters>#<another_long_string>

I tried using gsub on the session.url to substitute the # hash sign with %23 URL encoding, but that didn't work either.

Happy to open a PR if I know what the cause of this is

planning Speedrail v2.0

fixes / improvements

  • documentation (Devise customizations, Stripe billing sync, admin panel, Turbo)
  • move + expand these deletions to new Docs portal
  • separate Landing views from Pages and make partials for features/pricing/etc
  • Hatchbox server setup guide (+ CLIs for logging, rails c, etc)
  • Tailwind components vs copy-pasting dozens of classes
  • email validations (ignore disposable, prevent bots via @niklasbabel)
  • test coverage automation
  • honeypot signup forms to prevent spam
  • replace ENV with Rails native secrets
  • BlogPost scopes, statuses as enums, layout, Turbo-fy

new stuff

  • blog newsletter signup (BlogSubscriber table) as a widget (partial) for mobility
  • custom generators (Stripe Elements billing mode with 2 plans, what else?)
  • ability to cancel deploy if tests fail (proper CD* in CI/CD)
  • improve Scaffold generators to reduce cruft + match Speedrail styles
  • test coverage automation / GUI (via gem + docs)
  • referral program via Rewardful
  • Webmock + VCR or similar mock library
  • script tags UI
  • Mail logs (+ editor?) with HTML support
  • A/B testing via Split
  • admin panel with Tailwind
  • impersonation via Pretender

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.