Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bluewallet/groundcontrol

Push notification service for Bitcoin wallets
https://github.com/bluewallet/groundcontrol

bitcoin push-notifications typescript

Last synced: about 2 hours ago
JSON representation

Push notification service for Bitcoin wallets

Awesome Lists containing this project

README

        

# 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](https://editor.swagger.io/?url=https://raw.githubusercontent.com/BlueWallet/GroundControl/master/openapi.yaml).

In memory of David Bowie

### Installation

```shell script
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
- `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`

### Getting certificates

- 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'`

### License

MIT