Specify 7 Documentation

Architecture and Components


To implement Specify for the web, 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 replaced independently for better technology or for an improved implementation. 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 SpecifyCloud collection database hosting.

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 Project’s excellent support–Specify 7 is a wise option for biological collections computing.

Specify 7 source code and installation instructions are at: https://github.com/specify.

If you would like to know more, e-mail us at: support@specifysoftware.org, or call the Specify Project at +1 785 864-4400.

The Specify Software Project is funded by U.S. National Science Foundation grant: BIO/DBI #1565098.
Specify Software Project, Biodiversity Institute, University of Kansas, 1345 Jayhawk Boulevard, Lawrence, KS USA 66045
Phone: +1 (785) 864-4400, Email: specify@ku.edu, Website: www.specifysoftware.org