= MOLGENIS Apps =
[[TOC()]]
Welcome to the MOLGENIS apps project. MOLGENIS apps is a suite of integrated biomedical research tools born from the MOLGENIS community.
== For researchers ==
Find more information at the app homepages:
* [wiki:AnimaldbStart animaldb] -- for tracking research animals
* [wiki:XgapStart xgap] -- for genotype and phenotype experiments
* [wiki:NgsStart ngs] -- LIMS and pipelines for illumina sequencing
* [wiki:MutationStart mutation] -- for rare diseases and mutations
* [wiki:ComputeStart compute] -- for bioinformatics computational workflows
== For developers ==
Developers can download all code as open source at:
http://www.molgenis.org/svn/molgenis_apps/trunk
The MOLGENIS apps project is structured as follows:
* [source:molgenis_apps/trunk/apps /apps] -- apps in the suite
* [source:molgenis_apps/trunk/modules /modules] -- pieces of reusable software shared between apps
* [source:molgenis_apps/trunk/generated /generated] -- autogenerated code by MOLGENIS (svn:ignore)
* [source:molgenis_apps/trunk/dist /dist] -- result of the build process (svn:ignore)
* [source:molgenis_apps/trunk/WebContent /WebContent] -- images, style sheets and scripts for on the web
* [source:molgenis_apps/trunk/build_xgap.xml /build_xyz.xml] -- script to automatically build a complete app from above
Each app is automatically build every night.
Detailed descriptions below:
=== build_xyz automatic build scripts ===
Each app can be build automatically by running {{{ant build_xyz.xml}}} or in eclipse, right-click and choose 'run as'->'Ant build'.
For example: build_xgap.xml builds a runnable version of xgap.
The build script defines all settings for the app. For example:
{{{
!#xml
}}}
The build scripts provide the following standard methods:
* clean -- cleans the generated folders
* generate -- generates all code using MOLGENIS
* compile -- compile generated code and imported modules
* test -- run the test cases defined in this app + dependent modules
* update-eclipse -- update Eclipse to only show selected app + modules
* (todo) create-jar -- create a standalone executable jar of this app
* (todo) create-war -- create a mysql + tomcat deployable war of this app
At every change in SVN, hudson will run clean-generate-compile-test and sent emails if errors are found.
=== /apps ===
Apps are applications designed to be used by an end-user. For example: /apps/xgap.
Each app is structured as follows:
* root package org.molgenis. contains specific sources and resourses
* .properties file has settings for this app [move to build.xml?]
* .testng.xml files lists all tests for this app (see hudson)
* _ui.xml lists the user interface design for this app
Developers of apps have complete freedom to do what they want within their app as other apps will ignore any code in these folders.
=== /modules ===
Modules are bundles of code that are shared between two or more apps. For example: /modules/auth.
Each module is structured as follows:
* root package org.molgenis. contains specific sources and resourses
* .properties file has settings to setup a test molgenis for this module only (see hudson)
* .testng.xml files lists all tests for this module (see hudson)
* _ui.xml lists a user interface design for this module; apps may choose to [ref] import this ui design into their application.
Developers of modules are required to:
* ensure stability of the modules by providing sufficient tests and stable programming interfaces.
* mark yet unstable modules with a suffix as '-dev'. For example /modules/matrix-dev.
* when changing an existing module copy it into a -dev version and develop on that until the code is stable before promoting it to stable
* monitor the tests of all dependent apps on hudson and fix or undo any problems they you may have caused.
=== /generated (svn:ignore) ===
This folder contains all program resources autogenerated by the build script.
Typically, there are:
* /java -- generated java
* /python -- generated python
* /
[[BIG POINT: I want new generators not immediately in MOLGENIS core but instead as separate modules; we need a 'registerGenerator' method to make this easy ]]
=== /WebContent ===
All resources for the web, such as images, css and javascript, can be stored in /WebContent.
Each app or module will create subfolders. For example:
* /res -- contains resource files that are created by hand
* /css -- contains css files
* /xgap -- contains xgap specific css files
* /img -- contains images
* /xgap -- contains xgap specific css files
* /scritps -- contains scripts.
* /xgap -- contains xgap specific css files
* /generated-res -- contains generator produced resource files (svn:ignore).
=== /dist (svn:ignore) ===