Skip to content

Cryptocurrency data aggregation service that proxies and caches real-time price data from CoinGecko and Binance APIs, optimizing requests with Nginx-based caching while preserving original API formats

License

Notifications You must be signed in to change notification settings

status-im/market-proxy

Repository files navigation

Market Proxy

Tests

A Go-based market data fetcher agent with caching and an Nginx proxy for efficient data delivery.

Overview

This project consists of two main components:

  1. Market Fetcher: A Go service that fetches and caches market data from CoinGecko and price updates from Binance.
  2. Nginx Proxy: A reverse proxy that provides caching, ETag optimization, and compression for efficient delivery of market data.

Local Development

Prerequisites

  • Docker and Docker Compose

Configuration

  1. Create a config.yaml file in the market-fetcher directory:
coingecko_fetcher:
  update_interval: 10800  # seconds (3 hours)
  tokens_file: "coingecko_api_tokens.json"
  limit: 500  # number of tokens to fetch
  1. (Optional) Create coingecko_api_tokens.json in the secrets directory for Pro API access:
{
  "api_tokens": ["your-api-key-here"]
}

If you don't provide this file, the service will use the public API without authentication.

Running Locally

Run the following command to start all services:

./start-local.sh

This will:

  1. Create necessary configuration files if they don't exist
  2. Build and start the following services:
    • market-fetcher: Fetches market data (port 8081)
    • market-proxy: Nginx proxy with caching (port 8080)
    • market-frontend: Test frontend application (port 3000)
  3. Set up a Docker network for communication between services

Accessing the Services

img.png

Subprojects

Go application that caches token lists from CoinGecko and price updates from Binance, providing a REST API for accessing token and price data.

A proxy that performs caching, ETag optimization, and compression for displaying market data from market-fetcher.

About

Cryptocurrency data aggregation service that proxies and caches real-time price data from CoinGecko and Binance APIs, optimizing requests with Nginx-based caching while preserving original API formats

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published