# Quickstart Guide

The Token-Price-Oracle codebase is **fully open source** and hosted on Github.

## The Smart Contracts

<figure><img src="https://3820821826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fp1AG2kVgPxoINkE4ESqB%2Fuploads%2F1aXmtKJg4wUJyHTnRQf9%2Fbanner.jpeg?alt=media&#x26;token=33b171ea-5510-4092-8ae0-c6c8aa815a50" alt=""><figcaption></figcaption></figure>

**Github Link:** [**https://github.com/pajicf/token-price-oracle**](https://github.com/pajicf/token-price-oracle)

The project uses [Hardhat v2.19.1](https://github.com/NomicFoundation/hardhat/releases/tag/hardhat%402.19.1) as the development environment, [Solidity 0.8.19](https://soliditylang.org/) as the Smart Contract language of choice and [Typescript 4.5.0](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-5.html) as language for writing any accompanying tests or scripts.

For package management  [yarn](https://yarnpkg.com/) is used as it provides better performance and safer dependency resolving in comparsion to npm.

#### The project Structure

The project is structured in the next manner:\
`contracts` - Holds the Solidity Smart Contracts and interfaces for external use\
`scripts` - Holds any deployment or on-chain initialisation scripts written in Typescript\
`tasks` - Holds helper tasks for the cli to interact with the contracts\
`test` - Holds all the project related tests

## The Orchestrator - Typescript client

<figure><img src="https://3820821826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fp1AG2kVgPxoINkE4ESqB%2Fuploads%2FrtyzEMixITdvHkdhkmrN%2Fbanner-ts.jpeg?alt=media&#x26;token=a412d3aa-5c30-4017-91a7-1bc21e3bdce3" alt=""><figcaption></figcaption></figure>

**Github Link:** <https://github.com/pajicf/token-price-oracle-orchestrator>

The project uses [Node 18](https://nodejs.org/en) as the development environment and [Typescript 5.3.3](https://www.typescriptlang.org) as the primary language. The server functionality is handled through the [express.js](https://expressjs.com) framework and storage is cached in-memory using [Redux.js](https://redux.js.org).

Web3 interactions are handled using the [ethers.js](https://docs.ethers.org/v5/) library.&#x20;

For package management  [yarn](https://yarnpkg.com/) is used as it provides better performance and safer dependency resolving in comparsion to npm.

## The Orchestrator - GoLang client

<figure><img src="https://3820821826-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fp1AG2kVgPxoINkE4ESqB%2Fuploads%2FFme8rwaOhvuwxdupoJYg%2Fbanner-go.jpeg?alt=media&#x26;token=986deb97-8fa0-46d0-8fe1-1ed4c9a356e9" alt=""><figcaption><p><strong>In the works...</strong></p></figcaption></figure>
