specify7
A biological collections data management platform.
https://github.com/specify/specify7
Category: Biosphere
Sub Category: Biodiversity Data Access and Management
Keywords
biodiversity collections-management geoscience natural-history-collections
Keywords from Contributors
biodiversity-informatics species biorepository curation museum museum-collection-specimens specify specimen tdwg
Last synced: about 5 hours ago
JSON representation
Repository metadata
An open-source platform for managing biological and geological collections.
- Host: GitHub
- URL: https://github.com/specify/specify7
- Owner: specify
- License: gpl-3.0
- Created: 2012-02-07T16:54:30.000Z (over 14 years ago)
- Default Branch: main
- Last Pushed: 2026-08-19T15:53:00.000Z (2 days ago)
- Last Synced: 2026-08-19T16:34:34.495Z (2 days ago)
- Topics: biodiversity, collections-management, geoscience, natural-history-collections
- Language: TypeScript
- Homepage: https://www.specifysoftware.org/products/
- Size: 175 MB
- Stars: 98
- Watchers: 19
- Forks: 50
- Open Issues: 1,024
- Releases: 61
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Citation: CITATION.cff
- Security: SECURITY.md
README.md
Specify Collections Management Platform
The Specify Collections Consortium (SCC) is proud to present Specify 7, a web-based application for managing biological collections data. Specify supports and enhances data management for biological collections, with a focus on research collections at universities, natural history museums, biorepositories, seed banks, herbaria, and environmental organizations. It offers incredible tools for data management, superb accessibility, and a multitude of collaboration features. It is completely free-to-use and 100% open source, supported by an active community of institutions from around the world. Click here to learn more about our members.
Specify manages species and specimen information to computerize biological collections, track museum specimen transactions, link images to specimen records, and publish catalog data online. It supports collaborative digitization projects and remote hosting of specimen databases. Users do not need to install the software, enabling you and your collaborators to access a shared collections database from any modern web browser.
You can select, organize, rename, and resize the data entry forms to match your curatorial preferences, eliminating the need to tab through multiple forms. Specify's "tree" interface for taxonomy, geography, storage location, chronostratigraphy, and lithostratigraphy offer intuitive access to hierarchical data. This allows for easy editing, synonymization, re-parenting, and discovering linked collection objects and preparations.
The platform supports data from specimens, taxonomic and stratigraphic classifications, field notebooks, DNA sequence runs, literature references, and other primary sources. It can manage information related to repository agreements, accessions, conservation treatments, collection object groups, images, and other document attachments.
Specify prioritizes security with support for Single Sign-On (SSO), integrating seamlessly with institutional identity providers that utilize OpenID endpoints. The Security and Accounts tool empowers administrators to manage user access based on defined roles and policies. You can easily create, edit, and replicate roles across collections and databases, granting users tailored permissions that range from guest access to full collection management.
Specify is developed with accessibility at its core, meeting and exceeding international standards. It largely complies with the WCAG 2.1 (AA) guidelines, ensuring compatibility with screen readers. You can read more in our Accessibility & Compatibility Summary (WCAG 2.1 Level AA). Users can customize their visual experience by adjusting color schemes, reducing motion, and resizing elements. Our design respects user preferences for date formats, language, themes, and animations, creating a more personalized experience for everyone.
Whether you choose to self-host on your own infrastructure or use our Specify Cloud service, your institution retains full ownership and control of your data at all times. Specify imposes no vendor lock-in as your database runs on standard MariaDB, can be backed up or migrated at any time, and remains entirely yours. If your institution has strict data sovereignty or on-premises hosting requirements, the self-hosted Docker/Podman deployment puts you in complete control of your infrastructure, security policies, and data access.
To get started, send us a message to learn more! We are happy to meet with you and your team to discuss how we can address your collections data management needs with Specify.
[!IMPORTANT]
You can learn more about Specify, ask questions, share updates, and get involved with the community on the Specify Community Forum!
Table of Contents
Documentation
The Speciforum is the official community forum and primary knowledge hub for the Specify Collections Consortium (SCC). It connects collections staff, member institutions, and informatics developers from around the world to collaborate and share their work. Members of the SCC can create an account and unlock tons of exclusive documentation, webinars, and begin asking questions of both the SCC staff and collections community.
Through the Speciforum, you can access:
- Comprehensive Documentation: Step-by-step user guides, video and webinar training materials, software installation support, API documentation for developers, and system administration references.
- Community Support: A dedicated space to ask questions, report issues, and troubleshoot workflows with the Specify support team and fellow users.
- Community News & Announcements: Read here to stay up to date on new developments, software releases, and upcoming workshops and events.
Demo Instance
For those looking to evaluate Specify, we have an online demonstration database available at https://sp7demofish.specifycloud.org/specify/. If you are interested in requesting an evaluation instance for your institution, you can fill out the form here to request one!
Installation
We encourage all users to read our documentation on the Community Forum
regarding installing and deploying Specify –
Specify 7 Installation Instructions.
If you are an existing Specify 6 user who is looking to evaluate Specify 7, you can
contact support@specifysoftware.org
along with a copy of your database and we can configure a temporary deployment
for evaluation purposes.
Specify Cloud (Recommended)
Our hosting platform, Specify Cloud, enables biological collections to easily share their current Specify database with us. If a collection is new to Specify, we are happy to create a new database upon request! We handle all updates, maintenance, backups, resource management, billing, and asset management. Our cloud platform has regions located worldwide, enabling Specify to be hosted near your collection and staff. We will collaborate with your team to ensure compliance with all institutional and legal regulations regarding data storage and accessibility. Your local IT teams can request access to our cloud servers to prepare backups, access assets, and connect to your database directly whenever necessary. This platform also enables our support team to respond to inquiries quickly and resolve any issues.
Self-hosted (Docker / Podman)
For institutions that require their collections data to remain on-site or in a region not served by Specify Cloud, Specify 7 is designed to be deployed using Docker or Podman. The project provides a Dockerfile based on Ubuntu and docker-compositions that bundle Specify 7 with its supporting services (MariaDB, Redis, Asset Server, Report Runner). This is the only supported production self-hosted deployment method.
We encourage SCC members to use our Dockerized compositions of Specify 7. You can choose your desired version, make the necessary adjustments and then run a single command to get everything working. It is very simple and can be easily updated when new versions are released. Documentation for deploying Specify using Docker/Podman is available within the repository.
📨 Click here to request access, including your GitHub username, member institution, collection, and any additional questions or notes you have for us.
Development Setup
For contributing to Specify 7, the recommended approach is a Docker/Podman-based development workflow. The included Dockerfile provides a multi-stage build with a dedicated run-development stage that includes testing dependencies and tools like mypy. If you are interested in contributing to Specify, please read our guide to contributing code to Specify for instructions!
If you want to contribute to our code from an external institution, please reach out to a member of our team for further guidance. We are always looking for new collaboration opportunities.
Tech Stack
- Host: Ubuntu on Docker / Podman
- Database Management System: MariaDB
- Front-end: TypeScript, React, JavaScript, Tailwind CSS
- Back-end: Django and Python
You can learn more about the architecture here: https://speciforum.org/t/specify-7-architecture-overview/
Specify Components
A full Specify 7 deployment consists of several services working together. The Docker / Podman compositions bundle all of these into a single, cohesive container stack.
Specify 7
The main web application — a Django-powered backend serving a React and TypeScript frontend. This is the browser-based interface that users interact with to manage their collections data. It handles authentication (including SSO via OpenID Connect), business logic, schema management, and all CRUD operations against the MariaDB database. The application is served via Gunicorn in production and includes a built-in development server for local testing.
Specify Worker
A background job processor that handles long-running or resource-intensive operations asynchronously, keeping the main web application responsive. It is responsible for:
- WorkBench uploads — processing and validating large datasets uploaded through the Specify WorkBench tool
- Record merging — executing complex record merge operations across related tables
- Batch attachment uploads — handling bulk image and document attachment processing
The worker process is built on Celery, a distributed task queue, with Redis serving as the message broker. It is included alongside every Specify 7 deployment.
Specify Asset Server
The Web Asset Server manages the storage and retrieval of binary file attachments such as specimen images, scanned documents, field notes, and other media files linked to collection records. It stores assets independently from the main application database, enabling efficient serving of large files without impacting database performance. The Asset Server supports configurable storage backends and collection-based organization of assets.
- Learn about Attachments in Specify
- See how Specify works with the Web Asset Server
- Read the technical docs for the Web Asset Server
Specify Report Runner
The Report Runner Service generates formatted, printable reports from Specify data. It processes report templates against collection records to produce PDFs of invoices and labels. This service handles the rendering pipeline independently so that complex report generation does not block the main application. If you are interested in adding additional fonts for use in reports and labels, see these instructions here.
Localizing Specify
Specify 7 interface is available in several languages out of the box, including English, Ukrainian, Russian, German, and French. We are using Weblate continuous localization platform, and if you are interested in amending our existing localization or would like us to add a new language to Specify, please see our instructions on how you can contribute.
The Specify Collections Consortium is funded by its member institutions. Find out more at https://specifysoftware.org
Citation (CITATION.cff)
cff-version: 1.2.0
message: 'If you use this software in your research, please cite it as:'
authors:
- name: Specify Collections Consortium & Contributors
email: support@specifysoftware.org
title: Specify 7
keywords:
- collections management software
- open source
identifiers:
- type: url
value: 'https://www.specifysoftware.org/'
description: Specify Collections Consortium
abstract: >-
The Specify Collections Consortium research repositories produce software
platforms that process species and specimen data.
license: GPL-2.0-only
repository-code: specify/specify7
repository: 'https://github.com/specify/specify7'
Owner metadata
- Name: Specify Collections Consortium
- Login: specify
- Email: support@specifysoftware.org
- Kind: organization
- Description: The Specify Collections Consortium of biological museums and research repositories produces software platforms that process species and specimen data.
- Website: https://specifysoftware.org/
- Location: University of Kansas, Lawrence
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/2906014?v=4
- Repositories: 27
- Last ynced at: 2024-03-26T07:42:33.345Z
- Profile URL: https://github.com/specify
GitHub Events
Total
- Create event: 680
- Commit comment event: 10
- Release event: 12
- Delete event: 568
- Member event: 3
- Pull request event: 1025
- Fork event: 7
- Discussion event: 2
- Issues event: 1493
- Watch event: 14
- Issue comment event: 1328
- Push event: 4752
- Gollum event: 20
- Pull request review event: 2156
- Pull request review comment event: 430
Last Year
- Release event: 2
- Delete event: 194
- Member event: 1
- Pull request event: 170
- Fork event: 2
- Discussion event: 2
- Issues event: 303
- Watch event: 5
- Issue comment event: 234
- Push event: 1810
- Gollum event: 1
- Pull request review comment event: 143
- Pull request review event: 401
- Create event: 192
Committers metadata
Last synced: 3 days ago
Total Commits: 18,267
Total Committers: 84
Avg Commits per committer: 217.464
Development Distribution Score (DDS): 0.824
Commits in past year: 3,125
Committers in past year: 40
Avg Commits per committer in past year: 78.125
Development Distribution Score (DDS) in past year: 0.801
| Name | Commits | |
|---|---|---|
| Max Patiiuk | m****x@p****k | 3211 |
| Caroline D | 1****s | 3033 |
| Ben Anhalt | a****t@k****u | 2686 |
| alec_dev | a****1@g****m | 1575 |
| melton-jason | m****2@y****m | 1461 |
| Grant Fitzsimmons | 3****s | 1244 |
| realVinayak | r****3@g****m | 1192 |
| Maksym Patiiuk | 4****p | 1106 |
| alesan99 | a****9@g****m | 631 |
| Sharad S | s****n@s****g | 566 |
| Google Translate | n****e@w****g | 411 |
| Anonymous | n****y@w****g | 142 |
| Rijul Poudel | r****2@g****m | 127 |
| pashiav | p****2@g****m | 122 |
| timo | t****o@k****u | 114 |
| timo | t****o@l****u | 75 |
| Iwantexpresso | m****6@g****m | 66 |
| Gitesh Sagvekar | g****7@g****m | 55 |
| g1rly-c0d3r | g****r@a****m | 49 |
| Andrew Reyes | a****1@g****m | 38 |
| combs-a | c****a@g****m | 35 |
| gallegonovato | f****o@h****s | 31 |
| kwhuber | k****r@g****m | 30 |
| Mark Pitblado | m****k@p****e | 24 |
| Jim Beach | b****h@s****g | 17 |
| dependabot[bot] | 4****] | 17 |
| Caroline Denis | c****e@c****e | 14 |
| Heather | h****e@c****a | 14 |
| Caroline Denis | c****e@c****e | 13 |
| Maxime GRIVEAU | m****u@m****r | 12 |
| and 54 more... | ||
Committer domains:
- ku.edu: 2
- specifysoftware.org: 2
- weblate.org: 2
- aol.com: 2
- ird.fr: 2
- nhm.uio.no: 2
- mac.lan: 1
- bi-kyq1cxv619.home.ku.edu: 1
- tacc.utexas.edu: 1
- carolines-macbook-pro.home: 1
- amyx.engineering: 1
- mncn.csic.es: 1
- mnhn.fr: 1
- carolines-mbp.home: 1
- canada.ca: 1
- carolines-macbook-pro-1.home: 1
- pitblado.me: 1
- hotmail.es: 1
- localhost.nhm.ku.edu: 1
- patii.uk: 1
- device-43.home: 1
- mac-137.lan: 1
- specify7test.(none): 1
- bi-sp7test.home.ku.edu: 1
- mn.ufrj.br: 1
- proton.me: 1
- rbg.vic.gov.au: 1
- tuta.io: 1
- snm.ku.dk: 1
- mfn-berlin.de: 1
- barnoy.co.il: 1
- bi-nyftv6cl9q.lan: 1
- rjb.csic.es: 1
- ubc.ca: 1
- blissett.me.uk: 1
- outlook.fr: 1
- mac-001.lan: 1
- sac-cas.ch: 1
- mac.home: 1
- calacademy.org: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 2,253
Total pull requests: 1,976
Average time to close issues: 6 months
Average time to close pull requests: about 1 month
Total issue authors: 44
Total pull request authors: 30
Average comments per issue: 1.43
Average comments per pull request: 1.58
Merged pull request: 1,262
Bot issues: 0
Bot pull requests: 68
Past year issues: 117
Past year pull requests: 143
Past year average time to close issues: 5 days
Past year average time to close pull requests: 15 days
Past year issue authors: 19
Past year pull request authors: 12
Past year average comments per issue: 0.56
Past year average comments per pull request: 1.08
Past year merged pull request: 26
Past year bot issues: 0
Past year bot pull requests: 14
Top Issue Authors
- grantfitzsimmons (799)
- realVinayak (260)
- emenslin (160)
- bronwyncombs (135)
- lexiclevenger (123)
- maxpatiiuk (121)
- CarolineDenis (119)
- pashiav (75)
- carlosmbe (55)
- sharadsw (49)
- combs-a (49)
- alesan99 (40)
- melton-jason (38)
- benanhalt (37)
- acwhite211 (35)
Top Pull Request Authors
- CarolineDenis (637)
- realVinayak (342)
- acwhite211 (202)
- sharadsw (158)
- grantfitzsimmons (158)
- melton-jason (157)
- maxpatiiuk (85)
- dependabot[bot] (68)
- alesan99 (51)
- pashiav (32)
- Gitesh307 (22)
- mark-pitblado (11)
- Areyes42 (10)
- foozleface (10)
- benanhalt (6)
Top Issue Labels
- 1 - Bug (1,075)
- 1 - Request (427)
- 2 - Forms (308)
- 2 - Queries (218)
- 2 - App Resources (143)
- 2 - User Interface (142)
- 2 - WorkBench (139)
- 2 - Trees (128)
- geospecify (101)
- 2 - Interactions (94)
- todo:verify (91)
- regression (80)
- 2 - Database/Schema (63)
- 2 - Attachments (61)
- 2 - Schema Config (54)
- 1 - Enhancement (53)
- SeparationFrom6 (51)
- 2 - Record Sets (51)
- Batch Edit (48)
- 2 - Reports (33)
- good first issue (32)
- 2 - Security & Accounts (30)
- 2 - Exporting Data (29)
- 2 - Statistics (25)
- 2 - Merging (25)
- 2 - Preferences (21)
- type:meta (20)
- type:housekeeping (16)
- Migration (15)
- 3 - Verified (13)
Top Pull Request Labels
- dependencies (70)
- javascript (48)
- Migration (35)
- python (29)
- 2 - Queries (24)
- 1 - Bug (17)
- 2 - Database/Schema (8)
- 2 - WorkBench (6)
- 2 - Trees (6)
- 2 - API (5)
- geospecify (5)
- 2 - Forms (4)
- 1 - Request (3)
- pri:low (2)
- 2 - Exporting Data (2)
- 2 - Preferences (1)
- SeparationFrom6 (1)
- todo:discuss (1)
- 2 - Statistics (1)
- After 6 (1)
- 2 - Merging (1)
- 2 - App Resources (1)
- 2 - Interactions (1)
- type:housekeeping (1)
Dependencies
- actions/cache v3 composite
- actions/checkout v3 composite
- docker/build-push-action v3 composite
- docker/login-action v2 composite
- docker/setup-buildx-action v2 composite
- EndBug/add-and-commit v9 composite
- actions/checkout v3 composite
- actions/setup-node v3 composite
- SimenB/github-actions-cpu-cores v1 composite
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/setup-node v3 composite
- actions/setup-python v4 composite
- dorny/paths-filter v2 composite
- mariadb latest docker
- common latest build
- node 18-alpine build
- run-common latest build
- ubuntu 18.04 build
- mariadb latest
- nginx alpine
- redis latest
- specifyconsortium/report-runner latest
- specifyconsortium/specify-asset-service latest
- specifyconsortium/specify6-service 6.8.02
- 1209 dependencies
- @babel/core ^7.18.9 development
- @babel/plugin-transform-modules-commonjs ^7.18.6 development
- @babel/preset-env ^7.18.9 development
- @babel/preset-react ^7.18.6 development
- @babel/preset-typescript ^7.18.6 development
- @maxxxxxdlp/eslint-config-react ^1.0.2 development
- @maxxxxxdlp/prettier-config ^1.0.4 development
- @maxxxxxdlp/stylelint-config ^1.0.0 development
- @rushstack/eslint-patch ^1.1.4 development
- @stylelint/postcss-css-in-js ^0.38.0 development
- @tailwindcss/forms ^0.5.2 development
- @testing-library/jest-dom ^5.16.5 development
- @testing-library/react ^13.3.0 development
- @testing-library/user-event ^14.4.3 development
- @types/backbone ^1.4.11 development
- @types/d3 ^7.4.0 development
- @types/gettext-parser ^4.0.2 development
- @types/jest ^28.1.6 development
- @types/jquery ~3.5.4 development
- @types/leaflet ^1.7.0 development
- @types/leaflet.featuregroup.subgroup ^1.0.0 development
- @types/leaflet.markercluster ^1.4.4 development
- @types/node ^18.7.9 development
- @types/papaparse ~4.1.2 development
- @types/react ^18.0.15 development
- @types/react-dom ^18.0.6 development
- @types/react-modal ^3.13.1 development
- @types/react-router-dom ^5.3.3 development
- @types/underscore ^1.10.24 development
- autoprefixer 10.4.5 development
- babel-jest ^28.1.3 development
- babel-loader ^8.2.5 development
- chalk ^4.1.2 development
- commander ^9.4.1 development
- core-js ^3.23.4 development
- css-loader ^6.7.1 development
- eslint ^8.20.0 development
- gettext-parser ^6.0.0 development
- jest ^28.1.3 development
- jest-environment-jsdom ^28.1.3 development
- jest-fail-on-console ^2.4.2 development
- jest-silent-reporter ^0.5.0 development
- jest-skipped-reporter ^0.0.5 development
- jsdom-global ^3.0.2 development
- loader-utils ^3.2.0 development
- node-notifier ^10.0.1 development
- postcss ^8.4.14 development
- postcss-loader ^7.0.1 development
- postcss-preset-env ^7.7.2 development
- prettier ^2.7.1 development
- regenerator-runtime ^0.13.9 development
- style-loader ^3.3.1 development
- stylelint ^14.1.0 development
- tailwindcss ^3.1.6 development
- ts-node ^10.9.1 development
- typedoc ^0.23.7 development
- typescript ^4.6.2 development
- webpack ^5.73.0 development
- webpack-cli ^4.10.0 development
- webpack-manifest-plugin ^5.0.0 development
- worker-loader ^3.0.8 development
- @codemirror/lang-json ^6.0.0
- @codemirror/lang-xml ^6.0.0
- @codemirror/language ^6.2.0
- @codemirror/legacy-modes ^6.1.0
- @headlessui/react ^1.6.6
- @uiw/codemirror-theme-okaidia ^4.10.4
- @uiw/codemirror-theme-xcode ^4.10.4
- @uiw/react-codemirror 4.11.0
- backbone ~0.9.10
- codemirror ^6.0.1
- csv-parse ^5.3.0
- csv-stringify ^6.2.0
- d3 ^7.6.1
- dayjs ^1.10.7
- handsontable 9.0.0
- jquery ~1.12.0
- leaflet ^1.7.1
- leaflet.featuregroup.subgroup ^1.0.2
- leaflet.markercluster ^1.5.0
- react ^18.2.0
- react-dom ^18.2.0
- react-draggable ^4.4.5
- react-modal ^3.16.1
- react-router-dom ^6.3.0
- typesafe-i18n ^5.17.1
- typesafe-reducer ^1.0.3
- underscore ~1.8.3
- xlsx ~0.16.8
- django-stubs ==1.5.0 test
- hypothesis ==6.4.0 test
- hypothesis-jsonschema ==0.19.0 test
- mypy ==0.770 test
- Django ==2.2.10
- PyJWT ==2.3.0
- SQLAlchemy ==1.2.11
- celery ==5.0.3
- django-auth-ldap ==1.2.15
- django-jsonfield-backport ==1.0.2
- jsonschema ==3.2.0
- mysqlclient ==1.3.13
- pycryptodome ==3.9.7
- redis ==3.5.3
- requests ==2.26.0
- typing-extensions ==3.7.4.3
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- actions/checkout v4 composite
- actions/upload-artifact v7 composite
- dorny/paths-filter v3 composite
Score: 11.453684884925956