ezMTA
Application Purpose
This application allows research institutions and their contract administrators to easily track pending and executed Material Transfer Agreements. More about this on ezMTA.
Special Features of the Application
- SaaS
- Multiple Accounts
- Multiple Users per Account
- Two roles of users, administrators and regular users
- File Attachments
- Notes that can be sent via e-mail
- Online payments with credit cards
- Billing takes place every 30 days since Account registration
- Each Account belongs to a Billing Cycle Day
- Automatic charge of Account credit card at the billing date
- Multiple price plans
Technologies Used
- Linux distribution (Debian 6)
- Ruby on Rails
- MySQL
- SOLR
- Hosted on Amazon cloud
Ruby on Rails Special Considerations
- paperclip. Used to upload files for attachment.
- remotipart. Allows AJAX file-upload.
- paper_trail. Tracks changes on data.
- Twitter Bootstrap. Front-end framework for faster and easier web development.
- jQuery and jQuery UI
- simple_form. Used to ease the form creation in Rails.
- delayed_job. Used to process asynchronously long running jobs, out of the http request processing cycle.
- cancan. Authorization framework.
- bootstrap-wysihtml5-rails. A WYSISWYG editor for Twitter Bootstrap
- kaminari. Used for pagination.
- Testing:
- RSpec. For Behaviour Driven Development.
- Factory Girl. For factories of objects while testing, instead of using fixtures.
- Database Cleaner. For cleaning up database before every test.
- validator_attachment. Used to check whether specific validators are attached to a model.
- simplecov. For test coverage report.
- capybara. For testing the UI.
- selenium. For testing the UI when it contains javascript.
- jasmine and jasminerice: For unit testing javascript functions.
- capistrano. Used for automatic deployments.
- new relic. Used for real-time process monitoring.
Project Data
- About 2 months
- About 30 models
- About 20 tables
- About 20 controllers
- About 1300 tests
- About 1800 lines of code