All Projects → 0xTracker → 0x-tracker-api

0xTracker / 0x-tracker-api

Licence: Apache-2.0 License
NodeJS API built for 0x Tracker which exposes 0x protocol data and metrics for consumption by the 0x Tracker Client application.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to 0x-tracker-api

nft-swap-sdk
Ethereum's missing p2p NFT and token swap library for web3 developers. Written in TypeScript. Powered by 0x.
Stars: ✭ 200 (+952.63%)
Mutual labels:  web3, 0x
0x-event-extractor
NodeJS worker built for 0x Tracker which extracts 0x fill events from the Ethereum blockchain and persists them to MongoDB
Stars: ✭ 32 (+68.42%)
Mutual labels:  web3, 0x
0x-tracker-worker
NodeJS worker which performs various ETL tasks related to the 0x protocol trading data and other information used on 0x Tracker
Stars: ✭ 28 (+47.37%)
Mutual labels:  web3, 0x
ethjs-extras
All your dApp / App essentials for working with Ethereum.
Stars: ✭ 17 (-10.53%)
Mutual labels:  web3
babel-preset-react-native-web3
deprecated: babel preset for react native, web3 and babel 6
Stars: ✭ 22 (+15.79%)
Mutual labels:  web3
synthetic-loot-viewer
browse synthetic loot
Stars: ✭ 21 (+10.53%)
Mutual labels:  web3
awesome-waves
Curated list of awesome things for development on Waves blockchain.
Stars: ✭ 60 (+215.79%)
Mutual labels:  web3
ar-nft
👾 A React Native app to visualize your NFTs in AR
Stars: ✭ 71 (+273.68%)
Mutual labels:  web3
pancakeswap-lottery
🥞 A Python client for accessing PancakeSwap Lottery smart contract information through Web3.py
Stars: ✭ 30 (+57.89%)
Mutual labels:  web3
expo-solana-wallet
Cross-Platform Solana Wallet built with Expo and Solana/web3.js
Stars: ✭ 122 (+542.11%)
Mutual labels:  web3
solana-web3-demo
a quick demo for solana web3
Stars: ✭ 93 (+389.47%)
Mutual labels:  web3
aragon.js
(Aragon 1) A monorepo of JavaScript libraries for interacting with Aragon
Stars: ✭ 84 (+342.11%)
Mutual labels:  web3
borg
Client-server stack for Web3! Turn your Raspberry Pi to a BAS server in minutes and enjoy the freedom of decentralized Web with a superior user experience!
Stars: ✭ 25 (+31.58%)
Mutual labels:  web3
Wallet3
A secure mobile wallet for web3
Stars: ✭ 13 (-31.58%)
Mutual labels:  web3
trust-api
No description or website provided.
Stars: ✭ 20 (+5.26%)
Mutual labels:  web3
ocean.js
🦑 Ocean Protocol JavaScript library to privately & securely publish, exchange, and consume data.
Stars: ✭ 77 (+305.26%)
Mutual labels:  web3
go-ethutil
Ethereum utility functions for Go.
Stars: ✭ 17 (-10.53%)
Mutual labels:  web3
foundation
for the Great Civilization
Stars: ✭ 54 (+184.21%)
Mutual labels:  web3
is-valid-signature
EIP1271 signature checker implementation in JavaScript
Stars: ✭ 18 (-5.26%)
Mutual labels:  web3
spectrum
💠 Full Gamut Ethereum Lightsuite
Stars: ✭ 56 (+194.74%)
Mutual labels:  web3

0x Tracker API

Travis (.org) David Codecov

NodeJS API built for 0x Tracker which exposes 0x protocol data and metrics for consumption by the 0x Tracker Client application.

Contents

👮‍♂️ Requirements

Node.js is required to run the server application. A .nvmrc file is provided for the convenience of using NVM.

You'll need a MongoDB database populated with data from the 0x Tracker Worker process. For the time being this will need to be done by running the 0x Tracker Worker against your database. In the future the goal is to have a subset of data available as backups for getting up and running quickly.

It's recommended that you use Prettier and ESLint editor plugins if contributing to the project. Pre-commit hooks are in place which will prevent code which doesn't conform to Prettier/ESLint rules from being committed.

🐣 Getting Started

Assuming you have all the pre-requisites, getting started is pretty simple:

$ npm i
$ cp .env.example .env
$ npm start

If you're not running MongoDB on the default local port then jump into your projects .env file and modify the connection string before running npm start.

🦄 Tech Stack

If you plan to contribute to the project then its worthwhile familiarising yourself with the following tools which constitute the bulk of the tech stack.

Core Libraries

  • Koa - Node.js web framework which handles API routing and response building.
  • Mongoose - MongoDB ORM providing simple and secure access to the database.
  • Node-config - Handles application level configuration through config files and environment variables.
  • 0x.js - Official 0x Protocol helper library for manipulating 0x fill data.
  • Axios - Lightweight HTTP client used for fetching API data.
  • Lodash - Powerful general purpose utility belt for writing clean code.
  • Moment.js - Begrudgingly used as a fallback when manipulating UTC dates whilst awaiting UTC support in date-fns.

Testing & Linting

  • Jest - All-in-one Javascript testing framework which executes unit & integration tests.
  • ESLint - Provides linting for Javascript code ensuring common code quality issues are surfaced and preferred coding conventions are automated.
  • Prettier - An opinionated code formatter which ensures consistent formatting across the codebase.
  • husky - Ensures git pre-commit hooks are in place to enforce ESLint & Prettier rules.
  • lint-staged - Speeds up pre-commit hooks by ensuring only the modified files are linted.

Developer Experience

  • Renovate - Helps keep dependencies up to date by monitoring for updates and automatically opening pull requests.

🌳 Project Structure

The project structure is designed to minimize the number of directories, increase discoverability and ensure related code is grouped together. Feature code is grouped based on what "feels right" and is subject to refactoring over time.

If a convention exists for locating configuration files related to developer tooling then it should be followed (e.g. .babelrc or .eslintrc.js).

  • config - Tooling configuration which doesn't have a conventional location.
  • src - Application specific code and test files.
    • app - Koa application files.
      • middleware - Custom Koa middleware.
      • routes - Koa routers.
      • util - Utilities used by Koa application files.
    • config - Application configuration files used by Node-config.
    • [feature] - Business logic and helpers related to a specific feature.
      • ...
    • model - Mongoose document models.
    • util - All other helper functions used to support the codebase.
    • constants.js - Shared constants. Each constant should be a named export.
    • index.js - Application entry point.

🤖 NPM Scripts

A number of NPM scripts are provided for automating common tasks.

  • lint - Lint all code files in the project.
  • start - Start the API server.
  • test - Run unit/integration tests and produce coverage report.
  • test:watch - Run unit/integration tests in watch mode.

👀 Nodemon

The recommended way of developing locally with 0x-tracker-api is to use Nodemon. The project has a Nodemon configuration file which ensures the application will restart whenever relevant files are changed.

To get started with Nodemon:

$ npm i -g nodemon
$ nodemon

🚨 Continuous Integration

Continuous integration for the project is handled by Travis CI which runs linting, tests, and builds the sources for every pull request. Merged pull requests are automatically deployed to production.

👨‍💻 Maintainers

Supporters

Infrastructure for 0x Tracker is generously supported by these companies.

Bugsnag
Bugsnag
CryptoCompare
CryptoCompare
Netlify
Netlify

👩‍⚖️ License

Apache 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].