diff --git a/capsule-prototype/js/online-rekall/RekallApplication.js b/capsule-prototype/js/online-rekall/RekallApplication.js
index ce1cd2a023cf94b817e15b767810012cc8a6bd34..c214d4e070efd711ed12dd41534e6798ff399253 100644
--- a/capsule-prototype/js/online-rekall/RekallApplication.js
+++ b/capsule-prototype/js/online-rekall/RekallApplication.js
@@ -7,7 +7,8 @@
             'setPlaybackRate',
             'videoPlayer',
             'rekall',
-            'getUrl'
+            'getUrl',
+            'projectName'
         ];
 
         let localOptions = {};
@@ -33,6 +34,26 @@
                     window.top.location.assign(arguments[0]);
                 }
             },
+            projectName: function(){
+                if (0 === arguments.length) {
+                    if (localOptions?.Rekall?.project?.metadata) {
+                        return localOptions.Rekall.project.metadata["Title"];
+                    }
+
+                    return "";
+                }
+                else if ('string' === typeof arguments[0]) {
+                    if (!localOptions?.Rekall?.project?.metadata["Title"]){
+                        localOptions.Rekall.project.metadata["Title"] = '';
+                    }
+
+                    if(localOptions.Rekall.project.metadata["Title"] !== arguments[0])
+                    {
+                        localOptions.Rekall.project.metadata["Title"] = arguments[0];
+                        localOptions.PubSub.publish('updated.project.name', { projectName: localOptions.Rekall.project.metadata["Title"] })
+                    }
+                }
+            },
             pubSub: function () {
                 return localOptions.PubSub;
             },
diff --git a/capsule-prototype/js/online-script.js b/capsule-prototype/js/online-script.js
index afd9f67b8e4412ed7cd0213854288ff0472a7fc4..d37dbafbd905ec8ac77d9e6a2c0755f085a2e744 100644
--- a/capsule-prototype/js/online-script.js
+++ b/capsule-prototype/js/online-script.js
@@ -11,6 +11,7 @@ window.onload = function() {
 	pubSub.subscribe('video', openVideo);
 	pubSub.subscribe('open_paste_modal', openPasteModal);
 	pubSub.subscribe('close_paste_modal', closePasteModal);
+	pubSub.subscribe('updated.project.name', onUpdatedProjectName)
 };
 
 $(document).ready(function() {
@@ -77,7 +78,7 @@ $(document).ready(function() {
 					event.stopPropagation();
 					$("#popupSettingsSpace").show();
 
-					$("#popupSettingsTitle").html(rekall.project.metadata["Title"]).removeClass("empty");
+					$("#popupSettingsTitle").html(window.app.rekall.Rekall('projectName')).removeClass("empty");
 					$("#popupSettingsAuthor").html(rekall.project.metadata["Author"]).removeClass("empty");
 					$("#popupSettingsEmail").html(rekall.project.metadata["Email"]).removeClass("empty");
 					$("#popupSettingsCredits").html(rekall.project.metadata["Comments"].replace(/\n/gi, "<br/>")).removeClass("empty");
@@ -222,8 +223,8 @@ function setEditionControls() {
 		rekall.timeline.pause();
 		$("#popupSettingsSpace").show();
 
-		if(rekall.project.metadata["Title"]!="") {
-			$("#popupSettingsTitle").html(rekall.project.metadata["Title"]).removeClass("empty");
+		if(window.app.rekall.Rekall('projectName') && window.app.rekall.Rekall('projectName') != "") {
+			$("#popupSettingsTitle").html(window.app.rekall.Rekall('projectName')).removeClass("empty");
 			$("#popupSettingsTitleLabel").show();
 		} else {
 			$("#popupSettingsTitle").html("+ Add project name").addClass("empty");
@@ -662,7 +663,7 @@ function openAlert(message, buttons) {
 		closeAlert();
 
 	if(message=="input"){
-		$("#popupAlertMessage").html("Copy this link to share <i>"+rekall.project.metadata["Title"]+"</i>");
+		$("#popupAlertMessage").html("Copy this link to share <i>"+ window.app.rekall.Rekall('projectName') +"</i>");
 		$(".popupAlertButton").hide();
 		$("#popupAlertButtonOk").show();
 
@@ -674,7 +675,7 @@ function openAlert(message, buttons) {
 		$("#popupAlertInput").focus().select();
 
 	} else if(message=="textarea"){
-		$("#popupAlertMessage").html("Embed <i>"+rekall.project.metadata["Title"]+"</i> on your webpage");
+		$("#popupAlertMessage").html("Embed <i>"+ window.app.rekall.Rekall('projectName')+"</i> on your webpage");
 		$(".popupAlertButton").hide();
 		$("#popupAlertButtonOk").show();
 
@@ -723,8 +724,8 @@ function closeSettingsInputs() {
 			if($(this).attr("id")=="popupSettingsTitleInput") {
 
 				var newName = $(this).val().trim();
+				window.app.rekall.Rekall('projectName', newName);
 				$(this).val(newName);
-				setProjectMeta("Title", newName);
 
 				if(newName!="") {
 					$("#popupSettingsTitle").html(newName).removeClass("empty");
@@ -1194,6 +1195,10 @@ function removeProject() {
 	});
 }
 
+function onUpdatedProjectName(msg, data) {
+	setProjectMeta('Title', data.projectName);
+}
+
 function setProjectMeta(metaType, meta) {
 	rouletteStart();
 	$.ajax("php/project.php", {
@@ -1388,8 +1393,8 @@ function uploadFilesNext() {
 //Code d'embarquement du projet Rekall
 function shareEmbed() {
 	var width = 960, height = round(width * 0.44);
-	var embedUrl = '<iframe src="' + rekall.baseUrl + '?w=1" width="' + width + '" height="' + height + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
-	embedUrl += '<p><a href="' + rekall.baseUrl + '?w=1">' + rekall.project.metadata["Title"] + '</a> from '+rekall.project.metadata["Author"]+' on <a href="http://www.memorekall.fr">MemoRekall</a>.</p>';
+	var embedUrl = '<iframe src="' + window.app.rekall.Rekall('getUrl', 'projectPreview') + '" width="' + width + '" height="' + height + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
+	embedUrl += '<p><a href="' + window.app.rekall.Rekall('getUrl', 'projectPreview') + '">' + window.app.rekall.Rekall('projectName') + '</a> from '+rekall.project.metadata["Author"]+' on <a href="http://www.memorekall.fr">MemoRekall</a>.</p>';
 	console.log(embedUrl);
 //	openAlert("Embed code in console");
 	return embedUrl;
@@ -1397,8 +1402,7 @@ function shareEmbed() {
 
 function shareLink() {
 	var width = 960, height = round(width * 0.44);
-	var embedUrl = rekall.baseUrl + "?w=1";
-//	openAlert(embedUrl);
+	var embedUrl = window.app.rekall.Rekall('getUrl', 'projectPreview');
 	return embedUrl;
 }
 
diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php
index b9f1a4f3d4541838edda1581f5b0010701ae132e..3b3afeb1f1f65efc81600470551840f27b30bc5d 100755
--- a/src/Controller/ProjectController.php
+++ b/src/Controller/ProjectController.php
@@ -50,7 +50,7 @@ class ProjectController extends AbstractController
 
         $this->createDefaultProjectStructure($capsule_directory);
 
-        $this->setVideoUrlNodeAttributeInXMLProjectFile($capsule_directory, $video_url);
+        $this->configureXMLProjectFile($capsule_directory, $video_url, $capsule);
 
         $this->createOrUpdatePasswordFile($capsule_directory, $capsule->getPassword());
 
@@ -149,7 +149,7 @@ class ProjectController extends AbstractController
             $project_directory = $capsule->getLinkPath();
 
             chdir('../legacy/');
-            $this->setVideoUrlNodeAttributeInXMLProjectFile($project_directory, $new_video_url);
+            $this->configureXMLProjectFile($project_directory, $new_video_url, $capsule);
 
             $this->addFlash(
                 'success',
@@ -189,8 +189,11 @@ class ProjectController extends AbstractController
         );
     }
 
-    private function setVideoUrlNodeAttributeInXMLProjectFile(string $project_directory, string $video_url): void
-    {
+    private function configureXMLProjectFile(
+        string $project_directory,
+        string $video_url,
+        Capsule $capsule
+    ): void {
         $project_xml_file = $project_directory . "/file/project.xml";
         $xml_file_content = simplexml_load_file($project_xml_file);
 
@@ -200,6 +203,11 @@ class ProjectController extends AbstractController
 
         /** @phpstan-ignore-next-line */
         $xml_file_content->video['url'] = $video_url;
+        $xml_file_content->addChild('projectMeta');
+        /** @phpstan-ignore-next-line */
+        $xml_file_content->projectMeta['ctg'] = 'Title';
+        /** @phpstan-ignore-next-line */
+        $xml_file_content->projectMeta['cnt'] = $capsule->getName();
         $video_url_XML_tag_is_filled = $xml_file_content->saveXML($project_xml_file);
 
         if (false === $video_url_XML_tag_is_filled) {
diff --git a/templates/project/edit.html.twig b/templates/project/edit.html.twig
index 2faddade7986fe6a7559ad5c224986b30ce78c62..47ed2749375569c1c64092b2dd6465ef5ca3cde5 100644
--- a/templates/project/edit.html.twig
+++ b/templates/project/edit.html.twig
@@ -1,6 +1,12 @@
 {% extends 'layout.html.twig' %}
 
 {% block body %}
+  <div class="m-auto d-flex flex-row align-items-center justify-content-center mb-5" role="status">
+    <span class="pr-5">{{ 'preview.loading' | trans }}</span>
+    <span class="spinner-grow spinner-grow-sm mx-2" role="status" aria-hidden="true"></span>
+    <span class="spinner-grow spinner-grow-sm mx-2" role="status" aria-hidden="true"></span>
+    <span class="spinner-grow spinner-grow-sm mx-2" role="status" aria-hidden="true"></span>
+  </div>
 
   <iframe src="{{ url }}"
           id="legacyContent"