diff --git a/scripts/release-android-sources.sh b/scripts/release-android-sources.sh
new file mode 100644
index 0000000000000000000000000000000000000000..24f6beb534d060cd2e9b17e5e2ab56ccbc8ad0e6
--- /dev/null
+++ b/scripts/release-android-sources.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# Get to the root project
+if [[ "_" == "_${PROJECT_DIR}" ]]; then
+  SCRIPT_DIR=$(dirname $0)
+  PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
+  export PROJECT_DIR
+fi;
+
+cd ${PROJECT_DIR}
+
+# Preparing the environment
+. ${PROJECT_DIR}/scripts/env-global.sh
+if [[ $? -ne 0 ]]; then
+  exit 1
+fi
+
+# Commit android project
+cd ${PROJECT_DIR}/platforms/android || exit 1
+git reset HEAD
+git add -A
+git commit -m "v$1"
+git tag -f -a "v$1" -m "Release v$1"
+# Push the tag
+git push -f origin "v$1"
+# Push the master branch
+git push -f origin
+if [[ $? -ne 0 ]]; then
+  echo "ERROR: cannot push platform/android project ! Continue anyway..."
+fi
diff --git a/scripts/release-desktop.sh b/scripts/release-desktop.sh
index df7f8021336b25d59faa765f878692512c611702..5d6b1a0fa205b4d037ccc521a1e7e73ac22d5846 100755
--- a/scripts/release-desktop.sh
+++ b/scripts/release-desktop.sh
@@ -15,18 +15,48 @@ if [[ $? -ne 0 ]]; then
   exit 1
 fi
 
-if [[ -d "${PROJECT_DIR}/dist/desktop" ]]; then
-  cd "${PROJECT_DIR}/dist/desktop"
-
-  # Fetch last updates
-  git fetch origin && git merge origin/master || exit 1
-
-  # Build desktop assets
-  ./release.sh $1
-  if [[ $? -ne 0 ]]; then
-      exit 1
-  fi
-else
+### Control that the script is run on `dev` branch
+branch=$(git rev-parse --abbrev-ref HEAD)
+if [[ ! "$branch" = "master" ]];
+then
+  echo ">> This script must be run under \`master\` branch"
+  exit 1
+fi
+
+### Get version to release
+current=$(grep -P "version\": \"\d+.\d+.\d+(\w*)" package.json | grep -m 1 -oP "\d+.\d+.\d+(\w*)")
+if [[ "_$current" == "_" ]]; then
+  echo "Unable to read the current version in 'package.json'. Please check version format is: x.y.z (x and y should be an integer)."
+  exit 1;
+fi
+
+### Check submodule exists
+if [[ ! -d "${PROJECT_DIR}/dist/desktop" ]]; then
   echo "ERROR: dist/desktop not found -> Make sure git submodule has been init!"
   exit 1
 fi;
+
+### Sign extension
+case "$1" in
+  pre|rel)
+    echo "Building v$current desktop artifacts..."
+    ;;
+  *)
+    echo "No task given"
+    echo "Usage:"
+      echo " > $0 pre|rel"
+    exit 1
+    ;;
+esac
+
+cd "${PROJECT_DIR}/dist/desktop"
+
+# Fetch last updates
+git fetch origin && git merge origin/master || exit 1
+
+# Build desktop assets
+./release.sh $current
+if [[ $? -ne 0 ]]; then
+    exit 1
+fi
+
diff --git a/scripts/release-to-github.sh b/scripts/release-to-github.sh
index b66eb757d68499c22b4fa2bb1d37633314f3e8e0..d40c264478a319e07e38307ed89af2e260befce8 100755
--- a/scripts/release-to-github.sh
+++ b/scripts/release-to-github.sh
@@ -38,6 +38,7 @@ else
     exit 1
 fi
 
+### check arguments
 case "$1" in
   del)
     result=$(curl -i "$REPO_API_URL/releases/tags/v$current")
@@ -46,117 +47,106 @@ case "$1" in
         echo "Deleting existing release..."
         curl -H 'Authorization: token $GITHUB_TOKEN'  -XDELETE $release_url
     fi
+    exit 0;
   ;;
 
-  pre|rel)
-    if [[ "_$2" != "_" ]]; then
-
-      if [[ $1 = "pre" ]]; then
-        prerelease="true"
-      else
-        prerelease="false"
-      fi
-
-      description=$(echo $2)
-      if [[ "_$description" = "_" ]]; then
-          description="Release v$current"
-      fi
-
-      result=$(curl -s -H ''"$GITHUT_AUTH"'' "$REPO_API_URL/releases/tags/v$current")
-      release_url=$(echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+/releases/\d+")
-      if [[ "_$release_url" != "_" ]]; then
-        echo "Deleting existing release... $release_url"
-        result=$(curl -H ''"$GITHUT_AUTH"'' -s -XDELETE $release_url)
-        if [[ "_$result" != "_" ]]; then
-            error_message=$(echo "$result" | grep -P "\"message\": \"[^\"]+" | grep -oP ": \"[^\"]+\"")
-            echo "Delete existing release failed with error$error_message"
-            exit 1
-        fi
-      else
-        echo "Release not exists yet on github."
-      fi
-
-      echo "Creating new release..."
-      echo " - tag: v$current"
-      echo " - description: $description"
-      result=$(curl -H ''"$GITHUT_AUTH"'' -s $REPO_API_URL/releases -d '{"tag_name": "v'"$current"'","target_commitish": "master","name": "'"$current"'","body": "'"$description"'","draft": false,"prerelease": '"$prerelease"'}')
-      #echo "DEBUG - $result"
-      upload_url=$(echo "$result" | grep -P "\"upload_url\": \"[^\"]+"  | grep -oP "https://[A-Za-z0-9/.-]+")
-
-      if [[ "_$upload_url" = "_" ]]; then
-        echo "Failed to create new release for repo $REPO."
-        echo "Server response:"
-        echo "$result"
-        exit 1
-      fi
-
-      ###  Sending files
-      echo "Uploading artifacts to ${upload_url} ..."
-      dirname=$(pwd)
-
-      # Upload web file
-      WEB_BASENAME="${PROJECT_NAME}-v$current-web.zip"
-      WEB_FILE="${DIST_WEB}/${WEB_BASENAME}"
-      if [[ -f "${WEB_FILE}" ]]; then
-        result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T "${WEB_FILE}" "${upload_url}?name=${WEB_BASENAME}")
-        browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+"  | grep -oP "https://[A-Za-z0-9/.-]+")
-        WEB_FILE_SHA256=$(cd ${DIST_WEB} && sha256sum "${WEB_BASENAME}")
-        echo " - ${browser_download_url}  | Checksum: ${WEB_FILE_SHA256}"
-      else
-        echo " - ERROR: Web artifact (ZIP) not found! Skipping."
-      fi
-
-      # Upload web extension file
-      WEB_EXT_BASENAME="${PROJECT_NAME}-v$current-extension.zip"
-      WEB_EXT_FILE="${DIST_WEB}/${WEB_EXT_BASENAME}"
-      if [[ -f "${WEB_EXT_FILE}" ]]; then
-        result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T "${WEB_EXT_FILE}" "${upload_url}?name=${WEB_EXT_BASENAME}")
-        browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+"  | grep -oP "https://[A-Za-z0-9/.-]+")
-        WEB_EXT_FILE_SHA256=$(cd ${DIST_WEB} && sha256sum "${WEB_EXT_BASENAME}")
-        echo " - ${browser_download_url}  | Checksum: ${WEB_EXT_FILE_SHA256}"
-      else
-        echo " - ERROR: Web extension artifact (ZIP) not found! Skipping."
-      fi
-
-      # Upload Android APK file
-      APK_BASENAME="${PROJECT_NAME}-v${current}-android.apk"
-      APK_FILE="${DIST_ANDROID}/${APK_BASENAME}"
-      if [[ -f "${APK_FILE}" ]]; then
-        result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/vnd.android.package-archive' -T "${APK_FILE}" "${upload_url}?name=${APK_BASENAME}")
-        browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+"  | grep -oP "https://[A-Za-z0-9/.-]+")
-        APK_FILE_SHA256=$(cd ${DIST_ANDROID} && sha256sum "${APK_BASENAME}")
-        echo " - ${browser_download_url}  | Checksum: ${APK_FILE_SHA256}"
-      else
-        echo "- ERROR: Android artifact (APK) not found! Skipping."
-      fi
-
-      # Upload sha256 file (checksum)
-      SHA_BASENAME=${PROJECT_NAME}-v$current.sha256
-      SHA_FILE=${PROJECT_DIR}/dist/${SHA_BASENAME}
-      echo "${WEB_FILE_SHA256}" > ${SHA_FILE}
-      echo "${WEB_EXT_FILE_SHA256}" >> ${SHA_FILE}
-      echo "${APK_FILE_SHA256}" >> ${SHA_FILE}
-      result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: text/plain' -T "${SHA_FILE}" "${upload_url}?name=${SHA_BASENAME}")
-
-      echo "-----------------------------------------"
-      echo "Successfully uploading files !"
-      echo " -> Release url: ${REPO_PUBLIC_URL}/releases/tag/v${current}"
-      exit 0
-    else
-      echo "Wrong arguments"
-      echo "Usage:"
-      echo " > $0 del|pre|rel <release_description>"
-      echo "With:"
-      echo " - del: delete existing release"
-      echo " - pre: use for pre-release"
-      echo " - rel: for full release"
-      exit 1
-    fi
+  pre)
+    prerelease="true"
+    echo "Creating new pre-release v$current..."
+    ;;
+
+  rel)
+    prerelease="false"
+    echo "Creating new release v$current..."
     ;;
   *)
-    echo "No task given"
+    echo "No task given, or wrong arguments"
     echo "Usage:"
-      echo " > $0 del|pre|rel <release_description>"
+    echo " > $0 del|pre|rel <release_description>"
+    echo "With:"
+    echo " - del: delete existing release"
+    echo " - pre: use for pre-release"
+    echo " - rel: for full release"
     exit 1
     ;;
 esac
+
+description=$(echo $2)
+if [[ "_$description" = "_" ]]; then
+    description="Release v$current"
+fi
+
+result=$(curl -s -H ''"$GITHUT_AUTH"'' "$REPO_API_URL/releases/tags/v$current")
+release_url=$(echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+/releases/\d+")
+if [[ "_$release_url" != "_" ]]; then
+  echo "Deleting existing release... $release_url"
+  result=$(curl -H ''"$GITHUT_AUTH"'' -s -XDELETE $release_url)
+  if [[ "_$result" != "_" ]]; then
+      error_message=$(echo "$result" | grep -P "\"message\": \"[^\"]+" | grep -oP ": \"[^\"]+\"")
+      echo "Delete existing release failed with error$error_message"
+      exit 1
+  fi
+else
+  echo "Release not exists yet on github."
+fi
+
+### Create the release
+result=$(curl -H ''"$GITHUT_AUTH"'' -s $REPO_API_URL/releases -d '{"tag_name": "v'"$current"'","target_commitish": "master","name": "'"$current"'","body": "'"$description"'","draft": false,"prerelease": '"$prerelease"'}')
+#echo "DEBUG - $result"
+upload_url=$(echo "$result" | grep -P "\"upload_url\": \"[^\"]+"  | grep -oP "https://[A-Za-z0-9/.-]+")
+if [[ "_$upload_url" = "_" ]]; then
+  echo "Failed to create new release for repo $REPO."
+  echo "Server response:"
+  echo "$result"
+  exit 1
+fi
+
+### Send files
+echo "Uploading artifacts to ${upload_url} ..."
+
+# Upload web file
+WEB_BASENAME="${PROJECT_NAME}-v$current-web.zip"
+WEB_FILE="${DIST_WEB}/${WEB_BASENAME}"
+if [[ -f "${WEB_FILE}" ]]; then
+  result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T "${WEB_FILE}" "${upload_url}?name=${WEB_BASENAME}")
+  browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+"  | grep -oP "https://[A-Za-z0-9/.-]+")
+  WEB_FILE_SHA256=$(cd ${DIST_WEB} && sha256sum "${WEB_BASENAME}")
+  echo " - ${browser_download_url}  | Checksum: ${WEB_FILE_SHA256}"
+else
+  echo " - ERROR: Web artifact (ZIP) not found! Skipping."
+fi
+
+# Upload web extension file
+WEB_EXT_BASENAME="${PROJECT_NAME}-v$current-extension.zip"
+WEB_EXT_FILE="${DIST_WEB}/${WEB_EXT_BASENAME}"
+if [[ -f "${WEB_EXT_FILE}" ]]; then
+  result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T "${WEB_EXT_FILE}" "${upload_url}?name=${WEB_EXT_BASENAME}")
+  browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+"  | grep -oP "https://[A-Za-z0-9/.-]+")
+  WEB_EXT_FILE_SHA256=$(cd ${DIST_WEB} && sha256sum "${WEB_EXT_BASENAME}")
+  echo " - ${browser_download_url}  | Checksum: ${WEB_EXT_FILE_SHA256}"
+else
+  echo " - ERROR: Web extension artifact (ZIP) not found! Skipping."
+fi
+
+# Upload Android APK file
+APK_BASENAME="${PROJECT_NAME}-v${current}-android.apk"
+APK_FILE="${DIST_ANDROID}/${APK_BASENAME}"
+if [[ -f "${APK_FILE}" ]]; then
+  result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/vnd.android.package-archive' -T "${APK_FILE}" "${upload_url}?name=${APK_BASENAME}")
+  browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+"  | grep -oP "https://[A-Za-z0-9/.-]+")
+  APK_FILE_SHA256=$(cd ${DIST_ANDROID} && sha256sum "${APK_BASENAME}")
+  echo " - ${browser_download_url}  | Checksum: ${APK_FILE_SHA256}"
+else
+  echo "- ERROR: Android artifact (APK) not found! Skipping."
+fi
+
+# Upload sha256 file (checksum)
+SHA_BASENAME=${PROJECT_NAME}-v$current.sha256
+SHA_FILE=${PROJECT_DIR}/dist/${SHA_BASENAME}
+echo "${WEB_FILE_SHA256}" > ${SHA_FILE}
+echo "${WEB_EXT_FILE_SHA256}" >> ${SHA_FILE}
+echo "${APK_FILE_SHA256}" >> ${SHA_FILE}
+result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: text/plain' -T "${SHA_FILE}" "${upload_url}?name=${SHA_BASENAME}")
+
+### Success message
+echo "Successfully uploaded files to: ${REPO_PUBLIC_URL}/releases/tag/v${current}"
diff --git a/scripts/release.sh b/scripts/release.sh
index 75d0d171719201a32ca03d9be46be0ea5e6953be..5d8e5865b371de98b7ec70a945b9c70d4910c492 100755
--- a/scripts/release.sh
+++ b/scripts/release.sh
@@ -144,9 +144,9 @@ fi
 git commit -m "v$2"
 git tag -f -a "v$2" -m "${description}"
 # Push the tag
-git push origin "v$2"
+git push -f origin "v$2"
 # Push the master branch
-git push origin
+git push -f origin
 if [[ $? -ne 0 ]]; then
   exit 1
 fi
@@ -161,7 +161,7 @@ echo "----------------------------------"
 #fi
 
 echo "----------------------------------"
-echo "- Uploading artifacts to Gihub ..."
+echo "- Uploading artifacts to Github ..."
 echo "----------------------------------"
 # Pause (wait propagation to from git.duniter.org to github)
 echo " Waiting 40s, for propagation to github..." && sleep 40s
@@ -173,7 +173,7 @@ fi
 echo "----------------------------------"
 echo "- Building desktop artifacts..."
 echo "----------------------------------"
-. ${PROJECT_DIR}/scripts/release-desktop.sh $2 ''"$description"''
+. ${PROJECT_DIR}/scripts/release-desktop.sh $1 ''"$description"''
 if [[ $? -ne 0 ]]; then
     exit 1
 fi