{"id":13724537,"url":"https://github.com/specify/specify7","last_synced_at":"2026-02-06T00:12:32.950Z","repository":{"id":2411442,"uuid":"3379294","full_name":"specify/specify7","owner":"specify","description":"Specify 7","archived":false,"fork":false,"pushed_at":"2024-11-12T20:02:04.000Z","size":96219,"stargazers_count":66,"open_issues_count":1144,"forks_count":36,"subscribers_count":24,"default_branch":"production","last_synced_at":"2024-11-12T20:26:42.785Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.specifysoftware.org/products/specify-7/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/specify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-02-07T16:54:30.000Z","updated_at":"2024-11-12T19:29:12.000Z","dependencies_parsed_at":"2024-02-04T19:08:09.543Z","dependency_job_id":"538b3470-00e7-4736-a522-1d5c9bf1cffd","html_url":"https://github.com/specify/specify7","commit_stats":{"total_commits":12282,"total_committers":57,"mean_commits":"215.47368421052633","dds":0.7418172936003908,"last_synced_commit":"f8ab2ea7cc07e2dbe290a1a10a879793dbd276ae"},"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specify%2Fspecify7","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specify%2Fspecify7/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specify%2Fspecify7/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/specify%2Fspecify7/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/specify","download_url":"https://codeload.github.com/specify/specify7/tar.gz/refs/heads/production","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224380260,"owners_count":17301525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T01:01:58.936Z","updated_at":"2026-02-06T00:12:32.891Z","avatar_url":"https://github.com/specify.png","language":"TypeScript","funding_links":[],"categories":["Biosphere"],"sub_categories":["Biodiversity Data Access and Management"],"readme":"# [Specify 7](https://www.specifysoftware.org/products/specify-7/)\n\nThe [Specify Collections Consortium](https://www.specifysoftware.org) is pleased\nto offer Specify 7, the web implementation of our biological collections data\nmanagement platform.\n\nWe encourage members to use our\n[Dockerized compositions](https://github.com/specify/docker-compositions) of\nSpecify 7. You can choose a version, make the necessary adjustments and then run\na single command to get everything working. It is very simple and can be easily\nupdated when new versions are released. Members can contact us at\n[support@specifysoftware.org](mailto:support@specifysoftware.org) to gain access\nto this repository.\n\nThe new generation of Specify combines the interface design components and data\nmanagement foundation of Specify 6 with the efficiency and ease-of-use of\nweb-based data access and cloud computing. Specify 7 uses the same interface\nlayout language as Specify 6, so any user interface customization made in one\nplatform is mirrored in the other. Also Specify 6 and Specify 7 use the same\ndata model and can work from the same Specify MySQL or MariaDB database, which\nmeans 6 and 7 can be run simultaneously with any Specify collection. Specify 7\nhelps transition Specify 6 collections to cloud computing. It is also a great\nstarting platform for institutions that prefer zero workstation software\ninstallation and ubiquitous web browser access.\n\nSpecify 7’s architecture supports collaborative digitization projects and remote\nhosting of specimen databases. Without the need for a local area or campus\nnetwork to connect to the MySQL data server, Specify 7 gives you and your\ncollaborators access to a shared specimen database through any web browser.\nFinding it challenging to obtain IT support to maintain a local secure database\nserver? With the Specify 7 server software supported on generic Linux servers,\nmuseums can utilize a server hosting service to provide support for the\ntechnical complexities of systems administration, security management, and\nbacking-up. Want to create a joint database for a collaborative digitizing\neffort? No problem! Host, hire a hosting service or use our\n[Specify Cloud](https://www.specifysoftware.org/products/cloud/) service for\nyour Specify database, set up accounts and go. We provide the same efficient\nuser interface, report and labels customization and help desk support for\nSpecify 7 as we do for Specify 6.\n\n**Secure.** Support for Single Sign-On (SSO) integrates Specify 7 with a campus\nor institutional identity providers. It supports all identity providers (IdPs)\nthat have an OpenID endpoints.\n\nThe Security and Accounts tool allows administrators to give access based on\nroles and policies. Create, edit, and copy roles among collections and\ndatabases. Administrators can give users as many or few permissions as desired,\nfrom guest accounts to collection managers.\n\n**Accessible.** It is important that web applications work for people with\ndisabilities. Specify 7 is developed with this top of mind, not only meeting\ninternational accessibility standards but also providing a better experience for\neveryone.\n\nSpecify 7 is largely compliant with the main WWW accessibility standard – **WCAG\n2.1 (AA)**. It supports screen readers and allows each user to customize their\ncolor scheme and appearance as well as reduce motion and resize all elements.\n\nThis accessible design respects system and web browser preferences for date\nformats, language, theme, and animations.\n\n---\n\nThe Specify Collections Consortium is funded by its member institutions. The\nConsortium web site is: https://specifysoftware.org\n\nSpecify 7 Copyright © 2024 Specify Collections Consortium. Specify comes with\nABSOLUTELY NO WARRANTY. This is free software licensed under GNU General Public\nLicense 2 (GPL2).\n\n    Specify Collections Consortium\n    Biodiversity Institute\n    University of Kansas\n    1345 Jayhawk Blvd.\n    Lawrence, KS 66045 USA\n\n## Table of Contents\n\n- [Specify 7](#specify-7)\n  - [Table of Contents](#table-of-contents)\n  - [Changelog](#changelog)\n- [Installation](#installation)\n  - [Docker Installation (Recommended)](#docker-installation-recommended)\n    - [Specify Collections Consortium (SCC) Members:](#specify-collections-consortium-scc-members)\n    - [Non-Members:](#non-members)\n  - [Local Installation](#local-installation)\n    - [Installing system dependencies](#installing-system-dependencies)\n    - [Installing Specify 6](#installing-specify-6)\n    - [Cloning Specify 7 source repository](#cloning-specify-7-source-repository)\n    - [Adjusting settings files](#adjusting-settings-files)\n    - [Setting up Python Virtual Environment](#setting-up-python-virtual-environment)\n    - [Building](#building)\n      - [`make build`](#make-build)\n      - [`make frontend`](#make-frontend)\n      - [`make clean`](#make-clean)\n      - [`make pip_requirements`](#make-pip_requirements)\n      - [`make django_migrations`](#make-django_migrations)\n      - [`make runserver`](#make-runserver)\n      - [`make webpack_watch`](#make-webpack_watch)\n    - [Turning on debugging](#turning-on-debugging)\n    - [The development server](#the-development-server)\n    - [The Specify 7 Worker](#the-specify-7-worker)\n    - [Installing production requirements](#installing-production-requirements)\n    - [Setting up Apache](#setting-up-apache)\n    - [Restarting Apache](#restarting-apache)\n    - [Nginx configuration](#nginx-configuration)\n  - [Updating Specify 7](#updating-specify-7)\n  - [Updating the database (Specify 6) version](#updating-the-database-specify-6-version)\n  - [Localizing Specify 7](#localizing-specify-7)\n\n## Changelog\n\nChangelog is available in [CHANGELOG.md](./CHANGELOG.md)\n\n# Installation\n\nWe encourage all users to read our documentation on the Community Forum\nregarding installing and deploying Specify –\n[**Specify 7 Installation Instructions**](https://discourse.specifysoftware.org/t/specify-7-installation-instructions/755).\n\nIf you are an existing Specify 6 user who is looking to evaluate Specify 7, you\ncan contact [support@specifysoftware.org](mailto:support@specifysoftware.org)\nalong with a copy of your database and we can configure a temporary deployment\nfor evaluation purposes.\n\n## Docker Installation (Recommended)\n\n### Specify Collections Consortium (SCC) Members:\n\nWe encourage members to use our\n[Dockerized compositions](https://github.com/specify/docker-compositions) of\nSpecify 7. You can choose your desired version, make the necessary adjustments\nand then run a single command to get everything working. It is very simple and\ncan be easily updated when new versions are released. Documentation for\ndeploying Specify using Docker is available within the repository.\n\n[**📨 Click here to request access**](mailto:support@specifysoftware.org?subject=Requesting%20Docker%20Repository%20Access\u0026body=My%20GitHub%20username%20is%3A%20%0D%0AMy%20Specify%20Member%20Institution%20is%3A%20%0D%0AAdditional%20Questions%20or%20Notes%3A%20)\nor email [support@specifysoftware.org](mailto:support@specifysoftware.org) with\nyour GitHub username, member institution or collection, and any additional\nquestions you have for us.\n\n### Non-Members:\n\nIf your institution is not a member of the Specify Collections Consortium, you\ncan follow the [local installation instructions](#local-installation) below or\ncontact [membership@specifysoftware.org](mailto:membership@specifysoftware.org)\nto learn more about joining the SCC to receiving configuration assistance,\nsupport, and hosting services if you are interested.\n\n## Local Installation\n\nAfter completing these instructions you will be able to run the test server and\ninteract with the Django based Specify webapp in your browser on your local\nmachine.\n\nInstructions for deployment follow.\n\n**Note:** If updating from a previous version, some of the python dependencies\nhave changed. It is recommended to place the new version in a separate directory\nnext to the previous version and install all the new dependencies in a Python\nvirtualenv as described below. That will avoid version conflicts and allow the\nprevious version to continue working while the new version is being set up. When\nthe new version is working satisfactorily using the test server, the Apache conf\ncan be changed to point to it (or changed back to the old version, if problems\narise).\n\n### Installing system dependencies\n\nSpecify 7 requires Python 3.8. Ubuntu 20.04 LTS is recommended. For other\ndistributions these instructions will have to be adapted.\n\nUbuntu 20.04 LTS:\n\n```shell\nsudo apt install -y curl\ncurl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -\nsudo apt-get -y install --no-install-recommends \\\n  build-essential \\\n  git \\\n  libldap2-dev \\\n  libmariadbclient-dev \\\n  libsasl2-dev \\\n  nodejs \\\n  python3-venv \\\n  python3.8 \\\n  python3.8-dev \\\n  redis \\\n  unzip\n```\n\nCentOS 7 / Red Hat 7:\n\n```shell\nyum install -y epel-release sudo wget\nyum install -y \\\n  gcc make \\\n  git \\\n  openldap-devel \\\n  mariadb-devel \\\n  nodejs \\\n  npm \\\n  java-11-openjdk-headless \\\n  python36-virtualenv \\\n  python36 \\\n  python36u-devel \\\n  redis \\\n  unzip\n```\n\nAfterward, please make sure you have Node.js 20 installed:\n\n```\nnode -v\n```\n\n### Installing Specify 6\n\nA copy of the most recent Specify 6 release is required on the server as Specify\n7 makes use of resource files. A Java runtime is required to execute the Specify\n6 installer, but is not needed to run Specify 7. It is possible to copy the\nSpecify 6 install from another Linux system to avoid the need to install Java on\nthe server.\n\n```shell\nwget https://update.specifysoftware.org/Specify_unix_64.sh\nsh Specify_unix_64.sh -q -dir ./Specify6.8.03\nsudo ln -s $(pwd)/Specify6.8.03 /opt/Specify\n```\n\n### Cloning Specify 7 source repository\n\nClone this repository.\n\n```shell\ngit clone https://github.com/specify/specify7.git\n```\n\nYou will now have a specify7 directory containing the source tree.\n\nNote, by default, `git clone` checks out the `production` branch of Specify 7.\nThat branch contains the latest tested features and bug fixes. If you prefer a\nmore stable release, you can switch to one of our tagged released.\n\n```shell\ncd specify7\ngit checkout tags/v7.8.6\n```\n\nTagged releases are coming out every other week and undergo more testing.\n\nSee [the list of tags](https://github.com/specify/specify7/tags) to check what's\nthe latest stable release.\n\n### Adjusting settings files\n\nIn the directory `specify7/specifyweb/settings` you will find the\n`specify_settings.py` file. Make a copy of this file as\n`local_specify_settings.py` and edit it. The file contains comments explaining\nthe various settings.\n\n### Setting up Python Virtual Environment\n\nUsing a Python\n[virtual environment](https://docs.python-guide.org/en/latest/dev/virtualenvs/)\nwill avoid version conflicts with other Python libraries on your system. Also,\nit avoids having to use a superuser account to install the Python dependencies.\n\n```shell\npython3.8 -m venv specify7/ve\nspecify7/ve/bin/pip install wheel\nspecify7/ve/bin/pip install --upgrade -r specify7/requirements.txt\n```\n\n### Building\n\nTo build Specify 7 use the default make target.\n\n```shell\ncd specify7\nsource ve/bin/activate\nmake\n```\n\n\u003e Note, if `source` command is not available on your system, try running\n\u003e `. ve/bin/activate` instead\n\nOther make targets:\n\n#### `make build`\n\nRuns all necessary build steps.\n\n#### `make frontend`\n\nInstalls or updates Javascript dependencies and builds the Javascript modules\nonly.\n\n#### `make clean`\n\nRemoves all generated files.\n\nThe following targets require the virualenv to be activated:\n\n#### `make pip_requirements`\n\nInstall or updates Python dependencies.\n\n#### `make django_migrations`\n\nApplies Specify schema changes to the database named in the settings. This step\nmay fail if the master user configured in the settings does not have DDL\nprivileges. Changing the `MASTER_NAME` and `MASTER_PASSWORD` settings to the\nMySQL root user will allow the changes to be applied. Afterward, the master user\nsettings can be restored.\n\n#### `make runserver`\n\nA shortcut for running the Django development server.\n\n#### `make webpack_watch`\n\nRun webpack in watch mode so that changes to the frontend source code will be\nautomatically compiled. Useful during the development process.\n\n### Turning on debugging\n\nFor development purposes, Django debugging should be turned on. It will enable\nstack traces in responses that encounter exceptions, and allow operation with\nthe unoptimized Javascript files.\n\nDebugging can be enabled by creating the file\n`specify7/specifyweb/settings/debug.py` with the contents, `DEBUG = True`.\n\n### The development server\n\n\u003e NOTE: development server should only be run in debug mode. See previous\n\u003e section for instructions on how to turn on debugging.\n\nSpecify7 can be run using the Django development server.\n\n```shell\ncd specify7\nsource ve/bin/activate\nmake runserver\n```\n\nThis will start a development server for testing purposes on `localhost:8000`.\n\nWhen the server starts up, it will issue a warning that some migrations have not\nbeen applied:\n\n```\nYou have 11 unapplied migration(s). Your project may not work\nproperly until you apply the migrations for app(s): auth,\ncontenttypes, sessions.  Run 'python manage.py migrate' to apply them.\n```\n\nSpecify 7 makes use of functions from the listed Django apps (auth,\ncontenttypes, and sessions) but does not need the corresponding tables to be\nadded to the database. Running `make django_migrations` will apply only those\nmigrations needed for Specify 7 to operate.\n\n### The Specify 7 Worker\n\nStarting from version `v7.6.0`, the Specify WorkBench utilizes this dedicated\nworker process to handle the upload and validation operations.\n\nStarting from version `v7.9.0`, the record merging functionality employs the\nworker to handle all record merging activities.\n\nThis worker process utilizes\n[Celery](https://docs.celeryproject.org/en/master/index.html), a job queue\nmanagement system, with\n[Redis](https://docs.celeryproject.org/en/master/getting-started/backends-and-brokers/redis.html)\nserving as the broker.\n\nThe worker process can be started from the commandline by executing:\n\n```shell\ncd specify7\ncelery -A specifyweb worker -l INFO --concurrency=1\n```\n\nFor deployment purposes it is recommended to configure a systemd unit to\nautomatically start the Specify 7 worker process on system start up by executing\nthe above command within the installation directory. It is possible to run Redis\nand worker process on a separate server and to provision multiple worker\nprocesses for high volume scenarios. Contact the Specify team about these use\ncases.\n\n### Installing production requirements\n\nFor production environments, Specify7 can be hosted by Apache. The following\npackages are needed:\n\n- Apache\n- mod-wsgi to connect Python to Apache\n\nUbuntu:\n\n```shell\nsudo apt-get install apache2 libapache2-mod-wsgi-py3\n```\n\nCentOS / Red Hat:\n\n```shell\nyum install httpd python3-mod_wsgi\n```\n\nWarning: This will replace the Python 2.7 version of mod-wsgi that was used by\nSpecify 7.4.0 and prior. If executed on a production server running one of those\nversions, Specify 7 will stop working until the new deployment is configured.\n\n### Setting up Apache\n\nIn the `specify7` directory you will find the `specifyweb_apache.conf` file.\nMake a copy of the file as `local_specifyweb_apache.conf` and edit the contents\nto reflect the location of Specify6 and Specify7 on your system. There are\ncomments showing what to change.\n\nThen remove the default Apache welcome page and make a link to your\n`local_specifyweb_apache.conf` file.\n\nUbuntu:\n\n```shell\nsudo rm /etc/apache2/sites-enabled/000-default.conf\nsudo ln -s $(pwd)/specify7/local_specifyweb_apache.conf /etc/apache2/sites-enabled/\n```\n\nCentOS / Red Hat:\n\n```shell\nsudo ln -s $(pwd)/specify7/local_specifyweb_apache.conf /etc/httpd/conf.d/\n```\n\n### Restarting Apache\n\nAfter changing Apache's config files restart the service.\n\nUbuntu:\n\n```shell\nsudo systemctl restart apache2.service\n```\n\nCentOS / Red Hat:\n\n```shell\nsudo systemctl restart httpd.service\n```\n\n### Nginx configuration\n\nSpecify 7 is web-server agnostic. Example\n[nginx.conf](https://github.com/specify/specify7/blob/production/nginx.conf)\n(note, you would have to adjust the host names and enable HTTPs).\n\n## Updating Specify 7\n\nSpecify 7.4.0 and prior versions were based on Python 2.7. If updating from one\nof these versions, it will be necessary to install Python 3.8 by running the\n`apt-get` commands in the\n[Install system dependencies](#install-system-dependencies) and the\n[Production requirements](#production-requirements) steps. Then proceed as\nfollows:\n\n0. Backup your Specify database using MySQL dump or the Specify backup and\n   restore tool.\n\n1. Clone or download a new copy of this repository in a directory next to your\n   existing installation.\n\n   `git clone https://github.com/specify/specify7.git specify7-new-version`\n\n2. Copy the settings from the existing to the new installation.\n\n   `cp specify7/specifyweb/settings/local* specify7-new-version/specifyweb/settings/`\n\n3. Make sure to update the `THICK_CLIENT_LOCATION` setting in\n   `local_specify_settings.py`, if you are updating the Specify 6 version.\n\n4. Update the system level dependencies by executing the _apt-get_ command in\n   the [Installing system dependencies](#installing-system-dependencies)\n   section.\n\n5. Create a new virtualenv for the new installation by following the\n   [Python Virtual Environment](#python-virtual-environment) section for the new\n   directory.\n\n6. [Build](#building) the new version of Specify 7.\n\n7. Test it out with the [development server](#the-development-server).\n\n8. Deploy the new version by updating your Apache config to replace the old\n   installation paths with the new ones and restarting Apache.\n\n9. Configure the Specify 7 worker process to execute at system start up as\n   described in [The Specify 7 worker](#the-specify-7-worker) section.\n\n## Updating the database (Specify 6) version\n\nThe Specify database is updated from one version to the next by the Specify 6\napplication. To update the database version connect to the database with a new\nversion of Specify 6 and follow the Specify 6 update procedures.\n\nOnce the database version is updated, a corresponding copy of Specify 6 must be\nprovided to the Specify 7 server by repeating the\n[Installing Specify 6](#installing-specify-6) section of this guide for the new\nversion of Specify 6.\n\n[![analytics](https://www.google-analytics.com/collect?v=1\u0026t=pageview\u0026dl=https%3A%2F%2Fgithub.com%2Fspecify%2Fspecify7\u0026uid=readme\u0026tid=UA-169822764-3)]()\n\n## Localizing Specify 7\n\nSpecify 7 interface is localized to a few languages out of the box. We welcome\ncontributions of new translations. We are using\n[Weblate](https://hosted.weblate.org/projects/specify-7/) continuous\nlocalization platform.\n[Instructions on how you can contribute](https://discourse.specifysoftware.org/t/get-started-with-specify-7-localization/956)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspecify%2Fspecify7","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspecify%2Fspecify7","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspecify%2Fspecify7/lists"}