You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by al...@apache.org on 2015/06/19 16:08:20 UTC

[8/8] incubator-taverna-databundle-viewer git commit: Pull from github

Pull from github


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/commit/ae912ef2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/tree/ae912ef2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/diff/ae912ef2

Branch: refs/heads/master
Commit: ae912ef29fe42b808840c9b4833a21d0e6cae3a9
Parents: 17edf13
Author: Alan R Williams <al...@manchester.ac.uk>
Authored: Fri Jun 19 14:52:18 2015 +0100
Committer: Alan R Williams <al...@manchester.ac.uk>
Committed: Fri Jun 19 14:52:18 2015 +0100

----------------------------------------------------------------------
 .gitignore                                      |  14 +
 .ruby-version                                   |   1 +
 Gemfile                                         |  67 +++++
 Gemfile.lock                                    | 279 ++++++++++++++++++
 Procfile                                        |   1 +
 Rakefile                                        |   6 +
 app/assets/images/.keep                         |   0
 app/assets/javascripts/application.coffee       |  40 +++
 app/assets/javascripts/application.js           |  15 +
 app/assets/stylesheets/application.css          |  15 +
 app/assets/stylesheets/application.scss         |  36 +++
 app/controllers/application_controller.rb       |  42 +++
 app/controllers/callbacks_controller.rb         |  30 ++
 app/controllers/concerns/.keep                  |   0
 app/controllers/welcome_controller.rb           |  23 ++
 app/helpers/application_helper.rb               |  21 ++
 app/mailers/.keep                               |   0
 app/models/.keep                                |   0
 app/models/concerns/.keep                       |   0
 app/models/user.rb                              |  49 ++++
 app/views/devise/confirmations/new.html.slim    |  11 +
 .../mailer/confirmation_instructions.html.slim  |   8 +
 .../reset_password_instructions.html.slim       |  12 +
 .../devise/mailer/unlock_instructions.html.slim |  10 +
 app/views/devise/passwords/edit.html.slim       |  22 ++
 app/views/devise/passwords/new.html.slim        |  11 +
 app/views/devise/registrations/edit.html.slim   |  37 +++
 app/views/devise/registrations/new.html.slim    |  31 ++
 app/views/devise/sessions/new.html.slim         |  27 ++
 app/views/devise/shared/_links.html.slim        |  25 ++
 app/views/devise/unlocks/new.html.slim          |  11 +
 app/views/layouts/application.html.erb          |  14 +
 app/views/layouts/application.html.slim         |  48 ++++
 app/views/layouts/devise.html.slim              |  13 +
 app/views/welcome/index.html.slim               |   0
 bin/bundle                                      |   3 +
 bin/rails                                       |   4 +
 bin/rake                                        |   4 +
 bin/setup                                       |  29 ++
 bin/spring                                      |  15 +
 config.ru                                       |   4 +
 config/application.rb                           |  35 +++
 config/boot.rb                                  |   3 +
 config/database.yml.example                     |  85 ++++++
 config/environment.rb                           |   5 +
 config/environments/development.rb              |  41 +++
 config/environments/production.rb               |  79 +++++
 config/environments/test.rb                     |  42 +++
 config/initializers/assets.rb                   |  11 +
 config/initializers/backtrace_silencers.rb      |   7 +
 config/initializers/cookies_serializer.rb       |   3 +
 config/initializers/devise.rb                   | 269 +++++++++++++++++
 config/initializers/filter_parameter_logging.rb |   4 +
 config/initializers/generators.rb               |  18 ++
 config/initializers/inflections.rb              |  16 ++
 config/initializers/mime_types.rb               |   4 +
 config/initializers/session_store.rb            |   3 +
 config/initializers/wrap_parameters.rb          |  14 +
 config/locales/devise.en.yml                    |  60 ++++
 config/locales/en.yml                           |  23 ++
 config/puma.rb                                  |  15 +
 config/routes.rb                                |  60 ++++
 config/secrets.yml                              |  22 ++
 .../20150603155333_devise_create_users.rb       |  45 +++
 .../20150610102232_add_columns_to_users.rb      |   6 +
 db/schema.rb                                    |  41 +++
 db/seeds.rb                                     |   7 +
 lib/assets/.keep                                |   0
 lib/tasks/.keep                                 |   0
 log/.keep                                       |   0
 public/404.html                                 |  67 +++++
 public/422.html                                 |  67 +++++
 public/500.html                                 |  66 +++++
 public/favicon.ico                              |   0
 public/robots.txt                               |   5 +
 spec/factories/users.rb                         |  27 ++
 spec/feature/devise/registration_spec.rb        |  75 +++++
 spec/feature/devise/session_spec.rb             |  83 ++++++
 spec/models/user_spec.rb                        |  41 +++
 spec/spec_helper.rb                             |  60 ++++
 spec/support/login_helpers.rb                   |  25 ++
 .../fonts/glyphicons-halflings-regular.eot      | Bin 0 -> 20127 bytes
 .../fonts/glyphicons-halflings-regular.svg      | 288 +++++++++++++++++++
 .../fonts/glyphicons-halflings-regular.ttf      | Bin 0 -> 45404 bytes
 .../fonts/glyphicons-halflings-regular.woff     | Bin 0 -> 23424 bytes
 .../fonts/glyphicons-halflings-regular.woff2    | Bin 0 -> 18028 bytes
 vendor/assets/img/blue.png                      | Bin 0 -> 2185 bytes
 vendor/assets/img/boxed-bg.jpg                  | Bin 0 -> 123770 bytes
 vendor/assets/img/boxed-bg.png                  | Bin 0 -> 43694 bytes
 vendor/assets/img/default-50x50.gif             | Bin 0 -> 184 bytes
 vendor/assets/img/icons.png                     | Bin 0 -> 1896 bytes
 vendor/assets/javascripts/.keep                 |   0
 vendor/assets/javascripts/bootstrap.min.js      |   7 +
 vendor/assets/javascripts/icheck.min.js         |  10 +
 vendor/assets/stylesheets/.keep                 |   0
 vendor/assets/stylesheets/AdminLTE.min.css      |   7 +
 vendor/assets/stylesheets/blue.css              |  62 ++++
 vendor/assets/stylesheets/bootstrap.min.css     |   5 +
 vendor/assets/stylesheets/skin-blue.min.css     |   1 +
 99 files changed, 2792 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..366861b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+# See https://help.github.com/articles/ignoring-files for more about ignoring files.
+#
+# If you find yourself ignoring temporary files generated by your text editor
+# or operating system, you probably want to add a global ignore instead:
+#   git config --global core.excludesfile '~/.gitignore_global'
+
+# Ignore bundler config.
+/.bundle
+
+# Ignore all logfiles and tempfiles.
+/log/*
+!/log/.keep
+/tmp
+database.yml

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/.ruby-version
----------------------------------------------------------------------
diff --git a/.ruby-version b/.ruby-version
new file mode 100644
index 0000000..58f65ad
--- /dev/null
+++ b/.ruby-version
@@ -0,0 +1 @@
+ruby-2.2.1

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/Gemfile
----------------------------------------------------------------------
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..b2e8022
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,67 @@
+source 'https://rubygems.org'
+ruby '2.2.1'
+
+# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
+gem 'rails', '4.2.1'
+
+gem 'puma'
+
+gem 'devise'
+gem 'omniauth-facebook'
+gem 'omniauth-google-oauth2'
+# Use postgresql as the database for Active Record
+gem 'pg'
+# Use SCSS for stylesheets
+gem 'sass-rails', '~> 5.0'
+# Use Uglifier as compressor for JavaScript assets
+gem 'uglifier', '>= 1.3.0'
+# Use CoffeeScript for .coffee assets and views
+gem 'coffee-rails', '~> 4.1.0'
+# See https://github.com/rails/execjs#readme for more supported runtimes
+# gem 'therubyracer', platforms: :ruby
+
+gem 'slim'
+gem 'slim-rails'
+
+# Use jquery as the JavaScript library
+gem 'jquery-rails'
+# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
+gem 'jbuilder', '~> 2.0'
+# bundle exec rake doc:rails generates the API under doc/api.
+gem 'sdoc', '~> 0.4.0', group: :doc
+
+gem 'carrierwave'
+# Use ActiveModel has_secure_password
+# gem 'bcrypt', '~> 3.1.7'
+
+# Use Unicorn as the app server
+# gem 'unicorn'
+
+# Use Capistrano for deployment
+# gem 'capistrano-rails', group: :development
+
+group :development, :test do
+  gem 'better_errors'
+  gem 'binding_of_caller'
+  gem 'quiet_assets'
+
+  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
+  gem 'spring'
+
+  gem 'rspec-rails'
+  gem 'factory_girl_rails'
+  gem 'database_rewinder'
+  gem 'capybara'
+  gem 'capybara-webkit'
+  gem 'capybara-screenshot'
+  gem 'headless'
+  gem 'faker'
+end
+
+group :test do
+  gem 'codeclimate-test-reporter'
+end
+
+group :production do
+  gem 'rails_12factor'
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/Gemfile.lock
----------------------------------------------------------------------
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..168029c
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,279 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    actionmailer (4.2.1)
+      actionpack (= 4.2.1)
+      actionview (= 4.2.1)
+      activejob (= 4.2.1)
+      mail (~> 2.5, >= 2.5.4)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+    actionpack (4.2.1)
+      actionview (= 4.2.1)
+      activesupport (= 4.2.1)
+      rack (~> 1.6)
+      rack-test (~> 0.6.2)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+      rails-html-sanitizer (~> 1.0, >= 1.0.1)
+    actionview (4.2.1)
+      activesupport (= 4.2.1)
+      builder (~> 3.1)
+      erubis (~> 2.7.0)
+      rails-dom-testing (~> 1.0, >= 1.0.5)
+      rails-html-sanitizer (~> 1.0, >= 1.0.1)
+    activejob (4.2.1)
+      activesupport (= 4.2.1)
+      globalid (>= 0.3.0)
+    activemodel (4.2.1)
+      activesupport (= 4.2.1)
+      builder (~> 3.1)
+    activerecord (4.2.1)
+      activemodel (= 4.2.1)
+      activesupport (= 4.2.1)
+      arel (~> 6.0)
+    activesupport (4.2.1)
+      i18n (~> 0.7)
+      json (~> 1.7, >= 1.7.7)
+      minitest (~> 5.1)
+      thread_safe (~> 0.3, >= 0.3.4)
+      tzinfo (~> 1.1)
+    addressable (2.3.8)
+    arel (6.0.0)
+    bcrypt (3.1.10)
+    better_errors (2.1.1)
+      coderay (>= 1.0.0)
+      erubis (>= 2.6.6)
+      rack (>= 0.9.0)
+    binding_of_caller (0.7.2)
+      debug_inspector (>= 0.0.1)
+    builder (3.2.2)
+    capybara (2.4.4)
+      mime-types (>= 1.16)
+      nokogiri (>= 1.3.3)
+      rack (>= 1.0.0)
+      rack-test (>= 0.5.4)
+      xpath (~> 2.0)
+    capybara-screenshot (1.0.9)
+      capybara (>= 1.0, < 3)
+      launchy
+    capybara-webkit (1.5.2)
+      capybara (>= 2.3.0, < 2.5.0)
+      json
+    carrierwave (0.10.0)
+      activemodel (>= 3.2.0)
+      activesupport (>= 3.2.0)
+      json (>= 1.7)
+      mime-types (>= 1.16)
+    codeclimate-test-reporter (0.4.7)
+      simplecov (>= 0.7.1, < 1.0.0)
+    coderay (1.1.0)
+    coffee-rails (4.1.0)
+      coffee-script (>= 2.2.0)
+      railties (>= 4.0.0, < 5.0)
+    coffee-script (2.4.1)
+      coffee-script-source
+      execjs
+    coffee-script-source (1.9.1.1)
+    database_rewinder (0.5.2)
+    debug_inspector (0.0.2)
+    devise (3.5.1)
+      bcrypt (~> 3.0)
+      orm_adapter (~> 0.1)
+      railties (>= 3.2.6, < 5)
+      responders
+      thread_safe (~> 0.1)
+      warden (~> 1.2.3)
+    diff-lcs (1.2.5)
+    docile (1.1.5)
+    erubis (2.7.0)
+    execjs (2.5.2)
+    factory_girl (4.5.0)
+      activesupport (>= 3.0.0)
+    factory_girl_rails (4.5.0)
+      factory_girl (~> 4.5.0)
+      railties (>= 3.0.0)
+    faker (1.4.3)
+      i18n (~> 0.5)
+    faraday (0.9.1)
+      multipart-post (>= 1.2, < 3)
+    globalid (0.3.5)
+      activesupport (>= 4.1.0)
+    hashie (3.4.2)
+    headless (2.1.0)
+    i18n (0.7.0)
+    jbuilder (2.2.16)
+      activesupport (>= 3.0.0, < 5)
+      multi_json (~> 1.2)
+    jquery-rails (4.0.3)
+      rails-dom-testing (~> 1.0)
+      railties (>= 4.2.0)
+      thor (>= 0.14, < 2.0)
+    json (1.8.3)
+    jwt (1.5.0)
+    launchy (2.4.3)
+      addressable (~> 2.3)
+    loofah (2.0.2)
+      nokogiri (>= 1.5.9)
+    mail (2.6.3)
+      mime-types (>= 1.16, < 3)
+    mime-types (2.6.1)
+    mini_portile (0.6.2)
+    minitest (5.7.0)
+    multi_json (1.11.0)
+    multi_xml (0.5.5)
+    multipart-post (2.0.0)
+    nokogiri (1.6.6.2)
+      mini_portile (~> 0.6.0)
+    oauth2 (1.0.0)
+      faraday (>= 0.8, < 0.10)
+      jwt (~> 1.0)
+      multi_json (~> 1.3)
+      multi_xml (~> 0.5)
+      rack (~> 1.2)
+    omniauth (1.2.2)
+      hashie (>= 1.2, < 4)
+      rack (~> 1.0)
+    omniauth-facebook (2.0.1)
+      omniauth-oauth2 (~> 1.2)
+    omniauth-google-oauth2 (0.2.6)
+      omniauth (> 1.0)
+      omniauth-oauth2 (~> 1.1)
+    omniauth-oauth2 (1.3.0)
+      oauth2 (~> 1.0)
+      omniauth (~> 1.2)
+    orm_adapter (0.5.0)
+    pg (0.18.2)
+    puma (2.11.3)
+      rack (>= 1.1, < 2.0)
+    quiet_assets (1.1.0)
+      railties (>= 3.1, < 5.0)
+    rack (1.6.1)
+    rack-test (0.6.3)
+      rack (>= 1.0)
+    rails (4.2.1)
+      actionmailer (= 4.2.1)
+      actionpack (= 4.2.1)
+      actionview (= 4.2.1)
+      activejob (= 4.2.1)
+      activemodel (= 4.2.1)
+      activerecord (= 4.2.1)
+      activesupport (= 4.2.1)
+      bundler (>= 1.3.0, < 2.0)
+      railties (= 4.2.1)
+      sprockets-rails
+    rails-deprecated_sanitizer (1.0.3)
+      activesupport (>= 4.2.0.alpha)
+    rails-dom-testing (1.0.6)
+      activesupport (>= 4.2.0.beta, < 5.0)
+      nokogiri (~> 1.6.0)
+      rails-deprecated_sanitizer (>= 1.0.1)
+    rails-html-sanitizer (1.0.2)
+      loofah (~> 2.0)
+    rails_12factor (0.0.3)
+      rails_serve_static_assets
+      rails_stdout_logging
+    rails_serve_static_assets (0.0.4)
+    rails_stdout_logging (0.0.3)
+    railties (4.2.1)
+      actionpack (= 4.2.1)
+      activesupport (= 4.2.1)
+      rake (>= 0.8.7)
+      thor (>= 0.18.1, < 2.0)
+    rake (10.4.2)
+    rdoc (4.2.0)
+    responders (2.1.0)
+      railties (>= 4.2.0, < 5)
+    rspec-core (3.2.3)
+      rspec-support (~> 3.2.0)
+    rspec-expectations (3.2.1)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.2.0)
+    rspec-mocks (3.2.1)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.2.0)
+    rspec-rails (3.2.3)
+      actionpack (>= 3.0, < 4.3)
+      activesupport (>= 3.0, < 4.3)
+      railties (>= 3.0, < 4.3)
+      rspec-core (~> 3.2.0)
+      rspec-expectations (~> 3.2.0)
+      rspec-mocks (~> 3.2.0)
+      rspec-support (~> 3.2.0)
+    rspec-support (3.2.2)
+    sass (3.4.14)
+    sass-rails (5.0.3)
+      railties (>= 4.0.0, < 5.0)
+      sass (~> 3.1)
+      sprockets (>= 2.8, < 4.0)
+      sprockets-rails (>= 2.0, < 4.0)
+      tilt (~> 1.1)
+    sdoc (0.4.1)
+      json (~> 1.7, >= 1.7.7)
+      rdoc (~> 4.0)
+    simplecov (0.10.0)
+      docile (~> 1.1.0)
+      json (~> 1.8)
+      simplecov-html (~> 0.10.0)
+    simplecov-html (0.10.0)
+    slim (3.0.6)
+      temple (~> 0.7.3)
+      tilt (>= 1.3.3, < 2.1)
+    slim-rails (3.0.1)
+      actionmailer (>= 3.1, < 5.0)
+      actionpack (>= 3.1, < 5.0)
+      activesupport (>= 3.1, < 5.0)
+      railties (>= 3.1, < 5.0)
+      slim (~> 3.0)
+    spring (1.3.6)
+    sprockets (3.2.0)
+      rack (~> 1.0)
+    sprockets-rails (2.3.1)
+      actionpack (>= 3.0)
+      activesupport (>= 3.0)
+      sprockets (>= 2.8, < 4.0)
+    temple (0.7.6)
+    thor (0.19.1)
+    thread_safe (0.3.5)
+    tilt (1.4.1)
+    tzinfo (1.2.2)
+      thread_safe (~> 0.1)
+    uglifier (2.7.1)
+      execjs (>= 0.3.0)
+      json (>= 1.8.0)
+    warden (1.2.3)
+      rack (>= 1.0)
+    xpath (2.0.0)
+      nokogiri (~> 1.3)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  better_errors
+  binding_of_caller
+  capybara
+  capybara-screenshot
+  capybara-webkit
+  carrierwave
+  codeclimate-test-reporter
+  coffee-rails (~> 4.1.0)
+  database_rewinder
+  devise
+  factory_girl_rails
+  faker
+  headless
+  jbuilder (~> 2.0)
+  jquery-rails
+  omniauth-facebook
+  omniauth-google-oauth2
+  pg
+  puma
+  quiet_assets
+  rails (= 4.2.1)
+  rails_12factor
+  rspec-rails
+  sass-rails (~> 5.0)
+  sdoc (~> 0.4.0)
+  slim
+  slim-rails
+  spring
+  uglifier (>= 1.3.0)

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/Procfile
----------------------------------------------------------------------
diff --git a/Procfile b/Procfile
new file mode 100644
index 0000000..c2c566e
--- /dev/null
+++ b/Procfile
@@ -0,0 +1 @@
+web: bundle exec puma -C config/puma.rb

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/Rakefile
----------------------------------------------------------------------
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..ba6b733
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,6 @@
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require File.expand_path('../config/application', __FILE__)
+
+Rails.application.load_tasks

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/assets/images/.keep
----------------------------------------------------------------------
diff --git a/app/assets/images/.keep b/app/assets/images/.keep
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/assets/javascripts/application.coffee
----------------------------------------------------------------------
diff --git a/app/assets/javascripts/application.coffee b/app/assets/javascripts/application.coffee
new file mode 100644
index 0000000..aa391a5
--- /dev/null
+++ b/app/assets/javascripts/application.coffee
@@ -0,0 +1,40 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# This is a manifest file that'll be compiled into application.js, which will include all the files
+# listed below.
+#
+# Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
+# or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
+#
+# It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
+# compiled file.
+#
+# Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
+# about supported directives.
+#
+#= require jquery2.min.js
+#= require bootstrap.min
+#= require icheck.min
+
+$ ->
+  $('input').iCheck
+    checkboxClass: 'icheckbox_square-blue'
+    radioClass: 'iradio_square-blue'
+    increaseArea: '20%'
+  return

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/assets/javascripts/application.js
----------------------------------------------------------------------
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
new file mode 100644
index 0000000..646c5ab
--- /dev/null
+++ b/app/assets/javascripts/application.js
@@ -0,0 +1,15 @@
+// This is a manifest file that'll be compiled into application.js, which will include all the files
+// listed below.
+//
+// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
+// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
+//
+// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
+// compiled file.
+//
+// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
+// about supported directives.
+//
+//= require jquery
+//= require jquery_ujs
+//= require_tree .

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/assets/stylesheets/application.css
----------------------------------------------------------------------
diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css
new file mode 100644
index 0000000..f9cd5b3
--- /dev/null
+++ b/app/assets/stylesheets/application.css
@@ -0,0 +1,15 @@
+/*
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
+ * listed below.
+ *
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
+ *
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
+ * compiled file so the styles you add here take precedence over styles defined in any styles
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
+ * file per style scope.
+ *
+ *= require_tree .
+ *= require_self
+ */

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/assets/stylesheets/application.scss
----------------------------------------------------------------------
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
new file mode 100644
index 0000000..6378ace
--- /dev/null
+++ b/app/assets/stylesheets/application.scss
@@ -0,0 +1,36 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*   http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+/*
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
+ * listed below.
+ *
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
+ *
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
+ * compiled file so the styles you add here take precedence over styles defined in any styles
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
+ * file per style scope.
+ *
+  *= require bootstrap.min
+  *= require AdminLTE.min
+  *= require skin-blue.min
+  *= require blue
+ */

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/controllers/application_controller.rb
----------------------------------------------------------------------
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
new file mode 100644
index 0000000..ce960ee
--- /dev/null
+++ b/app/controllers/application_controller.rb
@@ -0,0 +1,42 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+class ApplicationController < ActionController::Base
+  # Prevent CSRF attacks by raising an exception.
+  # For APIs, you may want to use :null_session instead.
+  protect_from_forgery with: :exception
+  layout :layout_by_resource
+
+  before_filter :configure_permitted_parameters, if: :devise_controller?
+
+  protected
+
+  def configure_permitted_parameters
+    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:firstname, :lastname, :email, :password, :password_confirmation) }
+    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:firstname, :lastname, :email, :password, :password_confirmation) }
+  end
+
+  def layout_by_resource
+    if devise_controller?
+      'devise'
+    else
+      'application'
+    end
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/controllers/callbacks_controller.rb
----------------------------------------------------------------------
diff --git a/app/controllers/callbacks_controller.rb b/app/controllers/callbacks_controller.rb
new file mode 100644
index 0000000..5d81951
--- /dev/null
+++ b/app/controllers/callbacks_controller.rb
@@ -0,0 +1,30 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+class CallbacksController < Devise::OmniauthCallbacksController
+  def facebook
+    @user = User.from_omniauth(request.env['omniauth.auth'])
+    sign_in_and_redirect @user
+  end
+
+  def google_oauth2
+    @user = User.from_omniauth(request.env['omniauth.auth'])
+    sign_in_and_redirect @user
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/controllers/concerns/.keep
----------------------------------------------------------------------
diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/controllers/welcome_controller.rb
----------------------------------------------------------------------
diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb
new file mode 100644
index 0000000..d2457c3
--- /dev/null
+++ b/app/controllers/welcome_controller.rb
@@ -0,0 +1,23 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+class WelcomeController < ApplicationController
+  def index
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/helpers/application_helper.rb
----------------------------------------------------------------------
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
new file mode 100644
index 0000000..a0890e7
--- /dev/null
+++ b/app/helpers/application_helper.rb
@@ -0,0 +1,21 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+module ApplicationHelper
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/mailers/.keep
----------------------------------------------------------------------
diff --git a/app/mailers/.keep b/app/mailers/.keep
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/models/.keep
----------------------------------------------------------------------
diff --git a/app/models/.keep b/app/models/.keep
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/models/concerns/.keep
----------------------------------------------------------------------
diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/models/user.rb
----------------------------------------------------------------------
diff --git a/app/models/user.rb b/app/models/user.rb
new file mode 100644
index 0000000..d440c1e
--- /dev/null
+++ b/app/models/user.rb
@@ -0,0 +1,49 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+class User < ActiveRecord::Base
+  # Include default devise modules. Others available are:
+  # :confirmable, :lockable, :timeoutable and :omniauthable
+  devise :database_authenticatable, :registerable,
+         :recoverable, :rememberable, :trackable, :validatable,
+         :omniauthable, omniauth_providers: [:facebook, :google_oauth2]
+
+  validates :email, presence: true, uniqueness: true
+
+  def self.from_omniauth(auth)
+    # Find user by omniauth
+    # If exist user with uid, return it
+    user = where(provider: auth.provider, uid: auth.uid).first
+    return user if user
+
+    # Or if exist user with email, return it
+    user = where(email: auth.info.email).first
+    return user if user
+
+    # Create the user if it's a new registration
+    create do |user|
+      user.provider = auth.provider
+      user.uid = auth.uid
+      user.email = auth.info.email
+      user.password = Devise.friendly_token[0, 20]
+      user.firstname = auth.info.first_name
+      user.lastname = auth.info.last_name
+    end
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/confirmations/new.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/confirmations/new.html.slim b/app/views/devise/confirmations/new.html.slim
new file mode 100644
index 0000000..9ae25d2
--- /dev/null
+++ b/app/views/devise/confirmations/new.html.slim
@@ -0,0 +1,11 @@
+h2
+  | Resend confirmation instructions
+= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f|
+  = devise_error_messages!
+  .field
+    = f.label :email
+    br
+    = f.email_field :email, autofocus: true, value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email)
+  .actions
+    = f.submit "Resend confirmation instructions"
+= render "devise/shared/links"

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/mailer/confirmation_instructions.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/mailer/confirmation_instructions.html.slim b/app/views/devise/mailer/confirmation_instructions.html.slim
new file mode 100644
index 0000000..8ce7f41
--- /dev/null
+++ b/app/views/devise/mailer/confirmation_instructions.html.slim
@@ -0,0 +1,8 @@
+p
+  | Welcome
+  = @email
+  | !
+p
+  | You can confirm your account email through the link below:
+p
+  = link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token)

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/mailer/reset_password_instructions.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/mailer/reset_password_instructions.html.slim b/app/views/devise/mailer/reset_password_instructions.html.slim
new file mode 100644
index 0000000..ecd6ae4
--- /dev/null
+++ b/app/views/devise/mailer/reset_password_instructions.html.slim
@@ -0,0 +1,12 @@
+p
+  | Hello
+  = @resource.email
+  | !
+p
+  | Someone has requested a link to change your password. You can do this through the link below.
+p
+  = link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token)
+p
+  | If you didn't request this, please ignore this email.
+p
+  | Your password won't change until you access the link above and create a new one.

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/mailer/unlock_instructions.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/mailer/unlock_instructions.html.slim b/app/views/devise/mailer/unlock_instructions.html.slim
new file mode 100644
index 0000000..d39172d
--- /dev/null
+++ b/app/views/devise/mailer/unlock_instructions.html.slim
@@ -0,0 +1,10 @@
+p
+  | Hello
+  = @resource.email
+  | !
+p
+  | Your account has been locked due to an excessive number of unsuccessful sign in attempts.
+p
+  | Click the link below to unlock your account:
+p
+  = link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token)

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/passwords/edit.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/passwords/edit.html.slim b/app/views/devise/passwords/edit.html.slim
new file mode 100644
index 0000000..efe949f
--- /dev/null
+++ b/app/views/devise/passwords/edit.html.slim
@@ -0,0 +1,22 @@
+h2
+  | Change your password
+= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f|
+  = devise_error_messages!
+  = f.hidden_field :reset_password_token
+  .field
+    = f.label :password, "New password"
+    br
+    - if @minimum_password_length
+      em
+        | (
+        = @minimum_password_length
+        |  characters minimum)
+    br
+    = f.password_field :password, autofocus: true, autocomplete: "off"
+  .field
+    = f.label :password_confirmation, "Confirm new password"
+    br
+    = f.password_field :password_confirmation, autocomplete: "off"
+  .actions
+    = f.submit "Change my password"
+= render "devise/shared/links"

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/passwords/new.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/passwords/new.html.slim b/app/views/devise/passwords/new.html.slim
new file mode 100644
index 0000000..5910ebd
--- /dev/null
+++ b/app/views/devise/passwords/new.html.slim
@@ -0,0 +1,11 @@
+h2
+  | Forgot your password?
+= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f|
+  = devise_error_messages!
+  .field
+    = f.label :email
+    br
+    = f.email_field :email, autofocus: true
+  .actions
+    = f.submit "Send me reset password instructions"
+= render "devise/shared/links"

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/registrations/edit.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/registrations/edit.html.slim b/app/views/devise/registrations/edit.html.slim
new file mode 100644
index 0000000..93eba3c
--- /dev/null
+++ b/app/views/devise/registrations/edit.html.slim
@@ -0,0 +1,37 @@
+h2
+  | Edit
+  = resource_name.to_s.humanize
+= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f|
+  = devise_error_messages!
+  .field
+    = f.label :email
+    br
+    = f.email_field :email, autofocus: true
+  - if devise_mapping.confirmable? && resource.pending_reconfirmation?
+    div
+      | Currently waiting confirmation for:
+      = resource.unconfirmed_email
+  .field
+    = f.label :password
+    i
+      | (leave blank if you don't want to change it)
+    br
+    = f.password_field :password, autocomplete: "off"
+  .field
+    = f.label :password_confirmation
+    br
+    = f.password_field :password_confirmation, autocomplete: "off"
+  .field
+    = f.label :current_password
+    i
+      | (we need your current password to confirm your changes)
+    br
+    = f.password_field :current_password, autocomplete: "off"
+  .actions
+    = f.submit "Update"
+h3
+  | Cancel my account
+p
+  | Unhappy?
+  = button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete
+= link_to "Back", :back

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/registrations/new.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/registrations/new.html.slim b/app/views/devise/registrations/new.html.slim
new file mode 100644
index 0000000..9948879
--- /dev/null
+++ b/app/views/devise/registrations/new.html.slim
@@ -0,0 +1,31 @@
+body.register-page
+  .register-box
+    .register-logo
+      = link_to root_path do
+        b
+          | DatabundleViewer
+    .register-box-body
+      p.login-box-msg
+        | Register a new membership
+      = form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
+        = devise_error_messages!
+        .form-group.has-feedback
+          = f.email_field :email, autofocus: true, class: 'form-control', placeholder: 'Email'
+          span.glyphicon.glyphicon-envelope.form-control-feedback
+        .form-group.has-feedback
+          = f.password_field :password, autocomplete: 'off', class: 'form-control', placeholder: 'Password'
+          span.glyphicon.glyphicon-lock.form-control-feedback
+        .form-group.has-feedback
+          = f.password_field :password_confirmation, autocomplete: 'off', class: 'form-control', placeholder: 'Retype password'
+          span.glyphicon.glyphicon-log-in.form-control-feedback
+        .form-group.has-feedback
+          = f.text_field :firstname, class: 'form-control', placeholder: 'First name'
+          span.glyphicon.glyphicon-user.form-control-feedback
+        .form-group.has-feedback
+          = f.text_field :lastname, class: 'form-control', placeholder: 'Last name'
+          span.glyphicon.glyphicon-user.form-control-feedback
+        .row
+          .col-xs-4
+            = f.submit 'Sign up', class: 'btn btn-primary btn-block btn-flat', id: 'sign_up'
+      = render 'devise/shared/links'
+  .actions

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/sessions/new.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/sessions/new.html.slim b/app/views/devise/sessions/new.html.slim
new file mode 100644
index 0000000..f2c9c7d
--- /dev/null
+++ b/app/views/devise/sessions/new.html.slim
@@ -0,0 +1,27 @@
+body.login-page
+  .login-box
+    .login-logo
+      = link_to root_path do
+        b
+          | DatabundleViewer
+    .login-box-body
+      p.login-box-msg
+        | Sign in to start your session
+      = form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
+        = devise_error_messages!
+        .form-group.has-feedback
+          = f.email_field :email, autofocus: true, class: 'form-control', placeholder: 'Email'
+          span.glyphicon.glyphicon-envelope.form-control-feedback
+        .form-group.has-feedback
+          = f.password_field :password, autocomplete: 'off', class: 'form-control', placeholder: 'Password'
+          span.glyphicon.glyphicon-lock.form-control-feedback
+        .row
+          .col-xs-8
+            - if devise_mapping.rememberable?
+              .checkbox.icheck
+                label
+                  = f.check_box :remember_me
+                  |  Remember Me
+          .col-xs-4
+            = f.submit 'Sign in', class: 'btn btn-primary btn-block btn-flat', id: 'sign_in'
+      = render 'devise/shared/links'

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/shared/_links.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/shared/_links.html.slim b/app/views/devise/shared/_links.html.slim
new file mode 100644
index 0000000..7f24d1d
--- /dev/null
+++ b/app/views/devise/shared/_links.html.slim
@@ -0,0 +1,25 @@
+.social-auth-links.text-center
+  p
+    | - OR -
+  - if devise_mapping.omniauthable?
+    = link_to omniauth_authorize_path(resource_name, :facebook), class: 'btn btn-block btn-social btn-facebook btn-flat', id: 'omniauth_facebook' do
+      i.fa.fa-facebook
+      = 'Sign in with Facebook'
+    = link_to omniauth_authorize_path(resource_name, :google_oauth2), class: 'btn btn-block btn-social btn-google-plus btn-flat', id: 'omniauth_google_oauth2' do
+      i.fa.fa-google-plus
+      = 'Sign in with Google+'
+- if controller_name != 'sessions'
+  = link_to 'Log in', new_session_path(resource_name), class: 'text-center'
+  br
+- if devise_mapping.registerable? && controller_name != 'registrations'
+  = link_to 'Sign up', new_registration_path(resource_name)
+  br
+- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations'
+  = link_to 'Forgot your password?', new_password_path(resource_name)
+  br
+- if devise_mapping.confirmable? && controller_name != 'confirmations'
+  = link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name)
+  br
+- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks'
+  = link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name)
+  br

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/devise/unlocks/new.html.slim
----------------------------------------------------------------------
diff --git a/app/views/devise/unlocks/new.html.slim b/app/views/devise/unlocks/new.html.slim
new file mode 100644
index 0000000..19da5b5
--- /dev/null
+++ b/app/views/devise/unlocks/new.html.slim
@@ -0,0 +1,11 @@
+h2
+  | Resend unlock instructions
+= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f|
+  = devise_error_messages!
+  .field
+    = f.label :email
+    br
+    = f.email_field :email, autofocus: true
+  .actions
+    = f.submit "Resend unlock instructions"
+= render "devise/shared/links"

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/layouts/application.html.erb
----------------------------------------------------------------------
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
new file mode 100644
index 0000000..ac0c7c7
--- /dev/null
+++ b/app/views/layouts/application.html.erb
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>DatabundleViewer</title>
+  <%= stylesheet_link_tag    'application', media: 'all' %>
+  <%= javascript_include_tag 'application' %>
+  <%= csrf_meta_tags %>
+</head>
+<body>
+
+<%= yield %>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/layouts/application.html.slim
----------------------------------------------------------------------
diff --git a/app/views/layouts/application.html.slim b/app/views/layouts/application.html.slim
new file mode 100644
index 0000000..949d51b
--- /dev/null
+++ b/app/views/layouts/application.html.slim
@@ -0,0 +1,48 @@
+doctype html
+html
+  head
+    meta[charset="UTF-8"]
+    title
+      | DatabundleViewer
+    meta[content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"]
+    = stylesheet_link_tag 'application', media: 'all'
+    = csrf_meta_tags
+    link[href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"]
+    link[href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" type="text/css"]
+  body.skin-blue.fixed.sidebar-mini
+    .wrapper
+      header.main-header
+        = link_to 'Databundle Viewer', root_path, class: 'logo'
+        nav.navbar.navbar-static-top[role="navigation"]
+          .navbar-custom-menu
+            ul.nav.navbar-nav
+              li.dropdown.user.user-menu
+                - if user_signed_in?
+                  a.dropdown-toggle#open_user_dropdown[href="#" data-toggle="dropdown"]
+                    span.hidden-xs
+                      = "#{current_user.firstname}, #{current_user.lastname}"
+                - else
+                  = link_to 'Sign in', new_user_session_path
+                - if user_signed_in?
+                  ul.dropdown-menu
+                    li.user-footer
+                      .pull-right
+                        = link_to 'Sign out', destroy_user_session_path, class: 'btn btn-default btn-flat', id: 'sign_out'
+
+      aside.main-sidebar
+        section.sidebar
+          .user-panel
+          ul.sidebar-menu
+            li.header
+              | MAIN NAVIGATION
+            li.treeview.active
+              a[href="#"]
+                i.fa.fa-dashboard
+                span
+                  | Dashboard
+                i.fa.fa-angle-left.pull-right
+      .content-wrapper
+        = yield
+      footer.main-footer
+      .control-sidebar-bg
+    = javascript_include_tag 'application'

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/layouts/devise.html.slim
----------------------------------------------------------------------
diff --git a/app/views/layouts/devise.html.slim b/app/views/layouts/devise.html.slim
new file mode 100644
index 0000000..e3aa442
--- /dev/null
+++ b/app/views/layouts/devise.html.slim
@@ -0,0 +1,13 @@
+doctype html
+html
+  head
+    meta[charset="UTF-8"]
+    title
+      | DatabundleViewer
+    meta[content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"]
+    = stylesheet_link_tag 'application', media: 'all'
+    = csrf_meta_tags
+    link[href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"]
+    link[href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css" rel="stylesheet" type="text/css"]
+  = yield
+  = javascript_include_tag 'application'

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/app/views/welcome/index.html.slim
----------------------------------------------------------------------
diff --git a/app/views/welcome/index.html.slim b/app/views/welcome/index.html.slim
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/bin/bundle
----------------------------------------------------------------------
diff --git a/bin/bundle b/bin/bundle
new file mode 100644
index 0000000..66e9889
--- /dev/null
+++ b/bin/bundle
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
+load Gem.bin_path('bundler', 'bundle')

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/bin/rails
----------------------------------------------------------------------
diff --git a/bin/rails b/bin/rails
new file mode 100644
index 0000000..5191e69
--- /dev/null
+++ b/bin/rails
@@ -0,0 +1,4 @@
+#!/usr/bin/env ruby
+APP_PATH = File.expand_path('../../config/application', __FILE__)
+require_relative '../config/boot'
+require 'rails/commands'

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/bin/rake
----------------------------------------------------------------------
diff --git a/bin/rake b/bin/rake
new file mode 100644
index 0000000..1724048
--- /dev/null
+++ b/bin/rake
@@ -0,0 +1,4 @@
+#!/usr/bin/env ruby
+require_relative '../config/boot'
+require 'rake'
+Rake.application.run

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/bin/setup
----------------------------------------------------------------------
diff --git a/bin/setup b/bin/setup
new file mode 100644
index 0000000..acdb2c1
--- /dev/null
+++ b/bin/setup
@@ -0,0 +1,29 @@
+#!/usr/bin/env ruby
+require 'pathname'
+
+# path to your application root.
+APP_ROOT = Pathname.new File.expand_path('../../',  __FILE__)
+
+Dir.chdir APP_ROOT do
+  # This script is a starting point to setup your application.
+  # Add necessary setup steps to this file:
+
+  puts "== Installing dependencies =="
+  system "gem install bundler --conservative"
+  system "bundle check || bundle install"
+
+  # puts "\n== Copying sample files =="
+  # unless File.exist?("config/database.yml")
+  #   system "cp config/database.yml.sample config/database.yml"
+  # end
+
+  puts "\n== Preparing database =="
+  system "bin/rake db:setup"
+
+  puts "\n== Removing old logs and tempfiles =="
+  system "rm -f log/*"
+  system "rm -rf tmp/cache"
+
+  puts "\n== Restarting application server =="
+  system "touch tmp/restart.txt"
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/bin/spring
----------------------------------------------------------------------
diff --git a/bin/spring b/bin/spring
new file mode 100644
index 0000000..7b45d37
--- /dev/null
+++ b/bin/spring
@@ -0,0 +1,15 @@
+#!/usr/bin/env ruby
+
+# This file loads spring without using Bundler, in order to be fast.
+# It gets overwritten when you run the `spring binstub` command.
+
+unless defined?(Spring)
+  require "rubygems"
+  require "bundler"
+
+  if match = Bundler.default_lockfile.read.match(/^GEM$.*?^    (?:  )*spring \((.*?)\)$.*?^$/m)
+    Gem.paths = { "GEM_PATH" => [Bundler.bundle_path.to_s, *Gem.path].uniq }
+    gem "spring", match[1]
+    require "spring/binstub"
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config.ru
----------------------------------------------------------------------
diff --git a/config.ru b/config.ru
new file mode 100644
index 0000000..bd83b25
--- /dev/null
+++ b/config.ru
@@ -0,0 +1,4 @@
+# This file is used by Rack-based servers to start the application.
+
+require ::File.expand_path('../config/environment', __FILE__)
+run Rails.application

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/application.rb
----------------------------------------------------------------------
diff --git a/config/application.rb b/config/application.rb
new file mode 100644
index 0000000..7fccd73
--- /dev/null
+++ b/config/application.rb
@@ -0,0 +1,35 @@
+require File.expand_path('../boot', __FILE__)
+
+require "rails"
+# Pick the frameworks you want:
+require "active_model/railtie"
+require "active_job/railtie"
+require "active_record/railtie"
+require "action_controller/railtie"
+require "action_mailer/railtie"
+require "action_view/railtie"
+require "sprockets/railtie"
+# require "rails/test_unit/railtie"
+
+# Require the gems listed in Gemfile, including any gems
+# you've limited to :test, :development, or :production.
+Bundler.require(*Rails.groups)
+
+module DatabundleViewer
+  class Application < Rails::Application
+    # Settings in config/environments/* take precedence over those specified here.
+    # Application configuration should go into files in config/initializers
+    # -- all .rb files in that directory are automatically loaded.
+
+    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
+    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
+    # config.time_zone = 'Central Time (US & Canada)'
+
+    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
+    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
+    # config.i18n.default_locale = :de
+
+    # Do not swallow errors in after_commit/after_rollback callbacks.
+    config.active_record.raise_in_transactional_callbacks = true
+  end
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/boot.rb
----------------------------------------------------------------------
diff --git a/config/boot.rb b/config/boot.rb
new file mode 100644
index 0000000..6b750f0
--- /dev/null
+++ b/config/boot.rb
@@ -0,0 +1,3 @@
+ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
+
+require 'bundler/setup' # Set up gems listed in the Gemfile.

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/database.yml.example
----------------------------------------------------------------------
diff --git a/config/database.yml.example b/config/database.yml.example
new file mode 100644
index 0000000..12a9731
--- /dev/null
+++ b/config/database.yml.example
@@ -0,0 +1,85 @@
+# PostgreSQL. Versions 8.2 and up are supported.
+#
+# Install the pg driver:
+#   gem install pg
+# On OS X with Homebrew:
+#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
+# On OS X with MacPorts:
+#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
+# On Windows:
+#   gem install pg
+#       Choose the win32 build.
+#       Install PostgreSQL and put its /bin directory on your path.
+#
+# Configure Using Gemfile
+# gem 'pg'
+#
+default: &default
+  adapter: postgresql
+  encoding: unicode
+  # For details on connection pooling, see rails configuration guide
+  # http://guides.rubyonrails.org/configuring.html#database-pooling
+  pool: 5
+
+development:
+  <<: *default
+  database: DatabundleViewer_development
+
+  # The specified database role being used to connect to postgres.
+  # To create additional roles in postgres see `$ createuser --help`.
+  # When left blank, postgres will use the default role. This is
+  # the same name as the operating system user that initialized the database.
+  #username: DatabundleViewer
+
+  # The password associated with the postgres role (username).
+  #password:
+
+  # Connect on a TCP socket. Omitted by default since the client uses a
+  # domain socket that doesn't need configuration. Windows does not have
+  # domain sockets, so uncomment these lines.
+  #host: localhost
+
+  # The TCP port the server listens on. Defaults to 5432.
+  # If your server runs on a different port number, change accordingly.
+  #port: 5432
+
+  # Schema search path. The server defaults to $user,public
+  #schema_search_path: myapp,sharedapp,public
+
+  # Minimum log levels, in increasing order:
+  #   debug5, debug4, debug3, debug2, debug1,
+  #   log, notice, warning, error, fatal, and panic
+  # Defaults to warning.
+  #min_messages: notice
+
+# Warning: The database defined as "test" will be erased and
+# re-generated from your development database when you run "rake".
+# Do not set this db to the same as development or production.
+test:
+  <<: *default
+  database: DatabundleViewer_test
+
+# As with config/secrets.yml, you never want to store sensitive information,
+# like your database password, in your source code. If your source code is
+# ever seen by anyone, they now have access to your database.
+#
+# Instead, provide the password as a unix environment variable when you boot
+# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
+# for a full rundown on how to provide these environment variables in a
+# production deployment.
+#
+# On Heroku and other platform providers, you may have a full connection URL
+# available as an environment variable. For example:
+#
+#   DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
+#
+# You can use this database configuration with:
+#
+#   production:
+#     url: <%= ENV['DATABASE_URL'] %>
+#
+production:
+  <<: *default
+  database: DatabundleViewer_production
+  username: DatabundleViewer
+  password: <%= ENV['DATABUNDLEVIEWER_DATABASE_PASSWORD'] %>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/environment.rb
----------------------------------------------------------------------
diff --git a/config/environment.rb b/config/environment.rb
new file mode 100644
index 0000000..ee8d90d
--- /dev/null
+++ b/config/environment.rb
@@ -0,0 +1,5 @@
+# Load the Rails application.
+require File.expand_path('../application', __FILE__)
+
+# Initialize the Rails application.
+Rails.application.initialize!

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/environments/development.rb
----------------------------------------------------------------------
diff --git a/config/environments/development.rb b/config/environments/development.rb
new file mode 100644
index 0000000..b55e214
--- /dev/null
+++ b/config/environments/development.rb
@@ -0,0 +1,41 @@
+Rails.application.configure do
+  # Settings specified here will take precedence over those in config/application.rb.
+
+  # In the development environment your application's code is reloaded on
+  # every request. This slows down response time but is perfect for development
+  # since you don't have to restart the web server when you make code changes.
+  config.cache_classes = false
+
+  # Do not eager load code on boot.
+  config.eager_load = false
+
+  # Show full error reports and disable caching.
+  config.consider_all_requests_local       = true
+  config.action_controller.perform_caching = false
+
+  # Don't care if the mailer can't send.
+  config.action_mailer.raise_delivery_errors = false
+
+  # Print deprecation notices to the Rails logger.
+  config.active_support.deprecation = :log
+
+  # Raise an error on page load if there are pending migrations.
+  config.active_record.migration_error = :page_load
+
+  # Debug mode disables concatenation and preprocessing of assets.
+  # This option may cause significant delays in view rendering with a large
+  # number of complex assets.
+  config.assets.debug = true
+
+  # Asset digests allow you to set far-future HTTP expiration dates on all assets,
+  # yet still be able to expire them through the digest params.
+  config.assets.digest = true
+
+  # Adds additional error checking when serving assets at runtime.
+  # Checks for improperly declared sprockets dependencies.
+  # Raises helpful error messages.
+  config.assets.raise_runtime_errors = true
+
+  # Raises error for missing translations
+  # config.action_view.raise_on_missing_translations = true
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/environments/production.rb
----------------------------------------------------------------------
diff --git a/config/environments/production.rb b/config/environments/production.rb
new file mode 100644
index 0000000..5c1b32e
--- /dev/null
+++ b/config/environments/production.rb
@@ -0,0 +1,79 @@
+Rails.application.configure do
+  # Settings specified here will take precedence over those in config/application.rb.
+
+  # Code is not reloaded between requests.
+  config.cache_classes = true
+
+  # Eager load code on boot. This eager loads most of Rails and
+  # your application in memory, allowing both threaded web servers
+  # and those relying on copy on write to perform better.
+  # Rake tasks automatically ignore this option for performance.
+  config.eager_load = true
+
+  # Full error reports are disabled and caching is turned on.
+  config.consider_all_requests_local       = false
+  config.action_controller.perform_caching = true
+
+  # Enable Rack::Cache to put a simple HTTP cache in front of your application
+  # Add `rack-cache` to your Gemfile before enabling this.
+  # For large-scale production use, consider using a caching reverse proxy like
+  # NGINX, varnish or squid.
+  # config.action_dispatch.rack_cache = true
+
+  # Disable serving static files from the `/public` folder by default since
+  # Apache or NGINX already handles this.
+  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
+
+  # Compress JavaScripts and CSS.
+  config.assets.js_compressor = :uglifier
+  # config.assets.css_compressor = :sass
+
+  # Do not fallback to assets pipeline if a precompiled asset is missed.
+  config.assets.compile = false
+
+  # Asset digests allow you to set far-future HTTP expiration dates on all assets,
+  # yet still be able to expire them through the digest params.
+  config.assets.digest = true
+
+  # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
+
+  # Specifies the header that your server uses for sending files.
+  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
+  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
+
+  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
+  # config.force_ssl = true
+
+  # Use the lowest log level to ensure availability of diagnostic information
+  # when problems arise.
+  config.log_level = :debug
+
+  # Prepend all log lines with the following tags.
+  # config.log_tags = [ :subdomain, :uuid ]
+
+  # Use a different logger for distributed setups.
+  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
+
+  # Use a different cache store in production.
+  # config.cache_store = :mem_cache_store
+
+  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
+  # config.action_controller.asset_host = 'http://assets.example.com'
+
+  # Ignore bad email addresses and do not raise email delivery errors.
+  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
+  # config.action_mailer.raise_delivery_errors = false
+
+  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
+  # the I18n.default_locale when a translation cannot be found).
+  config.i18n.fallbacks = true
+
+  # Send deprecation notices to registered listeners.
+  config.active_support.deprecation = :notify
+
+  # Use default logging formatter so that PID and timestamp are not suppressed.
+  config.log_formatter = ::Logger::Formatter.new
+
+  # Do not dump schema after migrations.
+  config.active_record.dump_schema_after_migration = false
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/environments/test.rb
----------------------------------------------------------------------
diff --git a/config/environments/test.rb b/config/environments/test.rb
new file mode 100644
index 0000000..1c19f08
--- /dev/null
+++ b/config/environments/test.rb
@@ -0,0 +1,42 @@
+Rails.application.configure do
+  # Settings specified here will take precedence over those in config/application.rb.
+
+  # The test environment is used exclusively to run your application's
+  # test suite. You never need to work with it otherwise. Remember that
+  # your test database is "scratch space" for the test suite and is wiped
+  # and recreated between test runs. Don't rely on the data there!
+  config.cache_classes = true
+
+  # Do not eager load code on boot. This avoids loading your whole application
+  # just for the purpose of running a single test. If you are using a tool that
+  # preloads Rails for running tests, you may have to set it to true.
+  config.eager_load = false
+
+  # Configure static file server for tests with Cache-Control for performance.
+  config.serve_static_files   = true
+  config.static_cache_control = 'public, max-age=3600'
+
+  # Show full error reports and disable caching.
+  config.consider_all_requests_local       = true
+  config.action_controller.perform_caching = false
+
+  # Raise exceptions instead of rendering exception templates.
+  config.action_dispatch.show_exceptions = false
+
+  # Disable request forgery protection in test environment.
+  config.action_controller.allow_forgery_protection = false
+
+  # Tell Action Mailer not to deliver emails to the real world.
+  # The :test delivery method accumulates sent emails in the
+  # ActionMailer::Base.deliveries array.
+  config.action_mailer.delivery_method = :test
+
+  # Randomize the order test cases are executed.
+  config.active_support.test_order = :random
+
+  # Print deprecation notices to the stderr.
+  config.active_support.deprecation = :stderr
+
+  # Raises error for missing translations
+  # config.action_view.raise_on_missing_translations = true
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/assets.rb
----------------------------------------------------------------------
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
new file mode 100644
index 0000000..01ef3e6
--- /dev/null
+++ b/config/initializers/assets.rb
@@ -0,0 +1,11 @@
+# Be sure to restart your server when you modify this file.
+
+# Version of your assets, change this if you want to expire all your assets.
+Rails.application.config.assets.version = '1.0'
+
+# Add additional assets to the asset load path
+# Rails.application.config.assets.paths << Emoji.images_path
+
+# Precompile additional assets.
+# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
+# Rails.application.config.assets.precompile += %w( search.js )

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/backtrace_silencers.rb
----------------------------------------------------------------------
diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb
new file mode 100644
index 0000000..59385cd
--- /dev/null
+++ b/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
+# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
+
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
+# Rails.backtrace_cleaner.remove_silencers!

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/cookies_serializer.rb
----------------------------------------------------------------------
diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb
new file mode 100644
index 0000000..7f70458
--- /dev/null
+++ b/config/initializers/cookies_serializer.rb
@@ -0,0 +1,3 @@
+# Be sure to restart your server when you modify this file.
+
+Rails.application.config.action_dispatch.cookies_serializer = :json

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/devise.rb
----------------------------------------------------------------------
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
new file mode 100644
index 0000000..ae8d4b8
--- /dev/null
+++ b/config/initializers/devise.rb
@@ -0,0 +1,269 @@
+# Use this hook to configure devise mailer, warden hooks and so forth.
+# Many of these configuration options can be set straight in your model.
+Devise.setup do |config|
+  # The secret key used by Devise. Devise uses this key to generate
+  # random tokens. Changing this key will render invalid all existing
+  # confirmation, reset password and unlock tokens in the database.
+  # Devise will use the `secret_key_base` on Rails 4+ applications as its `secret_key`
+  # by default. You can change it below and use your own secret key.
+  # config.secret_key = '0e9f7997f79a9c6036c00f3f58944cdc2c6e71b12137fb442e9b8caa7f6792847c31820aaa5b1c9bd8e3c89f5ad6968705bc577df1bca3a7d9338112800f1e50'
+
+  # ==> Mailer Configuration
+  # Configure the e-mail address which will be shown in Devise::Mailer,
+  # note that it will be overwritten if you use your own mailer class
+  # with default "from" parameter.
+  config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'
+
+  # Configure the class responsible to send e-mails.
+  # config.mailer = 'Devise::Mailer'
+
+  # ==> ORM configuration
+  # Load and configure the ORM. Supports :active_record (default) and
+  # :mongoid (bson_ext recommended) by default. Other ORMs may be
+  # available as additional gems.
+  require 'devise/orm/active_record'
+
+  # ==> Configuration for any authentication mechanism
+  # Configure which keys are used when authenticating a user. The default is
+  # just :email. You can configure it to use [:username, :subdomain], so for
+  # authenticating a user, both parameters are required. Remember that those
+  # parameters are used only when authenticating and not when retrieving from
+  # session. If you need permissions, you should implement that in a before filter.
+  # You can also supply a hash where the value is a boolean determining whether
+  # or not authentication should be aborted when the value is not present.
+  # config.authentication_keys = [:email]
+
+  # Configure parameters from the request object used for authentication. Each entry
+  # given should be a request method and it will automatically be passed to the
+  # find_for_authentication method and considered in your model lookup. For instance,
+  # if you set :request_keys to [:subdomain], :subdomain will be used on authentication.
+  # The same considerations mentioned for authentication_keys also apply to request_keys.
+  # config.request_keys = []
+
+  # Configure which authentication keys should be case-insensitive.
+  # These keys will be downcased upon creating or modifying a user and when used
+  # to authenticate or find a user. Default is :email.
+  config.case_insensitive_keys = [:email]
+
+  # Configure which authentication keys should have whitespace stripped.
+  # These keys will have whitespace before and after removed upon creating or
+  # modifying a user and when used to authenticate or find a user. Default is :email.
+  config.strip_whitespace_keys = [:email]
+
+  # Tell if authentication through request.params is enabled. True by default.
+  # It can be set to an array that will enable params authentication only for the
+  # given strategies, for example, `config.params_authenticatable = [:database]` will
+  # enable it only for database (email + password) authentication.
+  # config.params_authenticatable = true
+
+  # Tell if authentication through HTTP Auth is enabled. False by default.
+  # It can be set to an array that will enable http authentication only for the
+  # given strategies, for example, `config.http_authenticatable = [:database]` will
+  # enable it only for database authentication. The supported strategies are:
+  # :database      = Support basic authentication with authentication key + password
+  # config.http_authenticatable = false
+
+  # If 401 status code should be returned for AJAX requests. True by default.
+  # config.http_authenticatable_on_xhr = true
+
+  # The realm used in Http Basic Authentication. 'Application' by default.
+  # config.http_authentication_realm = 'Application'
+
+  # It will change confirmation, password recovery and other workflows
+  # to behave the same regardless if the e-mail provided was right or wrong.
+  # Does not affect registerable.
+  # config.paranoid = true
+
+  # By default Devise will store the user in session. You can skip storage for
+  # particular strategies by setting this option.
+  # Notice that if you are skipping storage for all authentication paths, you
+  # may want to disable generating routes to Devise's sessions controller by
+  # passing skip: :sessions to `devise_for` in your config/routes.rb
+  config.skip_session_storage = [:http_auth]
+
+  # By default, Devise cleans up the CSRF token on authentication to
+  # avoid CSRF token fixation attacks. This means that, when using AJAX
+  # requests for sign in and sign up, you need to get a new CSRF token
+  # from the server. You can disable this option at your own risk.
+  # config.clean_up_csrf_token_on_authentication = true
+
+  # ==> Configuration for :database_authenticatable
+  # For bcrypt, this is the cost for hashing the password and defaults to 10. If
+  # using other encryptors, it sets how many times you want the password re-encrypted.
+  #
+  # Limiting the stretches to just one in testing will increase the performance of
+  # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use
+  # a value less than 10 in other environments. Note that, for bcrypt (the default
+  # encryptor), the cost increases exponentially with the number of stretches (e.g.
+  # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation).
+  config.stretches = Rails.env.test? ? 1 : 10
+
+  # Setup a pepper to generate the encrypted password.
+  # config.pepper = 'f84e7653ed63de0ca45dbc721c9c7af42d1ffef78259c85f29c02ebc940910aa2c7fe794b9d598349b6daa160e08605cfaa9ddb457122c4f466c6ac584c462f4'
+
+  # ==> Configuration for :confirmable
+  # A period that the user is allowed to access the website even without
+  # confirming their account. For instance, if set to 2.days, the user will be
+  # able to access the website for two days without confirming their account,
+  # access will be blocked just in the third day. Default is 0.days, meaning
+  # the user cannot access the website without confirming their account.
+  # config.allow_unconfirmed_access_for = 2.days
+
+  # A period that the user is allowed to confirm their account before their
+  # token becomes invalid. For example, if set to 3.days, the user can confirm
+  # their account within 3 days after the mail was sent, but on the fourth day
+  # their account can't be confirmed with the token any more.
+  # Default is nil, meaning there is no restriction on how long a user can take
+  # before confirming their account.
+  # config.confirm_within = 3.days
+
+  # If true, requires any email changes to be confirmed (exactly the same way as
+  # initial account confirmation) to be applied. Requires additional unconfirmed_email
+  # db field (see migrations). Until confirmed, new email is stored in
+  # unconfirmed_email column, and copied to email column on successful confirmation.
+  config.reconfirmable = true
+
+  # Defines which key will be used when confirming an account
+  # config.confirmation_keys = [:email]
+
+  # ==> Configuration for :rememberable
+  # The time the user will be remembered without asking for credentials again.
+  # config.remember_for = 2.weeks
+
+  # Invalidates all the remember me tokens when the user signs out.
+  config.expire_all_remember_me_on_sign_out = true
+
+  # If true, extends the user's remember period when remembered via cookie.
+  # config.extend_remember_period = false
+
+  # Options to be passed to the created cookie. For instance, you can set
+  # secure: true in order to force SSL only cookies.
+  # config.rememberable_options = {}
+
+  # ==> Configuration for :validatable
+  # Range for password length.
+  config.password_length = 8..72
+
+  # Email regex used to validate email formats. It simply asserts that
+  # one (and only one) @ exists in the given string. This is mainly
+  # to give user feedback and not to assert the e-mail validity.
+  # config.email_regexp = /\A[^@]+@[^@]+\z/
+
+  # ==> Configuration for :timeoutable
+  # The time you want to timeout the user session without activity. After this
+  # time the user will be asked for credentials again. Default is 30 minutes.
+  # config.timeout_in = 30.minutes
+
+  # If true, expires auth token on session timeout.
+  # config.expire_auth_token_on_timeout = false
+
+  # ==> Configuration for :lockable
+  # Defines which strategy will be used to lock an account.
+  # :failed_attempts = Locks an account after a number of failed attempts to sign in.
+  # :none            = No lock strategy. You should handle locking by yourself.
+  # config.lock_strategy = :failed_attempts
+
+  # Defines which key will be used when locking and unlocking an account
+  # config.unlock_keys = [:email]
+
+  # Defines which strategy will be used to unlock an account.
+  # :email = Sends an unlock link to the user email
+  # :time  = Re-enables login after a certain amount of time (see :unlock_in below)
+  # :both  = Enables both strategies
+  # :none  = No unlock strategy. You should handle unlocking by yourself.
+  # config.unlock_strategy = :both
+
+  # Number of authentication tries before locking an account if lock_strategy
+  # is failed attempts.
+  # config.maximum_attempts = 20
+
+  # Time interval to unlock the account if :time is enabled as unlock_strategy.
+  # config.unlock_in = 1.hour
+
+  # Warn on the last attempt before the account is locked.
+  # config.last_attempt_warning = true
+
+  # ==> Configuration for :recoverable
+  #
+  # Defines which key will be used when recovering the password for an account
+  # config.reset_password_keys = [:email]
+
+  # Time interval you can reset your password with a reset password key.
+  # Don't put a too small interval or your users won't have the time to
+  # change their passwords.
+  config.reset_password_within = 6.hours
+
+  # When set to false, does not sign a user in automatically after their password is
+  # reset. Defaults to true, so a user is signed in automatically after a reset.
+  # config.sign_in_after_reset_password = true
+
+  # ==> Configuration for :encryptable
+  # Allow you to use another encryption algorithm besides bcrypt (default). You can use
+  # :sha1, :sha512 or encryptors from others authentication tools as :clearance_sha1,
+  # :authlogic_sha512 (then you should set stretches above to 20 for default behavior)
+  # and :restful_authentication_sha1 (then you should set stretches to 10, and copy
+  # REST_AUTH_SITE_KEY to pepper).
+  #
+  # Require the `devise-encryptable` gem when using anything other than bcrypt
+  # config.encryptor = :sha512
+
+  # ==> Scopes configuration
+  # Turn scoped views on. Before rendering "sessions/new", it will first check for
+  # "users/sessions/new". It's turned off by default because it's slower if you
+  # are using only default views.
+  # config.scoped_views = false
+
+  # Configure the default scope given to Warden. By default it's the first
+  # devise role declared in your routes (usually :user).
+  # config.default_scope = :user
+
+  # Set this configuration to false if you want /users/sign_out to sign out
+  # only the current scope. By default, Devise signs out all scopes.
+  # config.sign_out_all_scopes = true
+
+  # ==> Navigation configuration
+  # Lists the formats that should be treated as navigational. Formats like
+  # :html, should redirect to the sign in page when the user does not have
+  # access, but formats like :xml or :json, should return 401.
+  #
+  # If you have any extra navigational formats, like :iphone or :mobile, you
+  # should add them to the navigational formats lists.
+  #
+  # The "*/*" below is required to match Internet Explorer requests.
+  # config.navigational_formats = ['*/*', :html]
+
+  # The default HTTP method used to sign out a resource. Default is :delete.
+  config.sign_out_via = :get
+
+  # ==> OmniAuth
+  # Add a new OmniAuth provider. Check the wiki for more information on setting
+  # up on your models and hooks.
+  # config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'
+  require 'omniauth-facebook'
+  config.omniauth :facebook, ENV['FACEBOOK_CLIENT_ID'], ENV['FACEBOOK_CLIENT_SECRET']
+  require 'omniauth-google-oauth2'
+  config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET']
+
+  # ==> Warden configuration
+  # If you want to use other strategies, that are not supported by Devise, or
+  # change the failure app, you can configure them inside the config.warden block.
+  #
+  # config.warden do |manager|
+  #   manager.intercept_401 = false
+  #   manager.default_strategies(scope: :user).unshift :some_external_strategy
+  # end
+
+  # ==> Mountable engine configurations
+  # When using Devise inside an engine, let's call it `MyEngine`, and this engine
+  # is mountable, there are some extra configurations to be taken into account.
+  # The following options are available, assuming the engine is mounted as:
+  #
+  #     mount MyEngine, at: '/my_engine'
+  #
+  # The router that invoked `devise_for`, in the example above, would be:
+  # config.router_name = :my_engine
+  #
+  # When using OmniAuth, Devise cannot automatically set OmniAuth path,
+  # so you need to do it manually. For the users scope, it would be:
+  # config.omniauth_path_prefix = '/my_engine/users/auth'
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/filter_parameter_logging.rb
----------------------------------------------------------------------
diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb
new file mode 100644
index 0000000..4a994e1
--- /dev/null
+++ b/config/initializers/filter_parameter_logging.rb
@@ -0,0 +1,4 @@
+# Be sure to restart your server when you modify this file.
+
+# Configure sensitive parameters which will be filtered from the log file.
+Rails.application.config.filter_parameters += [:password]

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/generators.rb
----------------------------------------------------------------------
diff --git a/config/initializers/generators.rb b/config/initializers/generators.rb
new file mode 100644
index 0000000..939732c
--- /dev/null
+++ b/config/initializers/generators.rb
@@ -0,0 +1,18 @@
+Rails.application.config.generators do |g|
+  # Generate desired tests using RSpec.
+  g.test_framework :rspec,
+                   view_specs: false,
+                   controller_specs: false,
+                   feature_specs: true,
+                   routing_specs: false,
+                   decorator_specs: false
+
+  # Use factory_girl for factories.
+  g.fixture_replacement :factory_girl, dir: 'spec/factories'
+
+  # Disable generators we don't need.
+  g.stylesheets false
+  g.javascripts false
+  g.template_engine :slim
+  g.helper false
+end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/inflections.rb
----------------------------------------------------------------------
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
new file mode 100644
index 0000000..ac033bf
--- /dev/null
+++ b/config/initializers/inflections.rb
@@ -0,0 +1,16 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format. Inflections
+# are locale specific, and you may define rules for as many different
+# locales as you wish. All of these examples are active by default:
+# ActiveSupport::Inflector.inflections(:en) do |inflect|
+#   inflect.plural /^(ox)$/i, '\1en'
+#   inflect.singular /^(ox)en/i, '\1'
+#   inflect.irregular 'person', 'people'
+#   inflect.uncountable %w( fish sheep )
+# end
+
+# These inflection rules are supported but not enabled by default:
+# ActiveSupport::Inflector.inflections(:en) do |inflect|
+#   inflect.acronym 'RESTful'
+# end

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/mime_types.rb
----------------------------------------------------------------------
diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb
new file mode 100644
index 0000000..dc18996
--- /dev/null
+++ b/config/initializers/mime_types.rb
@@ -0,0 +1,4 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new mime types for use in respond_to blocks:
+# Mime::Type.register "text/richtext", :rtf

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/session_store.rb
----------------------------------------------------------------------
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb
new file mode 100644
index 0000000..6caa6a7
--- /dev/null
+++ b/config/initializers/session_store.rb
@@ -0,0 +1,3 @@
+# Be sure to restart your server when you modify this file.
+
+Rails.application.config.session_store :cookie_store, key: '_DatabundleViewer_session'

http://git-wip-us.apache.org/repos/asf/incubator-taverna-databundle-viewer/blob/ae912ef2/config/initializers/wrap_parameters.rb
----------------------------------------------------------------------
diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb
new file mode 100644
index 0000000..33725e9
--- /dev/null
+++ b/config/initializers/wrap_parameters.rb
@@ -0,0 +1,14 @@
+# Be sure to restart your server when you modify this file.
+
+# This file contains settings for ActionController::ParamsWrapper which
+# is enabled by default.
+
+# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
+ActiveSupport.on_load(:action_controller) do
+  wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
+end
+
+# To enable root element in JSON for ActiveRecord objects.
+# ActiveSupport.on_load(:active_record) do
+#  self.include_root_in_json = true
+# end