Op(inionated) Cart
Opinionated cart engine for Ruby on Rails
OpCart makes things simple through inflexibility and lack of features.
OpCart assumes you are using:
- Stripe for payments
 - Rails 
~> 4.2.0 - Postgres 
~> 9.3 - Devise 
~> 3.3for authentication - ActiveJob with a job queue configured
 - SSL already
 
OpCart assumes you don’t:
- have hundreds of products and want search indexing
 - need promotion/coupon support
 - need to track inventory
 - charge for shipping
 - have complex products to sell (e.g. variants like different sizes and colors)
 - like Spree or other open-source carts
 
Installation
Add op_cart to your Gemfile:
gem 'op_cart', '~> 1.0.0'
Copy the migrations and run them:
rake op_cart:install:migrations db:migrate
Add a checkout route to your config/routes.rb:
Rails.application.routes.draw do
  mount OpCart::Engine => "/store"
  #...
end
When updating OpCart, you will need to run rake op_cart:install:migrations again.
Data Models and Classes
- Product
- name
 - description
 - image_url
 - price (in cents)
 - allow_purchases (to hide product and disable sales)
 - charge_taxes
 - user_id (creator)
 
 - Order
- status
 - total
 - tax_charge
 - shipping_address_id
 - user_id
 
 - Line Item
- unit_price
 - quantity
 - price
 - sellable_snapshot (object freeze)
 - sellable_type
 - sellable_id
 - order_id
 
 - Payment
 - PaymentGateway
 - Cart (cookie?)
 - Address
 - Shipment
 - Tax Calculator