///::---......```````````````````````````````` ``````````````````````````````````````...............
::::---.....```````````````````````````````` .-.-`-```..```````````````````````````````.............
:::---....````````````````````````.-.``--```.///////:/+/:/---....``````````````````````.............
::---....``````````````````````````://::/:..//////////+++++++++++:--..``````````````````............
:---...````````````````````````.///////////////////////+++++++++++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.```````````````````````````````````````````````````````...........
....................``..```````/+.``````````````````````````````````````````````````.`..............
...........................````:/``````````````````````````````````````.``..........................
.............................`.//````````````````````````````````````...............................
----..........................`..``````````````````````````````.....................................
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
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)
Set them as env variables or put them into .env
file in project root dir.
JAWSDB_MARIA_URL
for examplemysql://username:password@host:port/database
FCM_SERVER_KEY
hex encodedAPNS_P8
hex encodedAPNS_P8_KID
issuer key which is "key ID" of your p8 fileAPPLE_TEAM_ID
"team ID" of your developer accountBITCOIN_RPC
for examplehttp://username:password@host:8332
APNS_TOPIC
for exampleio.bluewallet.bluewallet
- outdated https://dev.to/jakubkoci/react-native-push-notifications-313i
- https://stackoverflow.com/questions/44631803/ios-swift-how-to-create-p8-file/67533665#67533665
- get P8 hex
xxd -p file.p8 | tr -d '\n'
MIT