Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/bluewallet/groundcontrol
- Owner: BlueWallet
- Created: 2020-07-12T21:06:21.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-09-08T19:52:39.000Z (2 months ago)
- Last Synced: 2024-09-09T20:57:17.491Z (2 months ago)
- Topics: bitcoin, push-notifications, typescript
- Language: TypeScript
- Homepage: https://bluewallet.io
- Size: 439 KB
- Stars: 120
- Watchers: 18
- Forks: 41
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
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