diff --git a/Gemfile b/Gemfile
index c30ae8bac9778866656693b1291bb063689b8d84..bdea39956f1f381971998bd0c3e10535f1c136a5 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,65 +1,69 @@
-source 'https://rubygems.org'
+source "https://rubygems.org"
 git_source(:github) { |repo| "https://github.com/#{repo}.git" }
 
-ruby '3.0.1'
+ruby "3.0.1"
 
 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
-gem 'rails', '~> 6.1.3', '>= 6.1.3.2'
+gem "rails", "~> 6.1.3", ">= 6.1.3.2"
 # Use sqlite3 as the database for Active Record
 # gem 'sqlite3'
-gem 'pg'
+gem "pg"
 # gem 'devise'
 # Use Puma as the app server
-gem 'puma', '~> 5.0'
+gem "puma", "~> 5.0"
 # Use SCSS for stylesheets
-gem 'sass-rails', '>= 6'
+gem "sass-rails", ">= 6"
 # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
-gem 'webpacker'
+gem "webpacker"
 # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
-gem 'turbolinks', '~> 5'
+gem "turbolinks", "~> 5"
 # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
-gem 'jbuilder', '~> 2.7'
+gem "jbuilder", "~> 2.7"
 # Use Redis adapter to run Action Cable in production
 # gem 'redis', '~> 4.0'
 # Use Active Model has_secure_password
 # gem 'bcrypt', '~> 3.1.7'
 
-gem 'openssl'
-gem 'rsolr'
-gem 'sidekiq', '~> 6.0'
-gem 'pragmatic_tokenizer'
-gem 'activerecord-session_store'
+# Use OpenSSL for encryption of Auth Token
+gem "openssl"
+# Use rSolr for search queries
+gem "rsolr"
+# Use rack-cors for cross-origin requests
+gem "rack-cors"
+gem "sidekiq", "~> 6.0"
+gem "pragmatic_tokenizer"
+gem "activerecord-session_store"
 
 # Use Active Storage variant
 # gem 'image_processing', '~> 1.2'
 
 # Reduces boot times through caching; required in config/boot.rb
-gem 'bootsnap', '>= 1.4.4', require: false
+gem "bootsnap", ">= 1.4.4", require: false
 
 group :development, :test do
   # Call 'byebug' anywhere in the code to stop execution and get a debugger console
-  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
+  gem "byebug", platforms: [:mri, :mingw, :x64_mingw]
 end
 
 group :development do
   # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
-  gem 'web-console', '>= 4.1.0'
+  gem "web-console", ">= 4.1.0"
   # Display performance information such as SQL time and flame graphs for each request in your browser.
   # Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
-  gem 'rack-mini-profiler', '~> 2.0'
-  gem 'listen', '~> 3.3'
+  gem "rack-mini-profiler", "~> 2.0"
+  gem "listen", "~> 3.3"
   # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
-  gem 'spring'
-  gem 'brakeman'
+  gem "spring"
+  gem "brakeman"
 end
 
 group :test do
   # Adds support for Capybara system testing and selenium driver
-  gem 'capybara', '>= 3.26'
-  gem 'selenium-webdriver'
+  gem "capybara", ">= 3.26"
+  gem "selenium-webdriver"
   # Easy installation and use of web drivers to run system tests with browsers
-  gem 'webdrivers'
+  gem "webdrivers"
 end
 
 # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
-gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
+gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
diff --git a/Gemfile.lock b/Gemfile.lock
index 1a3761a164884ef4b637e89ed1da346e916fcb1a..4fd921cdfc2edb5c082bd52e972a3832387799ea 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -127,6 +127,8 @@ GEM
       nio4r (~> 2.0)
     racc (1.6.0)
     rack (2.2.4)
+    rack-cors (1.1.1)
+      rack (>= 2.0.0)
     rack-mini-profiler (2.3.4)
       rack (>= 1.2.0)
     rack-proxy (0.7.2)
@@ -244,6 +246,7 @@ DEPENDENCIES
   pg
   pragmatic_tokenizer
   puma (~> 5.0)
+  rack-cors
   rack-mini-profiler (~> 2.0)
   rails (~> 6.1.3, >= 6.1.3.2)
   rsolr
diff --git a/app/controllers/concerns/authentication.rb b/app/controllers/concerns/authentication.rb
index 1223267dac2f36c856b7ac113be20e508e5a9f46..c573d8cc931f28cafbccafba36ab4a7917eb1750 100644
--- a/app/controllers/concerns/authentication.rb
+++ b/app/controllers/concerns/authentication.rb
@@ -11,11 +11,14 @@ module Authentication
   end
 
   def authenticate_user!
-    # id_dict = { "labs_user_id" => decrypt_header(request.headers["X-Auth-Newseye-Token"]) }
-    id_dict = { "labs_user_id" => "3"}
+    id_dict = { "labs_user_id" => decrypt_header(request.headers["X-Auth-Newseye-Token"]) }
+    # id_dict = { "labs_user_id" => "42" }
     @user = User.find_by(labs_user_id: id_dict["labs_user_id"])
     if @user
-      login @user unless session[:current_user_id]
+      if !session[:current_user_id]
+        puts "Logging in the user since current_user_id was not set"
+        login @user
+      end
     else
       @user = User.new(id_dict)
       if @user.save
@@ -27,13 +30,14 @@ module Authentication
   def login(user)
     reset_session
     session[:current_user_id] = user.id
+    puts "The user id taken from session is " + String(session[:current_user_id])
   end
 
   private
 
   def current_user
-    # Current.user ||= User.find_by(labs_user_id: decrypt_header(request.headers["X-Auth-Newseye-Token"]))
-    Current.user ||= User.find_by(labs_user_id: "3")
+    Current.user ||= User.find_by(labs_user_id: decrypt_header(request.headers["X-Auth-Newseye-Token"]))
+    # Current.user ||= User.find_by(labs_user_id: "42")
   end
 
   def decrypt_header(token)
diff --git a/app/javascript/packs/controllers/viewer_controller.js b/app/javascript/packs/controllers/viewer_controller.js
index b3d29725c72bbe1f1d88392b33c88ff98eb9dd92..116d23482f3d1131a932823ad51bd191ccd0f1c8 100644
--- a/app/javascript/packs/controllers/viewer_controller.js
+++ b/app/javascript/packs/controllers/viewer_controller.js
@@ -374,7 +374,7 @@ export default class extends Controller {
         }
         this.viewer = OpenSeadragon({
             id: "openseadragon_view",
-            prefixUrl: "/openseadragon/images/",
+            prefixUrl: "/static/js/openseadragon/images/feathericons/",
             sequenceMode: true,
             initialPage: initialPage,
             tileSources: this.pagesValue,
diff --git a/app/javascript/packs/utils/dataset_api.js b/app/javascript/packs/utils/dataset_api.js
index 622c80ea483d2d34cf63aa7d80b6155c82c525f8..ef24e5717d3cf0e8b7110f3e8227d9db5a1f1479 100644
--- a/app/javascript/packs/utils/dataset_api.js
+++ b/app/javascript/packs/utils/dataset_api.js
@@ -2,8 +2,8 @@ export class DatasetAPI {
     static create_dataset(title, callback) {
         $.ajax({
             type: "POST",
-            url: "/dataset/create",
-            data: {title: title},
+            url: "/en/tool/newspapers-platform/dataset/create",
+            data: { title: title },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -18,8 +18,8 @@ export class DatasetAPI {
     static rename_dataset(id, title, callback) {
         $.ajax({
             type: "POST",
-            url: "/dataset/rename",
-            data: {id: id, title: title},
+            url: "/en/tool/newspapers-platform/dataset/rename",
+            data: { id: id, title: title },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -34,8 +34,8 @@ export class DatasetAPI {
     static import_dataset(id, title, callback) {
         $.ajax({
             type: "POST",
-            url: "/dataset/import",
-            data: {original_dataset_id: id, title: title},
+            url: "/en/tool/newspapers-platform/dataset/import",
+            data: { original_dataset_id: id, title: title },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -51,8 +51,8 @@ export class DatasetAPI {
     static delete_dataset(datasetId, callback) {
         $.ajax({
             type: "POST",
-            url: "/dataset/delete",
-            data: {dataset_id: datasetId},
+            url: "/en/tool/newspapers-platform/dataset/delete",
+            data: { dataset_id: datasetId },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -68,7 +68,7 @@ export class DatasetAPI {
     static update_datasets_list(callback) {
         $.ajax({
             type: "GET",
-            url: "/datasets/update",
+            url: "/en/tool/newspapers-platform/datasets/update",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -85,7 +85,7 @@ export class DatasetAPI {
     static setCurrentWorkingDataset(datasetId, callback) {
         $.ajax({
             type: "POST",
-            url: "/datasets/working_dataset",
+            url: "/en/tool/newspapers-platform/datasets/working_dataset",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -101,7 +101,7 @@ export class DatasetAPI {
     static addSelectedDocumentsToWorkingDataset(documentsIds, callback) {
         $.ajax({
             type: "POST",
-            url: "/datasets/add_selected_documents",
+            url: "/en/tool/newspapers-platform/datasets/add_selected_documents",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -117,7 +117,7 @@ export class DatasetAPI {
     static addSelectedCompoundToWorkingDataset(compoundId, callback) {
         $.ajax({
             type: "POST",
-            url: "/datasets/add_compound",
+            url: "/en/tool/newspapers-platform/datasets/add_compound",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -133,7 +133,7 @@ export class DatasetAPI {
     static removeSelectedDocumentsToWorkingDataset(documentsIds, callback) {
         $.ajax({
             type: "POST",
-            url: "/datasets/remove_selected_documents",
+            url: "/en/tool/newspapers-platform/datasets/remove_selected_documents",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -149,7 +149,7 @@ export class DatasetAPI {
     static addAllDocumentsToWorkingDataset(searchParams, callback) {
         $.ajax({
             type: "POST",
-            url: "/datasets/add_all_documents",
+            url: "/en/tool/newspapers-platform/datasets/add_all_documents",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -165,7 +165,7 @@ export class DatasetAPI {
     static exportDataset(datasetId, exportType, callback) {
         $.ajax({
             type: "POST",
-            url: "/datasets/export_dataset",
+            url: "/en/tool/newspapers-platform/datasets/export_dataset",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -182,7 +182,7 @@ export class DatasetAPI {
     static paginateDataset(datasetId, page, per_page, sort, sort_order, type, callback) {
         $.ajax({
             type: "POST",
-            url: `/dataset/${datasetId}/paginate`,
+            url: `/en/tool/newspapers-platform/dataset/${datasetId}/paginate`,
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -199,7 +199,7 @@ export class DatasetAPI {
     static getDatasets(callback) {
         $.ajax({
             type: "GET",
-            url: `/datasets/list`,
+            url: "/en/tool/newspapers-platform/datasets/list",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -213,7 +213,7 @@ export class DatasetAPI {
     static toggleSharingStatus(dataset_id, callback) {
         $.ajax({
             type: "POST",
-            url: `/dataset/toggle_sharing_status`,
+            url: "/en/tool/newspapers-platform/dataset/toggle_sharing_status",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
diff --git a/app/javascript/packs/utils/search_api.js b/app/javascript/packs/utils/search_api.js
index 52408f59d79eaf7d8f7d98764809436fe71581be..8c56006100597b68e4e95f6804a9cccdcc931c60 100644
--- a/app/javascript/packs/utils/search_api.js
+++ b/app/javascript/packs/utils/search_api.js
@@ -3,8 +3,8 @@ export class SearchAPI {
     static load_dataset_named_entities(dataset_id, callback) {
         $.ajax({
             type: "POST",
-            url: "/dataset_named_entities",
-            data: {dataset_id: dataset_id},
+            url: "/en/tool/newspapers-platform/dataset_named_entities",
+            data: { dataset_id: dataset_id },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -20,8 +20,8 @@ export class SearchAPI {
     static load_named_entities(docs_ids, callback) {
         $.ajax({
             type: "POST",
-            url: "/named_entities",
-            data: {docs_ids: docs_ids},
+            url: "/en/tool/newspapers-platform/named_entities",
+            data: { docs_ids: docs_ids },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -37,8 +37,8 @@ export class SearchAPI {
     static facetPagination(fieldName, nbPages, currentPage, callback) {
         $.ajax({
             type: "POST",
-            url: "/catalog/facet_pagination",
-            data: {field_name: fieldName, nb_pages: nbPages, current_page: currentPage},
+            url: "/en/tool/newspapers-platform/catalog/facet_pagination",
+            data: { field_name: fieldName, nb_pages: nbPages, current_page: currentPage },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -54,7 +54,7 @@ export class SearchAPI {
     static wideDatesHistogram(callback) {
         $.ajax({
             type: "POST",
-            url: "/catalog/wide_dates_histogram",
+            url: "/en/tool/newspapers-platform/catalog/wide_dates_histogram",
             data: {},
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
@@ -71,7 +71,7 @@ export class SearchAPI {
     static confirm_compond_creation(article_parts, callback) {
         $.ajax({
             type: "POST",
-            url: `/catalog/confirm_compound_creation`,
+            url: `/en/tool/newspapers-platform/catalog/confirm_compound_creation`,
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -87,7 +87,7 @@ export class SearchAPI {
     static create_compound(title, all_text, issue_id, article_parts_ids, callback) {
         $.ajax({
             type: "POST",
-            url: `/catalog/create_compound`,
+            url: `/en/tool/newspapers-platform/catalog/create_compound`,
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -106,7 +106,7 @@ export class SearchAPI {
     static delete_compound_article(compound_id, callback) {
         $.ajax({
             type: "POST",
-            url: `/catalog/delete_compound`,
+            url: `/en/tool/newspapers-platform/catalog/delete_compound`,
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -122,7 +122,7 @@ export class SearchAPI {
     static random_sample(callback) {
         $.ajax({
             type: "POST",
-            url: `/catalog/random_sample`,
+            url: `/en/tool/newspapers-platform/catalog/random_sample`,
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
diff --git a/app/views/catalog/_date_facet.html.erb b/app/views/catalog/_date_facet.html.erb
index f3569b9a812aa29c46669ab204954d8e76e236b7..c054514e934d9e042bced1a4142d88cef54c448c 100644
--- a/app/views/catalog/_date_facet.html.erb
+++ b/app/views/catalog/_date_facet.html.erb
@@ -15,7 +15,7 @@
         <div class="accordion-body" data-controller="date-facets"
              data-date-facets-max-date-value="<%= datepicker_max_date %>"
              data-date-facets-min-date-value="<%= datepicker_min_date %>">
-            <form action="/search" method="get">
+            <form action="./search" method="get">
                 <div class="input-group mb-2">
                     <span class="input-group-text">From</span>
                     <input class="form-control" type="date" id="date_facet_from" name="f[date_created_dtsi][from]"
diff --git a/app/views/catalog/_search_form.html.erb b/app/views/catalog/_search_form.html.erb
index 10d476926bbee2d383c18f126089fb2135687f47..61e5b7a18d36791c7a9d8596209500fb1398abfc 100644
--- a/app/views/catalog/_search_form.html.erb
+++ b/app/views/catalog/_search_form.html.erb
@@ -1,6 +1,6 @@
 <div id="search_forms">
     <div id="search_form" class="mb-2">
-        <form action="/search" method="get" class="row">
+        <form action="./search" method="get" class="row">
             <div class="col-3 btn-group" role="group">
                 <input type="radio" class="btn-check" name="search_type" value="exact" id="exact_search" autocomplete="off" <%= "checked" if @search_type.nil? || @search_type == "exact" %>>
                 <label class="btn btn-outline-primary" for="exact_search">Exact search</label>
diff --git a/app/views/dataset/_document.html.erb b/app/views/dataset/_document.html.erb
index 8ab1625b9e75dd035c4bb0e5dedf52a3dfed49f5..82f6334a82bdef00fcd9c3cc771a89d450def822 100644
--- a/app/views/dataset/_document.html.erb
+++ b/app/views/dataset/_document.html.erb
@@ -5,11 +5,11 @@
     <h5>
         <%
             if doc.is_a?(Article)
-               url = "/catalog/#{doc.issue_id}?selected=#{doc.id}"
+               url = "/en/tool/newspapers-platform/catalog/#{doc.issue_id}?selected=#{doc.id}"
            elsif doc.is_a?(CompoundArticle)
-               url = "/catalog/#{doc.issue_id}?selected_compound=#{doc.id}"
+               url = "/en/tool/newspapers-platform/catalog/#{doc.issue_id}?selected_compound=#{doc.id}"
            else
-               url = "/catalog/#{doc.id}"
+               url = "/en/tool/newspapers-platform/catalog/#{doc.id}"
            end
         %>
         <a href="<%= url %>">
diff --git a/app/views/dataset/_public_datasets_modal.html.erb b/app/views/dataset/_public_datasets_modal.html.erb
index e2dd8bed90b717bd7ae15c1ac9ab8ccd6ea5bcc5..a8e1a98ce8908306cb5dc2f36fe5bf4c12d5f0a1 100644
--- a/app/views/dataset/_public_datasets_modal.html.erb
+++ b/app/views/dataset/_public_datasets_modal.html.erb
@@ -28,7 +28,8 @@
                             </td>
                             <td>
                                 <% user = User.find(d.user_id) %>
-                                <% username = user.email[0...user.email.index('@')] %>
+                                <%# <% username = user.email[0...user.email.index('@')] %> 
+                                <% username = user.id %>
                                 <%= username %>
                             </td>
                             <td>
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 40355712a9d24a056ca3d3d54771848bbdd316e6..0f21118e206f3d535d98a67dd40037fa1f2026bb 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -3,7 +3,7 @@ require "active_support/core_ext/integer/time"
 Rails.application.configure do
   # Settings specified here will take precedence over those in config/application.rb.
 
-  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
+  config.action_mailer.default_url_options = { host: "localhost", port: 3000 }
 
   # In the development environment your application's code is reloaded any time
   # it changes. This slows down response time but is perfect for development
@@ -18,13 +18,13 @@ Rails.application.configure do
 
   # Enable/disable caching. By default caching is disabled.
   # Run rails dev:cache to toggle caching.
-  if Rails.root.join('tmp', 'caching-dev.txt').exist?
+  if Rails.root.join("tmp", "caching-dev.txt").exist?
     config.action_controller.perform_caching = true
     config.action_controller.enable_fragment_cache_logging = true
 
     config.cache_store = :memory_store
     config.public_file_server.headers = {
-      'Cache-Control' => "public, max-age=#{2.days.to_i}"
+      "Cache-Control" => "public, max-age=#{2.days.to_i}",
     }
   else
     config.action_controller.perform_caching = false
@@ -75,4 +75,8 @@ Rails.application.configure do
 
   # Uncomment if you wish to allow Action Cable access from any origin.
   # config.action_cable.disable_request_forgery_protection = true
+  config.action_cable.url = "http://127.0.0.1:3000/cable"
+  config.action_cable.disable_request_forgery_protection = true
+  config.action_controller.forgery_protection_origin_check = false
+  config.action_controller.default_protect_from_forgery = false
 end
diff --git a/config/locales/newspapers.en.yml b/config/locales/newspapers.en.yml
index 97c4a43d0d957f613b6581ea86909654c01419c5..2c2c6557c62423893d64762e96e8c09416063a24 100644
--- a/config/locales/newspapers.en.yml
+++ b/config/locales/newspapers.en.yml
@@ -18,7 +18,7 @@ en:
       1: 'Monday'
       2: 'Tuesday'
       3: 'Wednesday'
-      4: 'Thirsday'
+      4: 'Thursday'
       5: 'Friday'
       6: 'Saturday'
     titles: