Giter Site home page Giter Site logo

stevenkolstad / limestone-accounts Goto Github PK

View Code? Open in Web Editor NEW

This project forked from archonic/limestone-accounts

0.0 1.0 0.0 1.4 MB

Boilerplate Rails 5.2 multitenant SaaS application with webpack and Docker integration. Billing is scoped to accounts.

License: MIT License

Ruby 75.27% JavaScript 2.02% CSS 1.36% CoffeeScript 5.54% HTML 15.33% Shell 0.21% Dockerfile 0.28%

limestone-accounts's Introduction

Limestone Accounts

Codeship Status for archonic/limestone-accounts

Limestone Accounts is a boilerplate SaaS app built with Rails 5.2 and has an opinionated integration with NPM using Webpacker and Stimulus.

Limestone Accounts is multitenant, meaning each account has one subscription and potentially many users through invitations. If you want each user to have their own subscription, try Limestone.

The Stack

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

Features

  • Free trial begins upon registration without credit card.
  • Per-seat billing.
  • 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 user initials. Icon helper for font awesome icons.
  • Administrate dashboard lets you manage records (ex: accounts, users, invoices). 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.
  • Persistent banner with link to billing page for accounts 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.
  • Notifications with ActionCable. See console example in app/models/notification.rb.
  • 88% 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 web rspec
  • Because this is a boilerplate, there are no migrations. Rely on schema.rb and use rails db:setup to create the db and seed.

Getting Started

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

Bonus points

  • Login as the admin user that was created (from .env)
  • Visit /admin/flipper
  • Create the feature public_registration and enable it. Now anyone can register ๐Ÿ‘
  • You'll probably want to change the role enum on the accounts_user model, and the default role in schema.rb.

Setting up production

A wiki will be written about this.

limestone-accounts's People

Contributors

archonic avatar caseyprovost avatar dependabot[bot] avatar

Watchers

 avatar

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.