This is the source code for Joinup (https://joinup.ec.europa.eu/). Joinup is a collaborative platform created by the European Commission and funded by the European Union via the Interoperability solutions for public administrations, businesses and citizens (ISA²) Programme.
It offers several services that aim to help e-Government professionals share their experience with each other. We also hope to support them to find, choose, re-use, develop and implement interoperability solutions.
The Joinup platform is developed as a Drupal 8 distribution, and therefore tries to follow the 'drupal-way' as much as possible.
You are free to fork this project to host your own collaborative platform. Joinup is licensed under the EUPL, which is compatible with the GPL.
Find the latest Joinup source code release by clicking here.
See our contributors guide.
Running your own instance of Joinup
- A regular LAMP stack running PHP 7.1.0 or higher
- Virtuoso 7 (Triplestore database)
- SASS compiler
- Apache Solr
Dependency management and builds
We use Drupal composer as a template for the project. For the most up-to-date information on how to use Composer, build the project using Phing, or on how to run the Behat test, please refer directly to the documention of drupal-composer.
- Clone the repository.
$ git clone https://github.com/ec-europa/joinup-dev.git
- Use composer to install the dependencies.
$ cd joinup-dev $ composer install
- Install Solr. If you already have Solr installed you can configure it manually by following the installation instructions from the Search API Solr module. Or you can execute the following command to download and configure a local instance of Solr. It will be installed in the folder
$ ./vendor/bin/phing setup-apache-solr
- Install Virtuoso. For basic instructions, see setting up Virtuoso. Due to a bug in Virtuoso 6 it is recommended to use Virtuoso 7. During installation some RDF based taxonomies will be imported from the
resources/fixturesfolder. Make sure Virtuoso can read from this folder by adding it to the
DirsAllowedsetting in your
virtuoso.ini. For example:
DirsAllowed = /var/www/joinup/resources/fixtures, /usr/share/virtuoso-opensource-7/vad
- Install the official SASS compiler. This depends on Ruby being installed on your system.
$ gem install sass
- Install Selenium. The simplest way of doing this is using Docker to install and run it with a single command. This will download all necessary files and start the browser in the background in headless mode:
$ docker run -d -p 4444:4444 --network=host selenium/standalone-chrome
- Point the document root of your webserver to the 'web/' directory.
Create a local build properties file
Create a new file in the root of the project named `build.properties.local using your favourite text editor:
$ vim build.properties.local
This file will contain configuration which is unique to your development machine. This is mainly useful for specifying your database credentials and the username and password of the Drupal admin user so they can be used during the installation.
Because these settings are personal they should not be shared with the rest of the team. Make sure you never commit this file!
All options you can use can be found in the
build.properties.dist file. Just copy the lines you want to override and change their values. Do not copy the entire
build.properties.dist file, since this would override all options.
# The location of the Composer binary. composer.bin = /usr/bin/composer # The location of the Virtuoso console (Debian / Ubuntu). isql.bin = /usr/bin/virtuoso-isql # The location of the Virtuoso console (Arch Linux). isql.bin = /usr/bin/virtuoso-isql # The location of the Virtuoso console (Redhat / Fedora / OSX with Homebrew). isql.bin = /usr/local/bin/isql # SQL database settings. drupal.db.name = my_database drupal.db.user = root drupal.db.password = hunter2 # SPARQL database settings. sparql.dsn = localhost sparql.user = my_username sparql.password = qwerty123 # Admin user. drupal.admin.username = admin drupal.admin.password = admin # The base URL to use in tests. drupal.base_url = http://joinup.local # Verbosity of Drush commands. Set to 'yes' for verbose output. drush.verbose = yes
Build the project
Execute the Phing target
build-dev to build a development instance, then install the site with
$ ./vendor/bin/phing build-dev $ ./vendor/bin/phing install-dev
Run the tests
Run the Behat test suite to validate your installation.
$ cd tests $ ./behat
During development you can enable Behat test screen-shots by uncomment this line in
// use \Drupal\joinup\Traits\ScreenShotTrait;
and use the
pretty formatter instead of
formatters: pretty: ~
Also run the PHPUnit tests, from the web root.
$ cd web $ ../vendor/bin/phpunit
See the readme in the theme folder.
- In Rdf draft module there is information on handling draft in CRUD operations for rdf entities.
- In Joinup notification module there is information on how to handle notifications in Joinup.
- In Joinup core module there is information on how to handle and create workflows.
- In Matomo analytics you find information about working with the web analytics platform used in Joinup.