Paperight, a Shuttleworth funded startup, saw the need for turning anyone or any business with an Internet connection and printer into a print on demand bookstore. They wanted to create micro-businesses around the world by allowing users to purchase the licence fee on behalf of publishers and then download the PDF copy to print and distribute.
Paperight lets publishers earn licence fees from legal print-outs of their books, cutting out expensive distribution and printing costs, and passing those savings on to customers. A customer pays the outlet (e.g. a copy shop) for their print-out, and the outlet uses Paperight to pay the publisher. Paperight makes buying and selling books easier and, overall, more cost-effective for everyone anywhere. Paperight then required the development and design of an e-commerce website that would allow users to purchase these licences and download the PDF’s online. The website needed to be extremely fast, secure and scalable.
We developed an e-commerce website for Paperight.com that allows users to purchase the licence for a book which then permits the user to download the PDF for monetisation and distribution. The site was developed with speed being the key factor. The site is extremely fast and easy to use and saves users time and money and is considerably more cost effective than buying traditional books. This e-commerce website allows users to register and create profiles online. Users can the browse for books and click on a book to view the licence fees. Once a decision to purchase has been made users can then add their books to their cart for checkout. Customers have access to two payment options. Bank transfers and PayPal integration was added to ensure purchasing was executed fast and securely.
From the outset, Paperight.com was designed with the goals of efficiency, scalability, speed and security. This lead to the decision to use Java/JSP (GPL) as the starting point. Apache Tomcat 7 (Apache Licence 2.0)was selected as the Java container, being the industry standard when it comes to ease of setup, and performance.
For the architecture, SpringSource’s Spring Framework (Apache Licence 2.0) was selected. This again was chosen due to its industry standard performance, efficiency, and large support community. The front end runs onSpring MVC 3.1, using Apache Tiles for layout management. This is secured using Spring Security 3.1.
For domain object management and persistence, we chose to use JPA (Java Persistence API), backed by Hibernate, using JTA (Java Transaction API) transaction management to ensure data can be retrieved and persisted reliably.
For indexing and searching content, Apache’s Lucene was the framework of choice. This was then seamlessly integrated with Hibernate, using Hibernate Search (LGPL 2.1). One of the core requirements was the ability to alter and watermark PDF documents on the fly. For this we chose Apache’s PDFBox (Apache Licence 2.0). Its ability to process documents quickly and it’s free, open licence made it the natural choice.
The backend management system requires large amounts of data to be processed, for example for product imports. This should be relatively transparent to admins, and also provide sufficient feedback on failed jobs and errors. To this end, we again chose SpringSource projects: Spring Batch and Spring Integration. Spring Integration is a Java “Spring-way” implementation of the famous “Enterprise Integration Patterns”.
The result is that Paperight.com runs on a stack of 100% free and open-source software, without in any way compromising reliability or performance. It could be argued that our choices actually increased reliability and performance, relative to proprietary alternatives.