{"id":13557986,"url":"https://github.com/ExCiteS/geokey","last_synced_at":"2025-04-03T12:31:32.165Z","repository":{"id":11771020,"uuid":"14307869","full_name":"ExCiteS/geokey","owner":"ExCiteS","description":"Platform for participatory mapping","archived":false,"fork":false,"pushed_at":"2022-11-22T04:29:17.000Z","size":33043,"stargazers_count":55,"open_issues_count":25,"forks_count":29,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-19T02:12:37.949Z","etag":null,"topics":["django","gis","platform","python"],"latest_commit_sha":null,"homepage":"http://geokey.org.uk","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ExCiteS.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-11T17:28:44.000Z","updated_at":"2024-06-13T04:46:06.000Z","dependencies_parsed_at":"2023-01-11T20:17:05.444Z","dependency_job_id":null,"html_url":"https://github.com/ExCiteS/geokey","commit_stats":null,"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExCiteS%2Fgeokey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExCiteS%2Fgeokey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExCiteS%2Fgeokey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExCiteS%2Fgeokey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ExCiteS","download_url":"https://codeload.github.com/ExCiteS/geokey/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247002356,"owners_count":20867447,"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":["django","gis","platform","python"],"created_at":"2024-08-01T12:04:39.997Z","updated_at":"2025-04-03T12:31:27.157Z","avatar_url":"https://github.com/ExCiteS.png","language":"Python","funding_links":[],"categories":["Python","gis"],"sub_categories":[],"readme":".. image:: https://img.shields.io/pypi/v/geokey.svg\n    :alt: PyPI Package\n    :target: https://pypi.python.org/pypi/geokey\n\n.. image:: https://img.shields.io/travis/ExCiteS/geokey/master.svg\n    :alt: Travis CI Build Status\n    :target: https://travis-ci.org/ExCiteS/geokey\n\n.. image:: https://coveralls.io/repos/ExCiteS/geokey/badge.svg?branch=master\u0026service=github\n    :alt: Coveralls Test Coverage\n    :target: https://coveralls.io/github/ExCiteS/geokey?branch=master\n\n.. image:: https://requires.io/github/ExCiteS/geokey/requirements.svg?branch=master\n    :alt: Requirements Status\n    :target: https://requires.io/github/ExCiteS/geokey/requirements/?branch=master\n\n\n======\nGeoKey\n======\n\nGeoKey is a platform for participatory mapping, that is developed by `Extreme Citizen Science \u003chttp://ucl.ac.uk/excites\u003e`_ research group at University College London.\n\n\nInstall with Docker\n===================\n\nDownload and install `Docker CE \u003chttps://www.docker.com/community-edition#download\u003e`_ for your platform. This will include the `docker-compose` command used below. (Note that when using Ubuntu, most of these commands need to be run as root or prefixed with sudo).\n\n1. Pull and extract relevant images, build the GeoKey application container:\n\n.. code-block:: console\n\n    docker-compose up --build\n\n2. In another terminal window migrate the database:\n\n.. code-block:: console\n\n    docker-compose exec geokey python manage.py migrate\n\n3. Run the *collectstatic* management command:\n\n.. code-block:: console\n\n    docker-compose exec geokey python manage.py collectstatic --noinput\n\n4. Finally run the server:\n\n.. code-block:: console\n\n    docker-compose exec geokey python manage.py runserver 0.0.0.0:8000\n\nIf everything went well, there should be a GeoKey instance available on your system at `http://localhost:9000`.\n\nFor development purposes, the source code is also mounted as a volume in the `geokey` container, which means that changes made to the source code on the host machine are reflected in the container.\n\nIn order for Grunt to compile the Handlebars templates within the container, in a new terminal window run:\n\n.. code-block:: console\n\n    docker-compose exec geokey npm run grunt\n\n\nInstall for development\n=======================\n\n**Updated documentation:** The following link will direct you to the updated guide that aims to install GeoKey on a cloud server running on a Ubuntu machine, specifically version 18.04 that will be supported until 2028. This documentation aims to simplify the processes as much as possible to make it suitable for everyone including non-technical people not familiar with Python / Linux environment but keen on running GeoKey on their own cloud servers. \nhttps://github.com/ExCiteS/geokey/blob/master/GeoKey_updated_documentation.pdf\n\nFor advanced users, please follow below.\n\nGeoKey can be run on Python 2.7 or Python 3 (Geokey 1.8 onwards).\n\n1. Update your system:\n\n.. code-block:: console\n\n    sudo apt-get update \u0026\u0026 sudo apt-get upgrade\n\n2. Install PostgreSQL and PostGIS (we follow the `official guides \u003chttp://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS21UbuntuPGSQL93Apt\u003e`_):\n\n.. code-block:: console\n\n    sudo sh -c 'echo \"deb http://apt.postgresql.org/pub/repos/apt wheezy-pgdg main\" \u003e\u003e /etc/apt/sources.list'\n    wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -\n    sudo apt-get update\n    sudo apt-get install postgresql-9.4-postgis-2.1 postgresql-contrib postgresql-server-dev-9.4\n\nNote that for Ubuntu 16.04, you don't need to add the repo and can install 9.5:\n\n.. code-block:: console\n\n    sudo apt-get install postgresql-9.5-postgis-2.2 postgresql-contrib postgresql-server-dev-9.5\n\n3. Setup all other dependencies:\n\n.. code-block:: console\n\n    sudo apt-get install python-pip python-virtualenv python-dev libjpeg-dev libmagickcore-dev libmagickwand-dev imagemagick binutils libproj-dev libav-tools gdal-bin python-gdal\n\n4. Change ImageMagick permissions for it to be able to write:\n\n    `sed -i 's/\\(\u003cpolicy domain=\"coder\" rights=\\)\"none\" \\(pattern=\"PDF\" \\/\u003e\\)/\\1\"read|write\"\\2/g' /etc/ImageMagick-6/policy.xml`\n\nFor Ubuntu you might also need to install *libavcodec-extra-52* or *libavcodec-extra-53*.\n\nFor Ubuntu 18.04 you may have to use the `following advice \u003chttps://askubuntu.com/a/1070698/89097\u003e`_ if installing *libav-tools* doesn't work and you can't find avconv.\n\n\nSetup database\n==============\n\n1. For simplicity, switch to user *postgres*:\n\n.. code-block:: console\n\n    sudo su - postgres\n\n2. Install PostGIS in *template1* (required for running tests):\n\n.. code-block:: console\n\n    psql -d template1 -c 'create extension hstore;'\n\n3. Log in to the database:\n\n.. code-block:: console\n\n    psql\n\n4. Create the user (replace *django* with your user):\n\n.. code-block:: console\n\n    postgres=# CREATE USER django WITH PASSWORD 'django123';\n\n5. Make created user a superuser on your database (this is required for tests only and shouldn't be done in production):\n\n.. code-block:: console\n\n    postgres=# ALTER ROLE django WITH superuser;\n\n6. Create the database (replace *django* with your user and *geokey* with a desired name for the database):\n\n.. code-block:: console\n\n    postgres=# CREATE DATABASE geokey OWNER django;\n\n7. Log out and connect to the database:\n\n.. code-block:: console\n\n    postgres=# \\q\n    psql -d geokey\n\n8. Install the required extensions:\n\n.. code-block:: console\n\n    geokey=# CREATE EXTENSION postgis;\n    geokey=# CREATE EXTENSION hstore;\n\n9. Log out of the database and a user:\n\n.. code-block:: console\n\n    geokey=# \\q\n    logout\n\n\nSetup GeoKey\n============\n\n1. Clone the repository:\n\n.. code-block:: console\n\n    git clone https://github.com/ExCiteS/geokey.git\n\n2. Install the package and development requirements:\n\n.. code-block:: console\n\n    cd geokey\n    pip install -e .\n    pip install -r requirements.txt\n    pip install -r requirements-dev.txt\n\nYou may need to add *sudo* before the pip commands, unless you are logged in as root or working within a virtual environment.\n\n3. Copy the directory *local_settings.example* to *local_settings*\n\n.. code-block:: console\n\n  cp -r local_settings.example local_settings\n\n4. Inside the *local_settings* open *settings.py* in a text editor and...\n\nAdd your `database settings \u003chttps://docs.djangoproject.com/en/1.11/ref/settings/#databases\u003e`_:\n\n.. code-block:: python\n\n    DATABASES = {\n        'default': {\n            'ENGINE': 'django.contrib.gis.db.backends.postgis',\n            'NAME': 'geokey',\n            'USER': 'django',\n            'PASSWORD': 'xxxxxxxxx',\n            'HOST': 'host',  # usually 'localhost'\n            'PORT': ''\n        }\n    }\n\nSet the `secret key \u003chttps://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-SECRET_KEY\u003e`_:\n\n.. code-block:: python\n\n    SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'\n\n\nSet the `STATIC_ROOT directory \u003chttps://docs.djangoproject.com/en/1.11/howto/static-files/#deployment\u003e`_:\n\n.. code-block:: python\n\n  STATIC_ROOT = '/some/path/'\n\n5. Migrate the database:\n\n.. code-block:: console\n\n    python manage.py migrate\n\n6. Add yourself as a superuser (you can use the same email and password to log into the system later):\n\n.. code-block:: console\n\n    python manage.py createsuperuser\n\n7. Run the *collectstatic* management command:\n\n.. code-block:: console\n\n    python manage.py collectstatic\n\n\nRun the test server\n-------------------\n\n.. code-block:: console\n\n    python manage.py runserver 0.0.0.0:8000\n\n\nRun tests\n---------\n\n.. code-block:: console\n\n    python manage.py test\n\nRunning tests will remove all uploaded images of contributions from the assets directory. If you require to keep them, please use custom test settings with a *--settings* flag.\n\n\nWe use open-source technologies\n===============================\n\nGeoKey was built using some amazing open-source technology. We would like to thank all contributors to these projects:\n\n- `Django \u003chttps://www.djangoproject.com/\u003e`_\n- `django-rest-framework \u003chttp://www.django-rest-framework.org/\u003e`_\n- `django-rest-framework-gis \u003chttps://github.com/djangonauts/django-rest-framework-gis\u003e`_\n- `django-hstore \u003chttps://github.com/djangonauts/django-hstore\u003e`_\n- `django-braces \u003chttps://github.com/brack3t/django-braces\u003e`_\n- `django-pgjson \u003chttps://github.com/djangonauts/django-pgjson\u003e`_\n- `django-allauth \u003chttps://github.com/pennersr/django-allauth\u003e`_\n- `django-oauth-toolkit \u003chttps://github.com/evonove/django-oauth-toolkit\u003e`_\n- `django-model-utils \u003chttps://github.com/carljm/django-model-utils\u003e`_\n- `django-simple-history \u003chttps://github.com/treyhunner/django-simple-history\u003e`_\n- `django-aggregate-if \u003chttps://github.com/henriquebastos/django-aggregate-if\u003e`_\n- `django-youtube \u003chttps://github.com/laplacesdemon/django-youtube\u003e`_\n- `psycopg2 \u003chttp://initd.org/psycopg/\u003e`_\n- `iso8601 \u003chttps://bitbucket.org/micktwomey/pyiso8601\u003e`_\n- `pillow \u003chttp://python-pillow.github.io/\u003e`_\n- `django_nose \u003chttps://github.com/django-nose/django-nose\u003e`_\n- `pytz \u003chttp://pytz.sourceforge.net/\u003e`_\n- `gdata \u003chttps://code.google.com/p/gdata-python-client/\u003e`_\n- `easy-thumbnails \u003chttps://github.com/SmileyChris/easy-thumbnails\u003e`_\n- `moment \u003chttps://github.com/zachwill/moment\u003e`_\n- `requests \u003chttp://docs.python-requests.org/en/latest/\u003e`_\n- `factory-boy \u003chttp://factoryboy.readthedocs.org/en/latest/\u003e`_\n- `Handlebars \u003chttp://handlebarsjs.com\u003e`_\n- `Modernizr \u003chttps://modernizr.com\u003e`_\n- `Leaflet \u003chttp://leafletjs.com/\u003e`_\n- `Leaflet.Draw \u003chttps://github.com/Leaflet/Leaflet.draw\u003e`_\n- `jQuery \u003chttp://jquery.com/\u003e`_\n- `Bootstrap \u003chttp://getbootstrap.com/\u003e`_\n- `bootstrap-colorpicker \u003chttps://mjolnic.com/bootstrap-colorpicker/\u003e`_\n- `bootstrap-datetimepicker \u003chttps://eonasdan.github.io/bootstrap-datetimepicker/\u003e`_\n- `bootstrap-fileinput \u003chttps://github.com/kartik-v/bootstrap-fileinput\u003e`_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FExCiteS%2Fgeokey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FExCiteS%2Fgeokey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FExCiteS%2Fgeokey/lists"}