NotifyU
Technology stack:
TypeScript | PostgreSQL | Docker | Ansible | Linux | HAProxy | Nginx | Bash | Hetzner | Cloudflare | Supabase | CosmWasm
-----
Summary
NotifyU is a real-time notification system for on-chain events on the Rujira blockchain (a Thorchain app-layer).
Previously known as SeaShanty on the Kujira blockchain, it was rebranded to NotifyU after the chain restructured into Rujira in early 2025.
The system is built using TypeScript (JavaScript) and PostgreSQL, and supports both Telegram and Discord notification channels.
The entire stack, including the main notification system and the RPC node, is deployed via Docker on Ubuntu machines hosted on Hetzner.
On-chain Notification System
The notification system is divided into 3 major components: the trackers, the Telegram bot, and the Discord bot. The Telegram and Discord bots are fairly self-explanatory, while the trackers will be described in more detail below.
Trackers are bots that generate alerts. They monitor blockchain events via polling or WebSockets, and send notifications to the user when an event occurs.
The decision to use polling or WebSockets depends on several factors, such as event complexity, Remote Procedure Call (RPC) node load, and time-to-alert (TTA) required.
For example, the Order Limit Alert bot monitors Rujira Trade's orderbook exchange and notifies users whenever their limit orders are filled.
Through testing, it was discovered that polling caused excessive network overhead because the bot was polling slower markets that do not move frequently. This inefficiency worsened as the number of users and markets monitored grew.
To address this, WebSockets are used, allowing the bot to focus only on active markets.
Robust Load-balanced Infrastructure
Initially, NotifyU relied on free public RPC nodes, which often lacked sufficient throughput to handle the demanded.
Therefore, NotifyU's RPC nodes are self-hosted, enabling the infrastructure to scale alongside the project.
To meet throughput demands, multiple RPC nodes are deployed with HAProxy load-balancing traffic in a round robin fashion. Nginx is also deployed to proxy traffic from NotifyU's trackers to the load balancer.
The deployment on Hetzner's dedicated server is managed with Docker, and Docker Compose is used to define multiple service profiles (such as the main node profile and the snapshot downloader profile).