Skip to content
This repository has been archived by the owner on Aug 24, 2021. It is now read-only.

Technologies

sebastian-raubach edited this page May 16, 2018 · 7 revisions

Technologies

Germinate uses third-party software libraries to extend its functionality. The following sections will list these libraries and explain their purpose:

JavaScript libraries

baguetteBox.js
baguetteBox.js is used to create popups of images and text. https://github.com/feimosi/baguetteBox.js
Bootstrap Notify
We use Bootstrap Notify to display notifications on the website. https://github.com/mouse0270/bootstrap-notify
Bootstrap Switch
Bootstrap Switch makes it easy to use switch or toggle buttons on the web interface. https://github.com/Bttstrp/bootstrap-switch
CookieCuttr
Because of the EU "Cookie Law", websites have to let the user know when they're using cookies. CookieCuttr displays a banner notifying the user of just that. https://github.com/weare2ndfloor/cookieCuttr
D3.js
We us D3.js to generate dynamic and interactive data visualizations. Almost all charts in Germinate are created using this library. https://github.com/mbostock/d3
d3Pie
This is a plugin for D3.js that we use to easily create pie charts. https://github.com/benkeen/d3pie
D3.tip
This is a plugin for D3.js that allows easy creation of tooltips for SVG elements. https://github.com/Caged/d3-tip
html2canvas
html2canvas is used to convert the d3.js chart legend to an image and download it. https://github.com/niklasvh/html2canvas
jQuery
jQuery is the most popular JavaScript library out there. It allows easy selection, traversal and manipulation of DOM elements. https://github.com/jquery/jquery
lasso.js
This is a plugin for D3.js that allows freehand drawing of selections within D3.js charts. https://github.com/skokenes/D3-Lasso-Plugin
Leaflet
Leaflet is an open-source JavaScript library for mobile-friendly interactive maps. We use it throughout Germinate to display data on geographic maps. https://github.com/Leaflet/Leaflet
Peity
Peity is a jQuery plugin that converts an element's content into a mini pie, donut, line or bar chart. Germinate uses it to display donut charts for the Passport Data Completeness Index. https://github.com/benpickles/peity
prettify.js
Prettify is used to make code on website more pretty, e.g. it adds basic syntax highlighting. The main use of this library is for the SQL debug messages that appear when Germinate is run in debug mode. https://github.com/google/code-prettify
saveSvgAsPng.js
This library allows the user to save a SVG image in the browser (usually generated by D3.js) to a PNG file on their computer. https://github.com/exupero/saveSvgAsPng
Spectrum
Spectrum allows us to easily add color-pickers to the web-interface. HTML5 introduced the color-type input element, but many current browsers still don't support it. We also always have to consider users with outdated browsers, so unfortunately we have to fall back to a third-party library for this purpose. https://github.com/bgrins/spectrum
zxcvbn
zxcvbn is a password strength estimator inspired by password crackers. We use it to measure password strength when a user registers to give them feedback on their choice of password. https://github.com/dropbox/zxcvbn

Web frameworks

Bootstrap
Bootstrap is one of the most popular web front-end frameworks out there. It provides HTML- and CSS-based templates for interface components and layouts alongside JavaScript extensions for additional functionality. https://github.com/twbs/bootstrap
Bootstrap-xxs
Bootstrap-xxs adds a smaller size to Bootstrap's grid system. https://github.com/auipga/bootstrap-xxs
flag-icon-css
These flags are used throughout the website wherever a country is represented.. https://github.com/lipis/flag-icon-css

Font frameworks

Material Design Icons
Material Design Icons is an icon set inspired by Google's Material Design guidelines. We use it throughout Germinate. https://github.com/Templarian/MaterialDesign

Java libraries

Apache Commons CLI
We use this library to easily handle command line parameters for out data import code. https://github.com/apache/commons-cli
Apache Commons FileUpload
This library is used to make the upload of files from the browser to the server easier. https://github.com/apache/commons-fileupload
Apache Commons IO
This is a widely used utility library. https://github.com/apache/commons-io
Apache Commons Logging
A popular logging library. https://github.com/apache/commons-logging
Apache HttpComponents Client
This library is used to easily communicate with Gatekeeper via HTTP requests. https://github.com/apache/httpclient
Apache HttpComponents Core
Required by Apache HttpComponents Client. https://github.com/apache/httpcore
Flapjack
Flapjack is a graphical genotype viewer developed at The James Hutton Institute. Germinate uses it on the server side to export genotypic data and allele frequency data. https://ics.hutton.ac.uk/flapjack
Flyway
Flyway is a database migration tool that Germinate uses to update its database between releases. https://flywaydb.org
GWT
GWT is the main building stone of Germinate. It's the web development framework we chose to use. https://github.com/gwtproject/gwt
GWT-Charts
This is a GWT implementation of the JavaScript Google Charts API. https://code.google.com/p/gwt-charts
GwtQuery
We use this library to use jQuery-like code in Java. https://github.com/ArcBees/gwtquery
Intro.js
Intro.js is used to display interactive introduction tours that guide the user through a number of steps and explains certain parts of the web interface. https://github.com/usablica/intro.js/
jBCrypt
jBCrypt is a Java implementation of the OpenBSD's Blowfish password hashing algorithm. https://github.com/jeremyh/jBCrypt
JAK
This "Java API for KML" is used when exporting geographic information to KML format. https://github.com/micromata/javaapiforkml
JAXB
Required by JAK. https://jaxb.java.net/
minimal-json
This library is used as part of the data import code. https://github.com/ralfstx/minimal-json
MySQL Connector/J
This is a library that allows us to easily communicate with a MySQL database from Java code. https://github.com/mysql/mysql-connector-j
SimpleXML
We use SimpleXML to parse the custom menu of Germinate easily. https://github.com/ngallagher/simplexml
Thumbnailator
This is a utility library used to create thumbnails of images. Whenever a new image is copied to the full-size image folder of Germinate, we will use this library to automatically generate a thumbnail for it. https://github.com/coobird/thumbnailator