Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/jmoussa/crypto-news-platform

Content Platform serving crypto news and information over gRPC microservices behind a REST HTTP API.
https://github.com/jmoussa/crypto-news-platform

gin gin-gonic go golang grpc grpc-go helm kubernetes microservice microservice-architecture microservices minikube

Last synced: about 1 month ago
JSON representation

Content Platform serving crypto news and information over gRPC microservices behind a REST HTTP API.

Awesome Lists containing this project

README

        

# Crypto Dashboard
**An experiment in microservice architecture**

## Local Testing
**Prerequisites:**
- Kubectl
- Minikube (running/started)

```bash
# set this at the beginning of your terminal session to reference the local docker images
eval $(minikube docker-env)

git clone github.com/jmoussa/crypto-dashboard
cd crypto-dashboard
cp $(pwd)/config/config.json.template $(pwd)/config/config.json # fill in the correct values
export CONFIG_LOCATION=$(pwd)/config
go get .
make build
make deploy # will open minikube dashboard in browser to visualize the deployment

# in a separate terminal window
minikube tunnel # expose API port to your local machine

# Additional Commands
# clean up go cache, docker, and kubernetes deployment
make clean

# open minikube dashboard for monitoring
minikube dashboard

# test endpoint in browser
localhost:3000/coindesk (test coindesk REST API + CoinDesk Article Scraping gRPC endpoint)
localhost:3000/twitter (test coindesk REST API + Twitter Scraping gRPC endpoint)
```

## Architecture
### UI
- Single Dashboard view
- Monitoring top 20 crypto prices (scrape from etherscan.io)
- Twitter NFT News Feed (API)
- CoinDesk, TodayOnChain, CCN, and CoinTelegraph
- Crypto/Finance News Feed (API or scrape)
- Companies that Accept Crypto (scrape from somewhere?)

### API
- REST at the high level
- gRPC for microservice communications

Top level REST API which connects to gRPC Servers that will perform the content gathering jobs and pipe the input back.

## CI/CD
Using Kubernetes and Helm for environment management and monitoring, and minikube for local development.