Game Trade Market
Discover, buy, sell and trade in-game NFTs. GameTrade is a specialized and convenient marketplace for trading virtual in-game NFTs.

The software is wholly hosted on AWS for additional scalability and stability.
Backend and frontend
Both backend and frontend are written wholly in typescript. The backend distributes its GraphQL schema at https://api.gametrade.market/api/schema.graphql. To explore our GraphQL, one can use https://api.qa.gametrade.market/api/schema.graphql. The frontend uses the backend’s GraphQL schema for apollo code generation during the build phase, and the compilation fails if the generated classes are not compatible with frontend source code, which allows to eliminate incompatibility issues caused by skew of versions of backend and frontend.

The frontend is built with NextJS that is hosted on AWS Amplify - a fully scalable solution that provides server-side rendering (extra speed on mobile devices, best SEO compatibility) backed by the scalable serverless AWS lambda technology.
The backend is built with NestJS hosted on multiple pods in AWS Elastic Container Service (ECS) for scalability, redundancy and stability.
The databases used include PostgreSQL-based AWS RDS cluster for long-term data, AWS DynamoDB for short-term data and AWS OpenSearch for search cache.
Blockchain
We build a system that is decoupled both from any specific blockchain or cryptowallet.
We support all WalletConnect-compliant cryptowallets (virtually any cryptowallet) already. We still decided to do a separate Metamask integration because it is the most popular waller.
As ex-cryptominers with our own cloud crypto mining platform, we already have experience with building an accounting system that supports various blockchains with various decimals.


As ex-cryptominers with our own cloud crypto mining platform, we already have experience with building an accounting system that supports various blockchains with various decimals.

We have important takeouts from our past experience:
  1. with GameTradeMarket, we do not consider any blockchain as a final destination; everything can change in one moment and we need to quickly switch to another blockchain
  2. Prices in fiat need to be recalculated frequently, but transactions that already happened need to remember the fiat conversion rate
  3. Never build our own solutions when possible - always use 3rd party providers such as Moralis, Infura, BigQuery
  4. Failproof accounting is a must - we make sure that transaction are processed in 100% of cases in not much than 30 seconds after they happen on the blockchain

GameTradeMarket can support any token of any nature, as long as we have an internal provider for a specific protocol. The system is built in such a way that interactions with new blockchains can be added on-the-go.

The blockchains already supported are: Ethereum, Polygon and Binance Smart Chain. The system is built to support any blockchain, it already supports any WalletConnect-compliant cryptowallet (virtually any cryptowallet). Next blockchains to be supported are Avax, Solana and Avalanche.

To work with blockchain, we use ethers.js and web3.js on the frontend and Infura on the backend. For parsing large amounts of data on the blockchain (e.g. parsing tokens belonging to our users) we use Google BigQuery pre-filled database.
We have our own marketplace smart-contract. It is based off the open-source template smart contract that takes funds from the buyer, transfers the token from the sellet to the buyer and releases the funds to the seller. We added a couple of enhancements like dynamically setting the fee, in case we decide to change it. Such manipulations can only be done from the smart contract creator’s wallet address. Also, we save each listing directly in the smart contract’s storage, otherwise we could expect someone hijacking the smart contract and setting their own price.
Marketing
For tracking user activity and marketing, we use Facebook Conversions API and Google Analytics

For automated emails, we use Mailchimp+Mandrill
What were the biggest technological challenges?
A. Building the platform fast means doing things right from the first try. As the blockchain ecosystem is constantly evolving, it also means choosing the most up-to-date solutions while making sure they are future-proof and will not be obsolete tomorrow. For example, we decided to go with Ethereum + Polygon + BSC because they share the same EVM, all reside in CoinMarketCap’s top 20 and there is little chance that all three will disappear in the next 3 years.
B. Finding tech providers for any situation instead of writing our own code. For example, for getting data from blockchain (e.g. to know which token belongs to whom) we prefer using Google BigQuery over parsing the blockchain ourselves. The latter option would mean an additional overhead in both maintained codebase and development time. While Google BigQuery for $50/month offers a pre-parsed database of tokens and their owners that we integrated with in a couple of hours.
You can also read more interesting information about web3 in-game overlay
Still have questions?