Specify 7 Component Architecture

For the design of Specify 7, we made a clean separation of front-end (FE) and back-end (BE) components and functions. The separation provides flexibility for technology and code evolution because it enables parts of the FE or the BE to be improved, replaced or extended independently. The FE is developed in JavaScript utilizing jQuery for the user interface, Backbone.js for the application architecture framework, and RequireJS for module management. These are open source, large community-supported libraries for Javascript web application development. The FE works in any modern browser. The BE serves data and enforces business rules for data integrity through a RESTful API Service for reading, writing, and deleting data. Data are described in JSON (JavaScript Object Notation) for the exchange between the JavaScript FE and the RESTful service.

The diagram shows the Specify 7 web architecture using a RESTful API on top of the Django web framework for Python on the server BE, hosted behind an Apache web server. For data queries beyond the capabilities of the built-in Django ORM, we used the SQLAlchemy library. The BE file system and MySQL database engine are supported for Linux servers but in principle could be hosted on Windows, MacOS or other operating system supported by MySQL and Python. Cluster and cloud platforms are immediately available for this standard Linux environment, including Amazon’s EC2 as pre-made machine images (AMIs) as well as hosted images from a number of other vendors. We use virtual machines from Digital Ocean for our Consortium’s SpecifyCloud collection database hosting. We are also using Docker technology for Specify 7 installations, SCC members receive additional configuration information and consultation for using Docker.

With its modular architecture, extensible data model, open-source licensing, web services integrations, highly-configurable user interface, exquisitely customizable labels and reports, an option for cloud hosting, and the Specify Consortium’s support, Specify 7 is an inspired option for biological collections computing.

Specify 7 source code and installation instructions are at: Specify Collections Consortium · GitHub.

If you would like to know more, e-mail us at: support@specifysoftware.org