Specify 7 Architecture Overview

Specify 7 Architecture Overview

Specify 7 is an open-source, modular platform for managing biological and geological collections, supporting both on-premises and cloud deployments. Specify features a modern, fully decoupled architecture with a strong emphasis on flexibility, scalability, and maintainability.

Architecture Description

The Specify 7 platform separates front-end (FE) and back-end (BE) concerns, allowing each to evolve independently. The FE is a single-page application (SPA) built with React and TypeScript, styled using Tailwind CSS. This ensures a responsive, highly configurable user experience across all modern browsers. The front-end is distributed as static assets served by an Nginx reverse proxy.

The BE is implemented in Python using the Django framework, providing robust RESTful APIs for data access, business logic, and authentication. The application is served via a WSGI interface. Django’s ORM is used for standard database operations, while SQLAlchemy is leveraged for advanced querying needs. Asynchronous background jobs (for WorkBench uploads, record merging, and other background operations) are handled by Celery workers, enabling efficient processing of resource-intensive or scheduled tasks.

We recommend that all core components—including Nginx, Django (via WSGI), Celery, and the MariaDB database—are deployed as individual Docker containers for ease of deployment, orchestration, and scaling. Data exchange between FE and BE is performed using JSON over RESTful APIs, ensuring interoperability and extensibility.

This architecture supports a wide range of deployment scenarios, from institutional servers to scalable cloud environments.

System Features

  • Modern React/TypeScript front-end with Tailwind CSS
  • Django REST API back-end (served by WSGI) with SQLAlchemy for advanced queries
  • Nginx reverse proxy and static file serving
  • Celery background job processing
  • MariaDB is used as the database backend
  • Deployment via Docker containers
  • Seamless cloud or on-premises operation
  • Open-source and community-driven

System Architecture Diagram

flowchart TD
    User([User])
    Browser["Browser<br/>(Any Modern Browser)"]
    ReactApp["React App<br/>(TypeScript, Tailwind CSS)"]

    subgraph DockerHost["Docker Host"]
        Nginx["Nginx<br/>(Reverse Proxy, Static Files)"]
        WSGI["WSGI<br/>(Python Application Server)"]
        DjangoHTTP["Django HTTP<br/>(Request Dispatcher)"]
        RESTAPI["REST API<br/>(Business Logic)"]
        DjangoORM["Django ORM<br/>(Standard Queries)"]
        SQLAlchemy["SQLAlchemy<br/>(Advanced Queries)"]
        Celery["Celery Worker<br/>(Background Jobs)"]
        MariaDB["MariaDB<br/>(Database Engine)"]
        FS["File System<br/>(Server Files)"]
    end

    User --> Browser
    Browser --> ReactApp

    ReactApp -.->|"HTTP/HTTPS"| Nginx

    Nginx -- "Serves static assets" --> ReactApp
    Nginx -- "Proxies API requests" --> WSGI
    WSGI --> DjangoHTTP

    DjangoHTTP -- "RESTful requests" --> RESTAPI
    RESTAPI -- "ORM queries" --> DjangoORM
    DjangoHTTP -- "Advanced queries" --> SQLAlchemy

    DjangoORM -- "Reads/Writes" --> MariaDB
    SQLAlchemy -- "Reads/Writes" --> MariaDB
    DjangoHTTP -- "Reads/Writes" --> FS

    DjangoHTTP -- "Background Jobs" --> Celery
    Celery -- "Reads/Writes" --> MariaDB

    classDef container fill:#e7f6ff,stroke:#3399cc,stroke-width:2px;
    class Nginx,WSGI,DjangoHTTP,RESTAPI,DjangoORM,SQLAlchemy,Celery,MariaDB,FS container

For source code, installation instructions, and community resources, visit the Specify 7 GitHub repository.

For questions or support, email us at support@specifysoftware.org.

3 Likes