diff --git a/api/admin.py b/api/admin.py
index 0846ad678..d853d7da1 100644
--- a/api/admin.py
+++ b/api/admin.py
@@ -11,6 +11,7 @@
 from api.logics import Logics
 from api.models import Currency, LNPayment, MarketTick, OnchainPayment, Order, Robot
 from api.utils import objects_to_hyperlinks
+from api.tasks import send_notification
 
 admin.site.unregister(Group)
 admin.site.unregister(User)
@@ -135,6 +136,7 @@ def _logs(self, obj):
         return format_html(f'<table style="width: 100%">{with_hyperlinks}</table>')
 
     actions = [
+        "cancel_public_order",
         "maker_wins",
         "taker_wins",
         "return_everything",
@@ -142,6 +144,37 @@ def _logs(self, obj):
         "compute_median_trade_time",
     ]
 
+    @admin.action(description="Close public order")
+    def cancel_public_order(self, request, queryset):
+        """
+        Closes an existing Public/Paused order.
+        """
+        for order in queryset:
+            if order.status in [Order.Status.PUB, Order.Status.PAU]:
+                if Logics.return_bond(order.maker_bond):
+                    order.update_status(Order.Status.UCA)
+                    self.message_user(
+                        request,
+                        f"Order {order.id} successfully closed",
+                        messages.SUCCESS,
+                    )
+                    send_notification.delay(
+                        order_id=order.id, message="coordinator_cancelled"
+                    )
+                else:
+                    self.message_user(
+                        request,
+                        f"Could not unlock bond of {order.id}",
+                        messages.ERROR,
+                    )
+
+            else:
+                self.message_user(
+                    request,
+                    f"Order {order.id} is not public or paused",
+                    messages.ERROR,
+                )
+
     @admin.action(description="Solve dispute: maker wins")
     def maker_wins(self, request, queryset):
         """
diff --git a/api/notifications.py b/api/notifications.py
index 8d1e0e659..c1bd1f469 100644
--- a/api/notifications.py
+++ b/api/notifications.py
@@ -185,3 +185,9 @@ def new_chat_message(self, order, chat_message):
             self.send_message(user.robot.telegram_chat_id, text)
 
         return
+
+    def coordinator_cancelled(self, order):
+        if order.maker.robot.telegram_enabled:
+            text = f"πŸ› οΈ Your order with ID {order.id} has been cancelled by the coordinator {config('COORDINATOR_ALIAS', cast=str, default='NoAlias')} for the upcoming maintenance stop."
+            self.send_message(order.maker.robot.telegram_chat_id, text)
+        return
diff --git a/api/tasks.py b/api/tasks.py
index 09ac9f5ac..dee5709ad 100644
--- a/api/tasks.py
+++ b/api/tasks.py
@@ -304,4 +304,7 @@ def send_notification(order_id=None, chat_message_id=None, message=None):
     elif message == "new_chat_message":
         telegram.new_chat_message(order, chat_message)
 
+    elif message == "coordinator_cancelled":
+        telegram.coordinator_cancelled(order)
+
     return
diff --git a/docs/_config.yml b/docs/_config.yml
index b8a72fd6d..c85258051 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -30,7 +30,7 @@ masthead_title           : # overrides the website title displayed in the masthe
 # breadcrumbs            : false # true, false (default)
 words_per_minute         :
 robosats:
-  node_id                : 0282eb467bc073833a039940392592bf10cf338a830ba4e392c1667d7697654c7e
+  node_id                : 037ff12b6a4e4bcb4b944b6d20af08cdff61b3461c1dff0d00a88697414d891bc7
   maker_fee              : 0.025        # In percent (%)
   taker_fee              : 0.175        # In percent (%)
   total_fee              : 0.2          # In percent (%)
diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml
index beb0ca9f7..1f6a8267e 100644
--- a/docs/_data/navigation.yml
+++ b/docs/_data/navigation.yml
@@ -91,6 +91,8 @@ tutorial:
       url: "/watch/fr/"
     - title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/polish.svg"/> Polski</span>'
       url: "/watch/pl/"
+    - title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/russian.svg"/> Русский</span>'
+      url: "/watch/ru/"
   - title: '<span class="side-bar-item"><img id="side-icon-big" src="/assets/vector/readme.svg"/>Read</span>'
     url: "/watch/en/"
     children:
@@ -100,6 +102,8 @@ tutorial:
       url: "/read/es/"
     - title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/german.svg"/> Deutsch</span>'
       url: "/read/de/"
+    - title: '<span class="side-bar-item">&nbsp;&nbsp;<img style="width:22px;height:13px" src="/assets/vector/russian.svg"/> Русский</span>'
+      url: "/read/ru/"
 
 contribute:
   - title: '<span class="side-bar-item"><img id="side-icon-big" src="/assets/vector/handshake-angle.svg"/>Contribute</span>'
diff --git a/docs/_pages/contribute/07-donate.md b/docs/_pages/contribute/07-donate.md
index d0bd113ef..2faf1edbd 100644
--- a/docs/_pages/contribute/07-donate.md
+++ b/docs/_pages/contribute/07-donate.md
@@ -15,13 +15,11 @@ We do, however, get approached by very enthusiastic bitcoiners who want to boost
 
 You can donate the following ways:
 
- - **Zap us on Nostr:**
- All Nostr zaps will go towards the social media team.
- Here is the nPub for RoboSats account :
-
- ```
-npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82
- ```
+ - **Tip the [RoboSats DevFund Node](https://amboss.space/node/{{site.robosats.node_id}}) via KeySend:**
+  <div>
+    <lightning-widget name="DevFund Node" accent="#9c27b0" to="robodevfund@vlt.ge" image="https://pbs.twimg.com/profile_images/1524391291475406850/ULKOymid_400x400.jpg"/>
+    <script src="https://embed.twentyuno.net/js/app.js"></script>
+  </div>
 
  - **Directly tip the developer working on the features you like.** Check the [active PRs](https://github.com/RoboSats/robosats/pulls) and show your support to the developers with via Lightning tips. Simply write a message, for example "@developer_name, I would like to fund your development of this feature with 6000 Sats". The developer should reply with an LN invoice with a long expiration time.
 
@@ -47,14 +45,13 @@ npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82
  {{site.robosats.leaddev_paynym_code}}
  ```
 
- - **Tip the [experimental RoboSats coordinator](https://amboss.space/node/{{site.robosats.node_id}}) via KeySend:**
-  <div>
-    <lightning-widget name="Experimental Coordinator" accent="#9c27b0" to="{{site.robosats.node_id}}" image="https://pbs.twimg.com/profile_images/1524391291475406850/ULKOymid_400x400.jpg"/>
-    <script src="https://embed.twentyuno.net/js/app.js"></script>
-  </div>
-
-
+ - **Zap us on Nostr:**
+ All Nostr zaps will go towards the social media team.
+ Here is the nPub for RoboSats account :
 
+ ```
+npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82
+ ```
 
 
 
diff --git a/docs/_pages/tutorials/read/how-to-use_ru.md b/docs/_pages/tutorials/read/how-to-use_ru.md
new file mode 100644
index 000000000..c1b66715b
--- /dev/null
+++ b/docs/_pages/tutorials/read/how-to-use_ru.md
@@ -0,0 +1,13 @@
+---
+layout: single
+title: Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ RoboSats
+permalink: /read/ru/
+toc: true
+toc_sticky: true
+sidebar:
+  title: '<img id="side-icon-verybig" src="/assets/vector/chalkboard-user.svg"/>Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС'
+  nav: tutorial
+---
+![image](https://21ideas.org/img/main-section/main_light.png)
+### <a href="https://21ideas.org/robosats/" target="_blank">RoboSats – ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ способ ΠΎΠ±ΠΌΠ΅Π½Π° Π±ΠΈΡ‚ΠΊΠΎΠΈΠ½Π°</a>
+Π’Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ΅ руководство ΠΏΠΎ использованию "RoboSats" ΠΎΡ‚ 21ideas.org
\ No newline at end of file
diff --git a/docs/_pages/tutorials/watch/videos-de.md b/docs/_pages/tutorials/watch/videos-de.md
index 1fba7bedf..f1dc3cf4b 100644
--- a/docs/_pages/tutorials/watch/videos-de.md
+++ b/docs/_pages/tutorials/watch/videos-de.md
@@ -10,6 +10,9 @@ sidebar:
 src: "_pages/docs/tutorials/videos-de.md"
 ---
 
+#### OrangedMike: ROBOSATS - Bitcoin Kauf, Verkauf und Swap
+<iframe width="560" height="315" src="https://www.youtube.com/embed/f5LZzvEp_Zw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
+
 #### Einundzwanzig: Bitcoin unabhΓ€ngig und ohne Registrierung kaufen
 <iframe width="560" height="315" src="https://www.youtube.com/embed/kmd46irWXvw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 
diff --git a/docs/_pages/tutorials/watch/videos-ru.md b/docs/_pages/tutorials/watch/videos-ru.md
new file mode 100644
index 000000000..7ecb47754
--- /dev/null
+++ b/docs/_pages/tutorials/watch/videos-ru.md
@@ -0,0 +1,16 @@
+---
+layout: single
+title: Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΈ ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ
+permalink: /watch/ru/
+toc: true
+toc_sticky: true
+sidebar:
+  title: '<img id="side-icon-verybig" src="/assets/vector/circle-play.svg"/>Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ'
+  nav: tutorial
+src: "_pages/docs/tutorials/videos-ru.md"
+---
+
+### BitKorn Guide | RoboSats. ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ° Π‘ΠΈΡ‚ΠΊΠΎΠΈΠ½Π°
+<iframe width="560" height="315" src="https://www.youtube.com/embed/QCGWXObIsKY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
+
+{% include add_tutorials %}
diff --git a/docs/assets/vector/russian.svg b/docs/assets/vector/russian.svg
new file mode 100644
index 000000000..855b805a5
--- /dev/null
+++ b/docs/assets/vector/russian.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9 6" width="900" height="600"><rect fill="#fff" width="9" height="3"/><rect fill="#d52b1e" y="3" width="9" height="3"/><rect fill="#0039a6" y="2" width="9" height="2"/></svg>
\ No newline at end of file
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 1faa30826..0f328dce4 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -18,8 +18,8 @@
         "@mui/lab": "^5.0.0-alpha.136",
         "@mui/material": "^5.15.3",
         "@mui/system": "^5.15.3",
-        "@mui/x-data-grid": "^6.17.0",
-        "@mui/x-date-pickers": "^6.17.0",
+        "@mui/x-data-grid": "^6.19.2",
+        "@mui/x-date-pickers": "^6.19.2"
         "@nivo/core": "^0.84.0",
         "@nivo/line": "^0.84.0",
         "base-ex": "^0.8.1",
@@ -33,13 +33,13 @@
         "js-sha256": "^0.10.1",
         "leaflet": "^1.9.4",
         "light-bolt11-decoder": "^3.0.0",
-        "npm": "^10.3.0",
+        "npm": "^10.4.0",
         "openpgp": "^5.11.0",
         "react": "^18.2.0",
         "react-countdown": "^2.3.5",
         "react-dom": "^18.2.0",
         "react-grid-layout": "^1.4.4",
-        "react-i18next": "^14.0.0",
+        "react-i18next": "^14.0.1",
         "react-image": "^4.1.0",
         "react-leaflet": "^4.2.1",
         "react-qr-code": "^2.0.11",
@@ -3408,12 +3408,12 @@
       }
     },
     "node_modules/@mui/x-data-grid": {
-      "version": "6.17.0",
-      "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.17.0.tgz",
-      "integrity": "sha512-HlpavV9jR7bLDYfi7n05R0xSsLl5ZxCTy3J5g4OfQtxhg9Zsu1uOkkLfudsM5LFqTbi5o+3PvZ9Kh33VvNUN/w==",
+      "version": "6.19.2",
+      "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-6.19.2.tgz",
+      "integrity": "sha512-+wizP1jEzCKB5BSQ6OD5TP6RspEbWmFWcxi1XBgKrzryUZii1o4G2BW1+d/n4p3xETCUMKRkYfItrOJGlM/dBw==",
       "dependencies": {
         "@babel/runtime": "^7.23.2",
-        "@mui/utils": "^5.14.14",
+        "@mui/utils": "^5.14.16",
         "clsx": "^2.0.0",
         "prop-types": "^15.8.1",
         "reselect": "^4.1.8"
@@ -3441,9 +3441,9 @@
       }
     },
     "node_modules/@mui/x-date-pickers": {
-      "version": "6.17.0",
-      "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.17.0.tgz",
-      "integrity": "sha512-rBKiw6GL1bTJpfSuD0KnOgxrERhoSip7eyqXzHbh0GODmp9f5bonE9gRZ74XmlyMQT7tcSzXdzk0c1X0HhmP1A==",
+      "version": "6.19.2",
+      "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.19.2.tgz",
+      "integrity": "sha512-/bdWZabexuz+1rKG15XryxiMGb5D0XVx65NU7CZYKm/1+HuUzc0FX9smKEa/YVZnLSNsAp6SULIyPZtAKE+3AA==",
       "dependencies": {
         "@babel/runtime": "^7.23.2",
         "@mui/base": "^5.0.0-beta.20",
@@ -10360,9 +10360,9 @@
       }
     },
     "node_modules/npm": {
-      "version": "10.3.0",
-      "resolved": "https://registry.npmjs.org/npm/-/npm-10.3.0.tgz",
-      "integrity": "sha512-9u5GFc1UqI2DLlGI7QdjkpIaBs3UhTtY8KoCqYJK24gV/j/tByaI4BA4R7RkOc+ASqZMzFPKt4Pj2Z8JcGo//A==",
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/npm/-/npm-10.4.0.tgz",
+      "integrity": "sha512-RS7Mx0OVfXlOcQLRePuDIYdFCVBPCNapWHplDK+mh7GDdP/Tvor4ocuybRRPSvfcRb2vjRJt1fHCqw3cr8qACQ==",
       "bundleDependencies": [
         "@isaacs/string-locale-compare",
         "@npmcli/arborist",
@@ -10426,7 +10426,6 @@
         "semver",
         "spdx-expression-parse",
         "ssri",
-        "strip-ansi",
         "supports-color",
         "tar",
         "text-table",
@@ -10444,8 +10443,8 @@
         "@npmcli/map-workspaces": "^3.0.4",
         "@npmcli/package-json": "^5.0.0",
         "@npmcli/promise-spawn": "^7.0.1",
-        "@npmcli/run-script": "^7.0.3",
-        "@sigstore/tuf": "^2.2.0",
+        "@npmcli/run-script": "^7.0.4",
+        "@sigstore/tuf": "^2.3.0",
         "abbrev": "^2.0.0",
         "archy": "~1.0.0",
         "cacache": "^18.0.2",
@@ -10491,7 +10490,7 @@
         "npm-user-validate": "^2.0.0",
         "npmlog": "^7.0.1",
         "p-map": "^4.0.0",
-        "pacote": "^17.0.5",
+        "pacote": "^17.0.6",
         "parse-conflict-json": "^3.0.1",
         "proc-log": "^3.0.0",
         "qrcode-terminal": "^0.12.0",
@@ -10499,7 +10498,6 @@
         "semver": "^7.5.4",
         "spdx-expression-parse": "^3.0.1",
         "ssri": "^10.0.5",
-        "strip-ansi": "^7.1.0",
         "supports-color": "^9.4.0",
         "tar": "^6.2.0",
         "text-table": "~0.2.0",
@@ -10554,6 +10552,17 @@
         "node": ">=12"
       }
     },
+    "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+      "version": "6.0.1",
+      "inBundle": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+      }
+    },
     "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
       "version": "9.2.2",
       "inBundle": true,
@@ -10575,6 +10584,20 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+      }
+    },
     "node_modules/npm/node_modules/@isaacs/string-locale-compare": {
       "version": "1.1.0",
       "inBundle": true,
@@ -10596,7 +10619,7 @@
       }
     },
     "node_modules/npm/node_modules/@npmcli/arborist": {
-      "version": "7.3.0",
+      "version": "7.3.1",
       "inBundle": true,
       "license": "ISC",
       "dependencies": {
@@ -10627,7 +10650,7 @@
         "parse-conflict-json": "^3.0.0",
         "proc-log": "^3.0.0",
         "promise-all-reject-late": "^1.0.0",
-        "promise-call-limit": "^1.0.2",
+        "promise-call-limit": "^3.0.1",
         "read-package-json-fast": "^3.0.2",
         "semver": "^7.3.7",
         "ssri": "^10.0.5",
@@ -10812,14 +10835,14 @@
       }
     },
     "node_modules/npm/node_modules/@npmcli/run-script": {
-      "version": "7.0.3",
+      "version": "7.0.4",
       "inBundle": true,
       "license": "ISC",
       "dependencies": {
         "@npmcli/node-gyp": "^3.0.0",
+        "@npmcli/package-json": "^5.0.0",
         "@npmcli/promise-spawn": "^7.0.0",
         "node-gyp": "^10.0.0",
-        "read-package-json-fast": "^3.0.0",
         "which": "^4.0.0"
       },
       "engines": {
@@ -10836,7 +10859,7 @@
       }
     },
     "node_modules/npm/node_modules/@sigstore/bundle": {
-      "version": "2.1.0",
+      "version": "2.1.1",
       "inBundle": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -10846,6 +10869,14 @@
         "node": "^16.14.0 || >=18.0.0"
       }
     },
+    "node_modules/npm/node_modules/@sigstore/core": {
+      "version": "0.2.0",
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^16.14.0 || >=18.0.0"
+      }
+    },
     "node_modules/npm/node_modules/@sigstore/protobuf-specs": {
       "version": "0.2.1",
       "inBundle": true,
@@ -10855,11 +10886,12 @@
       }
     },
     "node_modules/npm/node_modules/@sigstore/sign": {
-      "version": "2.2.0",
+      "version": "2.2.1",
       "inBundle": true,
       "license": "Apache-2.0",
       "dependencies": {
-        "@sigstore/bundle": "^2.1.0",
+        "@sigstore/bundle": "^2.1.1",
+        "@sigstore/core": "^0.2.0",
         "@sigstore/protobuf-specs": "^0.2.1",
         "make-fetch-happen": "^13.0.0"
       },
@@ -10868,12 +10900,25 @@
       }
     },
     "node_modules/npm/node_modules/@sigstore/tuf": {
-      "version": "2.2.0",
+      "version": "2.3.0",
       "inBundle": true,
       "license": "Apache-2.0",
       "dependencies": {
         "@sigstore/protobuf-specs": "^0.2.1",
-        "tuf-js": "^2.1.0"
+        "tuf-js": "^2.2.0"
+      },
+      "engines": {
+        "node": "^16.14.0 || >=18.0.0"
+      }
+    },
+    "node_modules/npm/node_modules/@sigstore/verify": {
+      "version": "0.1.0",
+      "inBundle": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@sigstore/bundle": "^2.1.1",
+        "@sigstore/core": "^0.2.0",
+        "@sigstore/protobuf-specs": "^0.2.1"
       },
       "engines": {
         "node": "^16.14.0 || >=18.0.0"
@@ -10931,14 +10976,11 @@
       }
     },
     "node_modules/npm/node_modules/ansi-regex": {
-      "version": "6.0.1",
+      "version": "5.0.1",
       "inBundle": true,
       "license": "MIT",
       "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+        "node": ">=8"
       }
     },
     "node_modules/npm/node_modules/ansi-styles": {
@@ -11099,25 +11141,6 @@
         "node": ">= 10"
       }
     },
-    "node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/npm/node_modules/cli-table3": {
       "version": "0.6.3",
       "inBundle": true,
@@ -11184,25 +11207,6 @@
         "node": ">=8.0.0"
       }
     },
-    "node_modules/npm/node_modules/columnify/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/npm/node_modules/columnify/node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/npm/node_modules/common-ancestor-path": {
       "version": "1.0.1",
       "inBundle": true,
@@ -11388,25 +11392,6 @@
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
     },
-    "node_modules/npm/node_modules/gauge/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/npm/node_modules/gauge/node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/npm/node_modules/glob": {
       "version": "10.3.10",
       "inBundle": true,
@@ -11673,7 +11658,7 @@
       }
     },
     "node_modules/npm/node_modules/libnpmdiff": {
-      "version": "6.0.5",
+      "version": "6.0.6",
       "inBundle": true,
       "license": "ISC",
       "dependencies": {
@@ -11692,7 +11677,7 @@
       }
     },
     "node_modules/npm/node_modules/libnpmexec": {
-      "version": "7.0.6",
+      "version": "7.0.7",
       "inBundle": true,
       "license": "ISC",
       "dependencies": {
@@ -11713,7 +11698,7 @@
       }
     },
     "node_modules/npm/node_modules/libnpmfund": {
-      "version": "5.0.3",
+      "version": "5.0.4",
       "inBundle": true,
       "license": "ISC",
       "dependencies": {
@@ -11748,7 +11733,7 @@
       }
     },
     "node_modules/npm/node_modules/libnpmpack": {
-      "version": "6.0.5",
+      "version": "6.0.6",
       "inBundle": true,
       "license": "ISC",
       "dependencies": {
@@ -11762,7 +11747,7 @@
       }
     },
     "node_modules/npm/node_modules/libnpmpublish": {
-      "version": "9.0.3",
+      "version": "9.0.4",
       "inBundle": true,
       "license": "ISC",
       "dependencies": {
@@ -11772,7 +11757,7 @@
         "npm-registry-fetch": "^16.0.0",
         "proc-log": "^3.0.0",
         "semver": "^7.3.7",
-        "sigstore": "^2.1.0",
+        "sigstore": "^2.2.0",
         "ssri": "^10.0.5"
       },
       "engines": {
@@ -12230,7 +12215,7 @@
       }
     },
     "node_modules/npm/node_modules/pacote": {
-      "version": "17.0.5",
+      "version": "17.0.6",
       "inBundle": true,
       "license": "ISC",
       "dependencies": {
@@ -12249,7 +12234,7 @@
         "promise-retry": "^2.0.1",
         "read-package-json": "^7.0.0",
         "read-package-json-fast": "^3.0.0",
-        "sigstore": "^2.0.0",
+        "sigstore": "^2.2.0",
         "ssri": "^10.0.0",
         "tar": "^6.1.11"
       },
@@ -12325,7 +12310,7 @@
       }
     },
     "node_modules/npm/node_modules/promise-call-limit": {
-      "version": "1.0.2",
+      "version": "3.0.1",
       "inBundle": true,
       "license": "ISC",
       "funding": {
@@ -12487,14 +12472,16 @@
       }
     },
     "node_modules/npm/node_modules/sigstore": {
-      "version": "2.1.0",
+      "version": "2.2.0",
       "inBundle": true,
       "license": "Apache-2.0",
       "dependencies": {
-        "@sigstore/bundle": "^2.1.0",
+        "@sigstore/bundle": "^2.1.1",
+        "@sigstore/core": "^0.2.0",
         "@sigstore/protobuf-specs": "^0.2.1",
-        "@sigstore/sign": "^2.1.0",
-        "@sigstore/tuf": "^2.1.0"
+        "@sigstore/sign": "^2.2.1",
+        "@sigstore/tuf": "^2.3.0",
+        "@sigstore/verify": "^0.1.0"
       },
       "engines": {
         "node": "^16.14.0 || >=18.0.0"
@@ -12601,34 +12588,7 @@
         "node": ">=8"
       }
     },
-    "node_modules/npm/node_modules/string-width-cjs/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/npm/node_modules/string-width-cjs/node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": {
+    "node_modules/npm/node_modules/strip-ansi": {
       "version": "6.0.1",
       "inBundle": true,
       "license": "MIT",
@@ -12639,20 +12599,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/npm/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "inBundle": true,
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/npm/node_modules/strip-ansi-cjs": {
       "name": "strip-ansi",
       "version": "6.0.1",
@@ -12665,14 +12611,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/npm/node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/npm/node_modules/supports-color": {
       "version": "9.4.0",
       "inBundle": true,
@@ -12749,7 +12687,7 @@
       }
     },
     "node_modules/npm/node_modules/tuf-js": {
-      "version": "2.1.0",
+      "version": "2.2.0",
       "inBundle": true,
       "license": "MIT",
       "dependencies": {
@@ -12884,14 +12822,6 @@
         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
       }
     },
-    "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "inBundle": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
       "version": "4.3.0",
       "inBundle": true,
@@ -12906,15 +12836,15 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
-    "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+    "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
       "version": "6.0.1",
       "inBundle": true,
       "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
       "engines": {
-        "node": ">=8"
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
       }
     },
     "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
@@ -12938,6 +12868,20 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
+      "version": "7.1.0",
+      "inBundle": true,
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+      }
+    },
     "node_modules/npm/node_modules/write-file-atomic": {
       "version": "5.0.1",
       "inBundle": true,
@@ -13624,9 +13568,9 @@
       }
     },
     "node_modules/react-i18next": {
-      "version": "14.0.0",
-      "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.0.tgz",
-      "integrity": "sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==",
+      "version": "14.0.1",
+      "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.1.tgz",
+      "integrity": "sha512-TMV8hFismBmpMdIehoFHin/okfvgjFhp723RYgIqB4XyhDobVMyukyM3Z8wtTRmajyFMZrBl/OaaXF2P6WjUAw==",
       "dependencies": {
         "@babel/runtime": "^7.22.5",
         "html-parse-stringify": "^3.0.1"
diff --git a/frontend/package.json b/frontend/package.json
index d81a072c6..117a604b0 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -57,8 +57,8 @@
     "@mui/lab": "^5.0.0-alpha.136",
     "@mui/material": "^5.15.3",
     "@mui/system": "^5.15.3",
-    "@mui/x-data-grid": "^6.17.0",
-    "@mui/x-date-pickers": "^6.17.0",
+    "@mui/x-data-grid": "^6.19.2",
+    "@mui/x-date-pickers": "^6.19.2",
     "@nivo/core": "^0.84.0",
     "@nivo/line": "^0.84.0",
     "base-ex": "^0.8.1",
@@ -72,13 +72,13 @@
     "js-sha256": "^0.10.1",
     "leaflet": "^1.9.4",
     "light-bolt11-decoder": "^3.0.0",
-    "npm": "^10.3.0",
+    "npm": "^10.4.0",
     "openpgp": "^5.11.0",
     "react": "^18.2.0",
     "react-countdown": "^2.3.5",
     "react-dom": "^18.2.0",
     "react-grid-layout": "^1.4.4",
-    "react-i18next": "^14.0.0",
+    "react-i18next": "^14.0.1",
     "react-image": "^4.1.0",
     "react-leaflet": "^4.2.1",
     "react-qr-code": "^2.0.11",
diff --git a/requirements_dev.txt b/requirements_dev.txt
index c4ee4f9f0..ce23ccc74 100644
--- a/requirements_dev.txt
+++ b/requirements_dev.txt
@@ -1,4 +1,4 @@
-coverage==7.4.0
+coverage==7.4.1
 ruff==0.1.14
 drf-openapi-tester==2.3.3
 pre-commit==3.6.0
\ No newline at end of file
diff --git a/scripts/get_devfund_donations.py b/scripts/get_devfund_donations.py
index c7466a141..9d53cffd8 100644
--- a/scripts/get_devfund_donations.py
+++ b/scripts/get_devfund_donations.py
@@ -2,6 +2,7 @@
 import json
 import requests
 import base64
+from datetime import datetime
 
 devfund_data_path = os.path.normpath(os.path.join("..", "devfund_pubkey.json"))
 
@@ -19,7 +20,9 @@
 
 for invoice in response_data["invoices"]:
     if invoice["is_keysend"] and invoice["htlcs"][0]["custom_records"]["34349334"]:
+        dt = datetime.fromtimestamp(int(invoice["creation_date"]))
         print(f"Index {invoice['add_index']}")
+        print(f'Timestamp {dt.strftime("%Y-%m-%d %H:%M:%S")}')
         print(
             f"{base64.b64decode(invoice['htlcs'][0]['custom_records']['34349334']).decode('utf-8')}"
         )