Development Environment
=============================
The Clowder web application is written in `Scala `_ and `Play `_.
The awesome people at `JetBrains `_ have kindly given us an license for their awesome
`IntelliJ IDEA `_, since the project is open source.
We love it and are indebted to them for it. Thank you! Some of us also use and love `ScalaIDE `_.
Both are great tools for scala developement.
Minimum Requirements
--------------------
First install required software described here :ref:`required-software`.
Check out the source code
-------------------------
You will need a `Git `_ client to checkout the source code. The code is available at the following url as a collection of git repositories:
- https://opensource.ncsa.illinois.edu/bitbucket/projects/CATS
`Atlassian `_ has kindly given us an open source license to their applications and most of our
software development happens using their tools. Thank you!
The repository `clowder` containes the web frontend and is required. It should be cloned using the following command:
::
> git clone https://opensource.ncsa.illinois.edu/stash/scm/cats/clowder.git
Most of the other repositories include specific extractors. Basic extractors are available in `extractors-core`:
::
> git clone https://opensource.ncsa.illinois.edu/stash/scm/cats/clowder.git
Execute
-------
With the required software in place and the code checked out, first start up MongoDB, then the web frontend.
::
mongod
The web frontend is setup using the `sbt `_ build system. Change directory into the
Clowder main directory and run the code using the following command
::
./sbt run
To have access to other commands enter the sbt shell first and the use one of the many commands available
(you can get a list by typing `help` in the shell). For example, to build the application for deployment type the following:
::
./sbt
> dist
The default configuration is fine for simple testing, but if you would like to modify any of the settings, you can find
the all the configuration files under the ``/conf`` directory. The following files are of particular importance:
- ``/conf/application.conf`` includes all the basic configuration entries. For example the MongoDB credentials for
deployments where MongoDB has non default configuration.
- ``/conf/play.plugins`` is usesd to turn on and off specific functionality in the system. Plugins specific to Clowder are
available under ``/app/services``.
- ``/conf/securesocial.conf`` includes configuration settings for email functionality when signup as well as ways to
configure the different identity providers (for example Twitter or Facebook). More information can be found on the
`securesocial `_ website.