CKAN
====

Overview
--------

CKAN is an open-source DMS (data management system) for powering data hubs and data portals. CKAN makes it easy to publish, share and use data. It is written in python, has Flask-based web interface and uses Postgres database with PostGIS extension. CKAN exposes API which allows third parties to create extensions.

The project is split to several components. The most important ones are:

- **ckan** - https://github.com/ckan/ckan - The main DMS component with Flask frontend.
- **datapusher** - https://github.com/ckan/datapusher - A standalone web service that pushes data files from a CKAN site's resources into its DataStore.
- **ckan-service-provider** - https://github.com/ckan/ckan-service-provider - A library for making web services that make functions available as synchronous or asynchronous jobs.

Apart from that, CKAN requires a *Redis* in-memory data store and *Solr* search platform instance. Note that CKAN is shipped with Solr schemas which don't work well with up-to-date versions of Solr, therefore we use older Solr 6.5.1.

DataPusher
----------

DataPusher is running as a separate service. Its development is a bit out of sync with the core ckan component. SKAN has already moved to python 3, however datapusher is still working only with python 2.7. Due to that, DataPusher has its own image and is running as a separate container.

Alpine, being a progressive linux distribution, stopped supporting uwsgi connector for python 2.7 in Alpine 3.11, therefore the container needs to be based on older Alpine 3.10 which still ships with *uwsgi-python2*.

The connection between CKAN and DataPusher is done via HTTPS endpoints. There is a possibility to disable TLS certificate verification, but a better solution seems to be import any self-signed certificate into the DataPusher's trust store. There is a script which automatically handles the import whenever the DataPusher container starts.

Extensions
----------

CKAN container comes with several preinstalled and preconfigured extensions. Historically, there were more extensions, but over the time CKAN's API evolved and the development has moved to python 3, so majority of the historical extensions are no longer operational.

ckan/ckanext-basiccharts
^^^^^^^^^^^^^^^^^^^^^^^^

- URL: https://github.com/ckan/ckanext-basiccharts

Adds Line, Bar and Pie charts. It uses Flot Charts, which is compatible with all major browsers (including IE6+).

ckan/ckanext-spatial
^^^^^^^^^^^^^^^^^^^^

- URL: https://github.com/ckan/ckanext-spatial

Contains plugins that add geospatial capabilities to CKAN. E.g. a spatial field on the default CKAN dataset schema which allows to perform spatial queries and to display the dataset extent on the frontend.

ckan/ckanext-geoview
^^^^^^^^^^^^^^^^^^^^

- URL: https://github.com/ckan/ckanext-geoview

Contains view plugins to display geospatial files and services in CKAN. It contains an OpenLayers based viewer and other view plugins that used to be part of ckanext-spatial.

ckan/ckanext-mapviews
^^^^^^^^^^^^^^^^^^^^^

- URL: https://github.com/ckan/ckanext-mapviews

Adds regular and choropleth maps to CKAN, using the new CKAN Resource View. It uses LeafletJS, which is compatible with all major browsers (including IE7+).

XVTSolutions/ckanext-spatialUI
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- URL: https://github.com/XVTSolutions/ckanext-spatialUI

Provides the UI elements for spatial search. Spatial search widget and dataset extent map.

aptivate/ckanext-datasetthumbnail
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- URL: https://github.com/aptivate/ckanext-datasetthumbnail

Adds support for generation and display of thumbnail images.

datagvat/ckanext-dgvat_xls
^^^^^^^^^^^^^^^^^^^^^^^^^^

- URL: https://github.com/datagvat/ckanext-dgvat_xls

Allows group admin to export datasets from their organizations to export all datasets to a .xls worksheet. Sysadmins may choose to export datasets from any organization they want or to export all datasets of all groups.
