BotGard 3.0

Open Source Management System for Botanic Garden Collections built and maintained by in cooperation with the Botanical Garden of the Friedrich Schiller Universit├Ąt Jena and the Botanical Garden of the TU Braunschweig.


See Features wiki page for a list of features.


To run the System in production mode you’ll need:

  • Linux or FreeBSD
  • Python 3
  • PostgreSQL (recommended)
  • nginx
  • latex live
  • librsvg2-bin (labels use the rsvg-convert commandline tool)


To initially set up the development server create a virtual environment using tools like venv or virtualenv and then:

sudo apt install librsvg2-bin
# or any other means to install the rsvg package

cd app
pip install -r requirements.txt
./ migrate
./ createsuperuser
./ botgard_update_config

After that you can just run the development server with:

./ runserver

Postgres is required for proper text search in Django’s admin views. If you do not need fulltext search, sqlite will work too.

To create a local database:

sudo apt install postgresql-server-dev-all
# or any other means to install a local postgres server

# start psql
sudo -u postgres psql

# create user and database
CREATE USER "botgard-user" WITH PASSWORD "botgard-password";
CREATE DATABASE "botgard" ENCODING=UTF8 TEMPLATE=template0 OWNER="botgard-user";

# allow the user to create databases (for unit-testing)
ALTER USER "botgard-user" CREATEDB;

To run the unit-tests:

./ collectstatic  # needs to be run once before testing
./ test

Docker and CI

Dockerfile and app/ are the entry points.

run unittests in docker image

docker build --tag botgard-dev .
docker run -ti --env BOTGARD_RUN_TESTS=1 botgard-dev

The following environment variables will be used by app/BotGard/ if present:

  • POSTGRES_PASSWORD: Password of the postgres user, if specified the postgres database backend will be used. Otherwise it falls back to sqlite3.
  • POSTGRES_DATABASE: Name of the postgres database, defaults to postgres
  • POSTGRES_USER: Name of the postgres user, defaults to postgres
  • POSTGRES_HOST: Name of the postgres host, defaults to localhost
  • POSTGRES_PORT: Name of the postgres host port, defaults to 5432
  • DJANGO_SECRET_KEY: Overrides the SECRET_KEY, defaults to a fixed sequence
  • DJANGO_TIME_ZONE: The default timezone, defaults to Europe/Berlin
  • DJANGO_ALLOWED_HOSTS: A list of hosts separated by spaces, defaults to empty list
  • DJANGO_DEBUG: Set Django debug mode, defaults to True

Data migration

The database of BotGard can be exported via:

./ dumpdata -o dump-file.json

and imported into a newly created database via:

./ migrate
./ botgard_clear_django_tables
./ loaddata dump-file.json

The import requires about 10-15 minutes per 100k objects…


See the Wiki Page.

Getting Help and Commercial support

This project is backed by UG If you need help implementing or hosting BotGard for your Institution, please contact us: [email protected]


Thanks to the Botanical Garden Jena especially Stefan Arndt for his ongoing support and input.

State and RoadMap

See RoadMap wiki page.


View Github