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.3
for 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