maccman / Saasy
Programming Languages
== Welcome to Saasy
Saasy is a Rails app that bills and authenticates, so you don't have to. The idea is that you host Saasy on a subdomain, and communicate with it using SSO/REST protocols. That means you're free to do more interesting coding.
At the moment this is alpha code - use at your own risk
I'd like to thank Made by Many (http://madebymany.co.uk) for supporting this project.
Alex MacCaw
http://eribium.org [email protected]
== Screenshots
- Billing - http://github.com/maccman/saasy/tree/master/doc/Saasy_Billing.png
- Sign up - http://github.com/maccman/saasy/tree/master/doc/Saasy_Signup.png
- Edit profile - http://github.com/maccman/saasy/tree/master/doc/Sassy_Edit_Profile.png
- Example Invoice - http://github.com/maccman/saasy/tree/master/doc/invoice.pdf
== Overview
- Subscription management
- Recurring billing
- Credit card management
- User authentication and SSO
== Features
- No local credit card storage
- Automated billing script that should be run nightly
- Configurable subscription plans (price/duration)
- SSL protection for account creation (and when updating CC info)
- Account can have multiple users, interface for adding more
- Trial ending mailer
- Invoice mailer
- Automated notification and retry of failed renewals
- Plan upgrade/downgrades
- PDF invoices
- Forgot password retrieval
- OpenID support
- Shared secret SSO
- Credit card verification
- REST API for users and subscriptions
== Getting Started
cp config/database.example.yml config/database.yml
cp config/application.example.yml config/application.yml
cp config/subscription.example.yml config/subscription.yml
rake db:schema:load
rake subs:daily
daily
Setup a cron job to run configure application.yml
configure subscriptions.yml
script/server -p 3001
== Gateways
Currently the following gateways are supported:
- Braintree
- TrustCommerce
- PaymentExpress
== Choosing a Gateway
Braintree seems to be a good choice, and they're friendly to Railers to:
== Test transactions
As far as I could tell, Braintree are the only Gateway that lets you test transactions without signing up.
== SSO (single sign on)
I've implemented a simple SSO using shared secrets. have a look at lib/sso.rb for more information.
== Gotchas
I've made some extensions to various plugins/libs which I've yet to push back:
- Extended ActiveMerchant's Braintree and Trust Commerce gateways (see initializers)
- Edited acts_as_state_machine:
- Added named_scope 'in_state'
- Stopped it overriding any states I specified before creation
- Make it update all the attributes on save, not just the state column
- Used the Rails 2.2 version of prawnto (http://github.com/filiptepper/prawnto/tree/master)
- Edited ssl_requirement so that it's disabled in development/test mode.
- Rails error_messages_for now uses spans, instead of divs, to be standards compliant
- Add a float component to Prawn (see initializers)