diff --git a/VBcms-2.0.zip b/VBcms-2.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..489f12c5b474fe98954a0e121d8a543cf7e96f39
Binary files /dev/null and b/VBcms-2.0.zip differ
diff --git a/jsonEncode.php b/jsonEncode.php
index 568c53dd3e8b92b94c0af849e1ab0d15e01c0be9..523797018fbd1e44a26afde24e00b32a5878774f 100644
--- a/jsonEncode.php
+++ b/jsonEncode.php
@@ -1,6 +1,6 @@
 <?php
 // Fichier de test
-$deTest['type'] = "user";
-$deTest['id'] = "1";
+$deTest['branch'] = "pre2.1";
+$deTest['build'] = "114";
 
-echo urlencode(json_encode($deTest));
\ No newline at end of file
+echo (json_encode($deTest));
\ No newline at end of file
diff --git a/vbcms-admin/updater.php b/vbcms-admin/updater.php
index 14c51d78790490593b8784255cf3a0bb0a994efc..deb39dd0c078c10abdf3e55723cd582b927dd365 100644
--- a/vbcms-admin/updater.php
+++ b/vbcms-admin/updater.php
@@ -1,36 +1,7 @@
 <?php
-$curentUpdateCanal = VBcmsGetSetting('updateCanal');
-$serverId = VBcmsGetSetting('serverId');
-$key = VBcmsGetSetting('encryptionKey');
-$vbcmsVer = VBcmsGetSetting('vbcmsVersion');
-$curentUpdateCanal = VBcmsGetSetting('updateCanal');
+$hasNewUpdate = checkVBcmsUpdates();
 
-$updateInfos = file_get_contents("https://api.vbcms.net/updater/lastest?serverId=".$serverId."&key=".$key."&version=".$vbcmsVer."&canal=".$curentUpdateCanal);
-if(isJson($updateInfos)){
-    $updateInfosData = json_decode($updateInfos, true);
-    if (!$updateInfosData["upToDate"]) {
-        $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 0 WHERE `vbcms-settings`.`name` = 'upToDate'");
-    
-        $response = $bdd->query("SELECT COUNT(*) FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'")->fetchColumn();
-        if ($response!=1) {
-            $response = $bdd->prepare("INSERT INTO `vbcms-notifications` (`id`, `origin`, `link`, `content`, `removable`, `date`, `userId`) VALUES (NULL, '[\"vbcms-updater\", \"notifyUpdate\"]', '/vbcms-admin/updater\"', ?, '0', ?, 0)");
-            $response->execute([translate("isNotUpToDate"), date("Y-m-d H:i:s")]);
-        }
-    } else{
-        $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 1 WHERE `vbcms-settings`.`name` = 'upToDate'");
-        $bdd->query("DELETE FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'");
-    } 
-} else {
-    $error = "Impossible de vérifier les mises à jour:".$updateInfos;
-    $updateInfosData['version'] = translate("unknownF");
-}
-
-$response = $bdd->prepare("UPDATE `vbcms-settings` SET `value` = ? WHERE `vbcms-settings`.`name` = 'lastUpdateCheck'");
-$response->execute([date("Y-m-d H:i:s")]);
-
-$isUpToDate = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name = 'upToDate'")->fetchColumn();
-$lastUpdateCheck = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name = 'lastUpdateCheck'")->fetchColumn();
-if ($isUpToDate == 1) {
+if (!$hasNewUpdate) {
     $updateMessage = translate("isUpToDate");
     $textColor = "success";
 } else {
@@ -59,14 +30,12 @@ if ($isUpToDate == 1) {
                 <img src="<?=VBcmsGetSetting("websiteUrl")?>vbcms-admin/images/vbcms-logo/raccoon-in-box-512x.png">
             </div>
             <div class="ml-5">
-                <h4>VBcms <small><?=$vbcmsVer?></small></h4>
+                <h4>VBcms <small><?=VBcmsGetSetting("vbcmsVersion")?></small></h4>
                 <p><strong><?=$updateMessage?></strong><br>
-                    <?=translate("lastChecked")?>: <?=$lastUpdateCheck?></p>
+                    <?=translate("lastChecked")?>: <?=VBcmsGetSetting("lastUpdateCheck")?></p>
 
                 <?php
-                    if ($isUpToDate == 1) {
-                        #
-                    } else {
+                    if ($hasNewUpdate) {
                         echo '<p>Test</p>';
                         echo '<button type="button" onclick="$(\'#updateModal\').modal(\'toggle\');" class="btn btn-light">'.translate("downloadAndInstall").'</button>';
                     }
@@ -80,17 +49,17 @@ if ($isUpToDate == 1) {
         <div class="row">
             <div class="col">
                 <h5>Détail de la mise à jour</h5>
-                <p><span class="text-muted">Installée: </span><span class="text-<?=$textColor?>"><?=$vbcmsVer?></span>
+                <p><span class="text-muted">Installée: </span><span class="text-<?=$textColor?>"><?=VBcmsGetSetting("vbcmsVersion")?></span>
                 <?php
-                if ($isUpToDate == 0) echo '<br><span class="text-muted">Disponible: </span><span class="text-success">'.$updateInfosData["version"].'</span>';
+                if ($hasNewUpdate) echo '<br><span class="text-muted">Disponible: </span><span class="text-success">'.$hasNewUpdate["name"].'</span>';
                 ?>
                 <br><span class="text-muted">Canal de mise à jour: </span>
                 <?php
-                if ($curentUpdateCanal == "release") {
+                if (VBcmsGetSetting("updateCanal") == "release") {
                     echo '<span class="text-success">Release</span>';
-                } elseif ($curentUpdateCanal == "dev") {
+                } elseif (VBcmsGetSetting("updateCanal") == "dev") {
                     echo '<span class="text-danger">Développement</span>';
-                } elseif ($curentUpdateCanal == "nightly") {
+                } elseif (VBcmsGetSetting("updateCanal") == "nightly") {
                     echo '<span class="text-warning">Bêta</span>';
                 }
                 
@@ -100,6 +69,7 @@ if ($isUpToDate == 1) {
             </div>
             <div class="col-8"">
                 <h4>Détail de la mise à jour</h4>
+                <p><?=$hasNewUpdate["description"] ?? ''?></p>
             </div>
             <div class="col">
                 <h5>Obtenir de l'aide</h5>
diff --git a/vbcms-core/adminAutomatedTasks.php b/vbcms-core/adminAutomatedTasks.php
index 4c9a26feef834f0288e40a42bf8ca827809e8f83..43ff2338082c423c503130f5cedd84b0b8594f8b 100644
--- a/vbcms-core/adminAutomatedTasks.php
+++ b/vbcms-core/adminAutomatedTasks.php
@@ -8,22 +8,5 @@ $datetime = new DateTime(date("Y-m-d H:i:s"));
 $lastUpdateCheck = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name = 'lastUpdateCheck'")->fetchColumn();
 $lastUpdateCheck = DateTime::createFromFormat('Y-m-d H:i:s', $lastUpdateCheck);
 if ((abs($datetime->getTimestamp()-$lastUpdateCheck->getTimestamp())) > 1800){
-    $key = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='encryptionKey'")->fetchColumn();
-    $vbcmsVer = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='vbcmsVersion'")->fetchColumn();
-    $curentUpdateCanal = $bdd->query("SELECT value FROM `vbcms-settings` WHERE name='updateCanal'")->fetchColumn();
-    
-    $json = file_get_contents("https://api.vbcms.net/updater/lastest?serverId=".VBcmsGetSetting("serverId")."&key=".$key."&version=".$vbcmsVer."&canal=".$curentUpdateCanal);
-    $jsonData = json_decode($json, true);
-
-    if (!empty($jsonData) && !$jsonData["upToDate"]) {
-        $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 0 WHERE `vbcms-settings`.`name` = 'upToDate'");
-
-        $response = $bdd->query("SELECT COUNT(*) FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'")->fetchColumn();
-        if ($response!=1) {
-            $response = $bdd->prepare("INSERT INTO `vbcms-notifications` (`id`, `origin`, `link`, `content`, `dismissible`, `date`, `userId`) VALUES (NULL, '[\"vbcms-updater\", \"notifyUpdate\"]', '/vbcms-admin/updater\"', ?, '0', ?, 0)");
-            $response->execute([translate("isNotUpToDate"), date("Y-m-d H:i:s")]);
-        }
-    }
-    $response = $bdd->prepare("UPDATE `vbcms-settings` SET `value` = ? WHERE `vbcms-settings`.`name` = 'lastUpdateCheck'");
-    $response->execute([date("Y-m-d H:i:s")]);
+    checkVBcmsUpdates();
 }
\ No newline at end of file
diff --git a/vbcms-core/functions.php b/vbcms-core/functions.php
index 7b487f2293d63924d26bf30107a0fb542264f69f..5c1b614092171b2f75cb773ee46270ad0a08af06 100644
--- a/vbcms-core/functions.php
+++ b/vbcms-core/functions.php
@@ -164,6 +164,73 @@ function show404($type){
 	}
 }
 
+function checkVBcmsUpdates(){
+    global $bdd;
+    $vbcmsVer = VBcmsGetSetting('vbcmsVersion');
+    $currentUpdateCanal = VBcmsGetSetting('updateCanal');
+
+    if($currentUpdateCanal == "dev"){
+        $updateUrl = "https://api.github.com/repos/SofianeLasri/VBcms-2.0/commits";
+    }else{
+        $updateUrl = "https://api.github.com/repos/SofianeLasri/VBcms-2.0/releases"; 
+    }
+
+    $options  = array('http' => array('user_agent' => 'VBcms Updater'));
+    $context  = stream_context_create($options);
+
+    $updateInfos = file_get_contents($updateUrl, true, $context);
+    if(isJson($updateInfos)){
+        // On le fait ici et pas avant car on souhaite recommencer si l'on ne reçoit pas du JSON 
+        $response = $bdd->prepare("UPDATE `vbcms-settings` SET `value` = ? WHERE `vbcms-settings`.`name` = 'lastUpdateCheck'");
+        $response->execute([date("Y-m-d H:i:s")]);
+
+        $updateInfosData = json_decode($updateInfos, true);
+        unset($updateInfos);
+
+        if(!empty($updateInfosData)){
+            $VBcmsDateFormat = 'Y-m-d H:i:s';
+            $VBcmsActualUpdateCreationDate = new DateTime(VBcmsGetSetting('updateCreationDate'));
+
+            if($currentUpdateCanal == "dev"){
+                $remoteUpdateDate = new DateTime($updateInfosData[0]['commit']['author']['date']);
+                $updateInfos['name'] = "Commit ".substr($updateInfosData[0]['sha'], 0, 7);
+                $updateInfos['description'] = $updateInfosData[0]['commit']['message'];
+                $updateInfos['date'] = $remoteUpdateDate->format("Y-m-d H:i:s");
+            }else{
+                if($updateInfosData[0]['prerelease']){
+                    $remoteUpdateDate = new DateTime($updateInfosData[0]['published_at']);
+                    $updateInfos['name'] = $updateInfosData[0]['name'];
+                    $updateInfos['description'] = $updateInfosData[0]['body'];
+                    $updateInfos['date'] = $remoteUpdateDate->format("Y-m-d H:i:s");
+                }
+                
+            }
+            
+            if($remoteUpdateDate > $VBcmsActualUpdateCreationDate){
+
+                $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 0 WHERE `vbcms-settings`.`name` = 'upToDate'");
+        
+                $response = $bdd->query("SELECT COUNT(*) FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'")->fetchColumn();
+                if ($response!=1) {
+                    $response = $bdd->prepare("INSERT INTO `vbcms-notifications` (`id`, `origin`, `link`, `content`, `removable`, `date`, `userId`) VALUES (NULL, '[\"vbcms-updater\", \"notifyUpdate\"]', '/vbcms-admin/updater\"', ?, '0', ?, 0)");
+                    $response->execute([translate("isNotUpToDate"), date("Y-m-d H:i:s")]);
+                }
+                return $updateInfos;
+            } else {
+                $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 1 WHERE `vbcms-settings`.`name` = 'upToDate'");
+                $bdd->query("DELETE FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'");
+                return false;
+            }
+        } else {
+            $response = $bdd->query("UPDATE `vbcms-settings` SET `value` = 1 WHERE `vbcms-settings`.`name` = 'upToDate'");
+            $bdd->query("DELETE FROM `vbcms-notifications` WHERE origin = '[\"vbcms-updater\", \"notifyUpdate\"]'");
+            return false;
+        }
+    } else {
+        return false;
+    }
+}
+
 // Petites fonctions utiles
 function isJson($string) {
 	json_decode($string);