[BREAKGLASS] Push notification service for Bitcoin wallets https://bluewallet.io
Go to file
dependabot[bot] 3936ba0834 build(deps): bump brace-expansion from 2.0.1 to 2.0.2
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 2.0.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 10:23:39 +00:00
.github/workflows Create unit test and GitHub Actions (#294) 2025-07-01 16:29:27 +01:00
scripts Create unit test and GitHub Actions (#294) 2025-07-01 16:29:27 +01:00
src Refactor connections (#298) 2025-07-02 17:34:10 +01:00
.gitignore init 2020-07-12 22:08:18 +01:00
.prettierignore prettier 2020-07-14 13:10:14 +01:00
.prettierrc.json REF; DOC 2020-07-29 13:07:19 +01:00
bowie.txt REF: better error handling of apple push server 2021-08-13 12:36:42 +01:00
openapi.yaml ADD: new pushtype - arbitrary text message 2023-04-03 18:57:29 +01:00
package-lock.json build(deps): bump brace-expansion from 2.0.1 to 2.0.2 2026-02-27 10:23:39 +00:00
package.json build(deps): bump qs, body-parser and express 2026-01-30 10:42:29 +00:00
Procfile ADD: mempool processor & push notifications 2020-07-18 20:30:02 +01:00
README.md Create unit test and GitHub Actions (#294) 2025-07-01 16:29:27 +01:00
TESTING.md Create unit test and GitHub Actions (#294) 2025-07-01 16:29:27 +01:00
tsconfig.json FIX: FCM pushes fixed due to deprecation of legacy api (#292) 2024-12-15 16:35:40 +00:00
vitest.config.mts Create unit test and GitHub Actions (#294) 2025-07-01 16:29:27 +01:00

Ground Control

///::---......```````````````````````````````` ``````````````````````````````````````...............
::::---.....```````````````````````````````` .-.-`-```..```````````````````````````````.............
:::---....````````````````````````.-.``--```.///////:/+/:/---....``````````````````````.............
::---....``````````````````````````://::/:..//////////+++++++++++:--..``````````````````............
:---...````````````````````````.///////////////////////+++++++++++ooo+:-```````````````````.........
---...``````````````````````.-////////////////////////+//+++++++++oooo/-.```````````````````........
--...````````````````````.-////////////////////////////+/++++++++oooooo++/.````````````````````.....
-...````````````````````-:/+//////////////////////////+++++++++++oooooooooo:````````````````````....
...````````````````````:++++///////////////////////////++++++++++ooooooooooo+-```````````````````...
..```````````````````-/+++++//////////////////////////+++++++++++ooooooooooooo:````````````````````.
.``````````````````./+++++++//////////////////////////+++++++++++oooooooooooooo/````````````````````
.`````````````````./+++++++++++////////////////////////+++++++++++oooooooooooooo.``````````````````.
``````````````````.+++++++++++/////////////////////////++++++++++++ooooooooooooo-```````````````````
```````````````````-++++++++++//////////////////////////++++++++++++oooooooooooo/```````````````````
````````````````````/++++//++//////////////////////////////://++/-++oooooooooooo:```````````````````
````````````````````-/+//////////////////////////////////:-.`../..++oooooooooooo-```````````````````
`````````````````````//+///////////::::::::::://///////////-.`````/++ooooooooooo:```````````````````
``````````````````  `:////////:-.````````````.://////////+++///:-``-://+oooooooo:```````````````````
``````````````````   -/////:.``            `-////////////+++++:-``````:+oooooooo-```````````````````
```````````````````  :++/:``             `-//////////////++/:.````````.+oooooooo.```````````````````
```````````````````` .++/.              .:////////////////-``   ```````.++ooooo+````````````````````
`````````````````````.++/`            `-///////////////:.`      ````````-+ooooo/````````````````````
`````````````````````.++:            `://////////////:.`         ````````/++ooo:````````````````````
`````````````````````.++-           `://///////////-.`            ```````-+++oo-````````````````````
`````````````````````-++.          `/////////////:`               ```````.+++oo.````````````````````
`````````````````````:++.         `:////////////.`  ````           ```````+++oo.````````````````````
`````````````````````/o+.``       `--:////////:``.--.````````      ```````++++o-````````````````````
`````````````````````/oo.```  `...:-::.-://///-://-``--:::://:-.` ````````++++o:````````````````````
`````````````````````/oo-`````.-``-.-:```://////-` `.`````--:/:::. ``````.++++o-````````````````````
`````````````````````:oo:``````---.--.-:://///:`      `````----:-` ``````-+++++`````````````````````
`````````````````````:oo+```````:++/:-://////-`         ``...-.``  ``````/+++++.````````````````````
``````````````````````:+o-`````:+/-``-//////.                     ```````+++++/`````````````````````
```````````````````````:+/````-:.` `-++++//.                      ``````.//+/+:`````````````````````
````````````````````````.+:````````-+++++:`                       `````````.::``````````````````````
`````````````````````````.:.``````.++++/-`                     `````````````/.``````````````````````
```````````````````````````:``````/+++/.   ..    .:.       ````````````````:/```````````````````````
```````````````````````````/`````.+++:`    ``    ```    `````````````````.:+-```````````````````````
```````````````````````````/-````/++-```             ````````````````-//++++````````````````````````
```````````````````````````/-````+o:````           `````````````````.++++++/````````````````````````
```````````````````````````/:```.++```````.--.``..``````````````````/+o++++:````````````````````````
```````````````````````````//```.o:````.://///:::/:::-.````````````-+++++++/````````````````````````
```````````````````````````+o-``-o-````..``.......````````````````-/+ooooo++````````````````````````
``````````````````````````-oo+.`:o.`````....`````````````````````::.+ooooo++.```````````````````````
`````````````````````````.+ooo+.:+.`````````......`````````````.:-``+ooooo+:-```````````````````````
`````````````````````````/ooooo-/+````````````````````````````--```.+oooooo/````````````````````````
````````````````````````/oooooo./+`````````````````````````````````.oooooo/+````````````````````````
```````````````````````:ooo++o+`/+`````````````````````````````````.oooo+/:`````````````````````````
``````````````````````.:+/:-//-`++`````````````````````````````````.oooo-`.`````````````````````````
....````````````````````````.```+/``````````````````````````````````+oo:````````````````````````````
.....``````````````````````````.+/``````````````````````````````````:+-`````````````````````````````
......`````````````````````````.+:````````````````````````````````````````````````````````````````..
.........``````````````````````-+:``````````````````````````````````````````````````````````````....
...........````````````````````-o-`````````````````````````````````````````````````````````````.....
.............``````````````````:o-```````````````````````````````````````````````````````````.......
...............````````````````:o-`````````````````````````````````````````````````````````.........
................```````````````/o.```````````````````````````````````````````````````````...........
....................``..```````/+.``````````````````````````````````````````````````.`..............
...........................````:/``````````````````````````````````````.``..........................
.............................`.//````````````````````````````````````...............................
----..........................`..``````````````````````````````.....................................

Can you hear me, Major Tom?

Push notifications server for bitcoin wallets. Processes blocks & mempool in search of subscribed onchain addresses. Built with typescript, expressjs, mariadb & openapi.

In memory of David Bowie

Installation

npm i
npm start
npm run worker-blockprocessor
npm run worker-processmempool
npm run worker-sender

Works well on Heroku (you'll need JawsDB Maria addon)

Environment variables

Set them as env variables or put them into .env file in project root dir.

  • JAWSDB_MARIA_URL for example mysql://username:password@host:port/database
  • FCM_SERVER_KEY hex encoded deprecated (in favor of json key file) after FCM XMPP and HTTP legacy APIs was deprecated; the new one is HTTP v1 API; theres also a new uri to post payload
  • APNS_P8 hex encoded
  • APNS_P8_KID issuer key which is "key ID" of your p8 file
  • APPLE_TEAM_ID "team ID" of your developer account
  • BITCOIN_RPC for example http://username:password@host:8332
  • APNS_TOPIC for example io.bluewallet.bluewallet
  • GOOGLE_KEY_FILE - json file with Google key for FCM, in hex
  • GOOGLE_PROJECT_ID - acquired with the key file

Getting certificates

License

MIT