///::---......```````````````````````````````` ``````````````````````````````````````...............
::::---.....```````````````````````````````` .-.-`-```..```````````````````````````````.............
:::---....````````````````````````.-.``--```.///////:/+/:/---....``````````````````````.............
::---....``````````````````````````://::/:..//////////+++++++++++:--..``````````````````............
:---...````````````````````````.///////////////////////+++++++++++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 install -g dtsgenerator
dtsgen openapi.yaml > src/openapi/api.ts
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_PEM
hex encodedBITCOIN_RPC
for examplehttp://username:password@host:8332
APNS_TOPIC
for exampleio.bluewallet.bluewallet
https://dev.to/jakubkoci/react-native-push-notifications-313i
- create certificate signing request https://help.apple.com/developer-account/#/devbfa00fef7
- create certificate & export to p12 https://help.apple.com/developer-account/#/dev82a71386a
- convert .p12 to .pem
openssl pkcs12 -in push_certificates.p12 -out push_certificates.pem -nodes
- get pem hex
xxd -p push_certificates.pem | tr -d '\n'
- replace
APNS_PEM
environment variable on production (don't forget to restart)
MIT