It’s not always about money. We use blockchain technology to encourage anyone – with no prior blockchain experience – to support a cause by donating their time, creativity, and uniqueness.

For some sectors, life is coming back to normal. Unfortunately, this is not the case for many NGOs and communities that are being hit by the pandemic’s economic effects. As sales slowed down, unemployment rose, and financial challenges persist, it has been difficult for these organizations to raise and maintain donations. Despite historical highs in fundraising and crowdfunding, 2020 and 2021 represent trying times for causes and NGOs living off donations.

A report reveals that one in five donors have stopped giving altogether and are not prepared to resume any funding activities until the economy fully recovers. This scenario may be likely familiar to organizations that operated during the 2008 financial crisis, when giving declined during the recession.

The recent economic downturn has affected incoming revenue for many non-profits, and it seems like there is no easy solution to tackle this. We saw that first-hand with a local animal rescue in Costa Rica that funded their operations by welcoming visitors and volunteers. However, the pandemic dropped their earnings and they struggled to fund their cause. With many organizations facing similar challenges, we put our hopes in the recent popularity and potential of NFTs to crowdfund these causes.

gGoods is an innovative solution that enables organizations and causes to boost their fund raising by leveraging the power of blockchain technology and NFTs. By minting and selling NFTs in our marketplace, gGoods can help communities and NGOs solve the immediate liquidity issues caused by the economic slowdown. gGoods enables donations and paid subscriptions in exchange for an NFT. Our proposal is a unique, innovative funding strategy that NGOs can apply to help reduce their organization’s negative financial impact while engaging with their supporters.

What it does

gGoods is an open-source NFT standard that lets communities create tokens for crowdfunding. The platform connects non-profit organizations and charitable causes to their supporters worldwide. A community can create an NFT representing a cause that supporters can acquire to use as an in-app asset. The donation will be sent to the organization directly, enabling each supporter to verify its destination. Supporters can also collect and use their NFTs as in-game items in a games library.

More into detail, a user representing a community must create an account as an organization. The user can add several descriptions such as objectives, a brief history, and their impact on the organization's profile. Once they're ready, the user can create their first NFT using an easy-to-use avatar maker tool representing their cause. These NFTs, known as "gGoods" will have a suggested price tag and describe what they're funding when acquired. Once they publish it on the gGoods app, patrons can receive the NFT in exchange for their donation.

On the other hand, donors can create an account and browse the NFTs and organizations’ catalog to find the cause that best represents them. Once they acquire an NFT, it will register on the blockchain. Donors can collect their NFTs. These "gGoods" will belong to them, so the donors will be able to trade or sell these NFTs as they are scarce and unique.

Also, donors will hold their NFTs as in-game or in-app assets. The gGoods platform offers a library of games and apps where donors can use their NFTs, for example, to take AR-supported selfies, position them on a map, or as pieces to play checkers and other fun games. gGoods can also allow interactions on other platforms such as social media and messaging apps.

How we built it

Tech stack:

We deploy EOSIO blockchain technology to create the NFT standard of gGoods. This project features the following tech stack:

  • Smart contracts: EOSIO smart contracts are built from C++ code and Ricardian Contracts.
  • Google Kubernetes Engine
  • EOSIO and the Jungle testnet
  • dGoods - We forked the dGoods smart contracts. dGoods is an open-source standard for handling the virtual representation of digital or physical items on the EOS blockchain led by Mythical Games.
  • IPFS: A protocol and peer-to-peer network for storing and sharing data in a distributed file system.
  • React JS: An open-source, front end, JavaScript library for building user interfaces or UI components.
  • Material UI: React components for web development.
  • hasura GraphQL engine: An autogenerated GraphQL API based on the PostgresDB.
  • hapi - HTTP API: A NodeJS back end service for account management, wallet service integration and synchronizing blockchain tables with postgreSQL.

EOSCR Boilerplate: We built this project using our own EOSIO project boilerplate, a highly scalable skeleton including best practices. This full-stack monorepo contains our front-end and backend boilerplates.

Infrastructure Diagram: See attached

Services: See attached

Tech Stack Description:

  • Web Application: This full-stack template uses React.js as a front-end library along with other tools like Apollo Client, GraphQL, and Material UI that bring a robust solution for building Single Page Applications out of the box.

  • Backend

    • Hasura GraphQL Server: Hasura technology maps a PostgreSQL database and provides a reliable and easy-to-use API. It allows us to focus on our projects’ critical features, delegating mechanic CRUD (Create, Read, Update, Delete) operations. Hasura also enables custom REST handling capabilities with the possibility to integrate a custom REST server. That way, we can extend the base CRUD functionalities and build custom business logic.
    • Hapi REST Server: We need to handle REST custom requests coming from the Hasura GraphQL server. For this, we use, which is a simple and easy-to-use backend framework.
  • EOSIO Blockchain Technology Integration: As a company that delivers EOSIO blockchain-based solutions, we built a template containing EOSIO integrations, specifically eosjs. It allows us to iterate quickly over the more challenging features of our projects.

  • Interplanetary File System (IPFS): We use IPFS to store the assets that display on the web application. IPFS is a decentralized storage system that uses blockchain technology to provide auditability and availability of assets. IPFS can be configured to set up a node and validate the data, but this time we are using the public IPFS access, i.e., public endpoints.

  • Google Kubernetes Engine Cluster: At EOS Costa Rica, we build software considering the high availability of the services that can integrate it. For this, we use Kubernetes, which allows isolating modules to reduce the risk of the system collapsing.

Challenges we ran into

  • Payment gateways: We wanted the payment gateway to be easy to use for a community not familiar with cryptocurrencies while also allowing interesting feature sets like perpetual revenue streams built in the smart contract standard.
  • In-app / in-game use cases: We wanted to show the functionality of gGoods in different in-app use cases but struggled to balance the level of effort without sacrificing the concept.
  • Focus on gaming: We started with a specific focus on gaming but realized that gGoods was a new way for anyone to interact with a cause they care about and a new way for communities to crowdfund.
  • Displaying NFTs: We struggled to find the right balance between showing the technical aspects of an NFT and the vast marketing opportunities. We chose a “trophy case” type display to make NFTs more approachable.
  • Wallet User Experience: We want it to be as easy as possible for users to purchase NFTs , we decided to start by create our own cloud wallet service and hold user keys , further on we plan to have wallet integration so users can choose to hold their own keys if they prefer.

Accomplishments that we're proud of

  • Researching all the different NFT standards in EOSIO and other blockchains to determine the right features for gGoods.
  • Integrating payment gateways like Google Pay and Paypal for the purchase of NFTs
  • Integrating augmented reality (AR) and progressive web applications into the gGoods in-app usage known as “selfie cam.”
  • Ensuring users can purchase NFTs as easily as donating to an NGO.
  • Using blockchain technology to encourage anyone to donate their time, creativity, and uniqueness to a cause they support. Not just money.
  • Unit tests for smart contracts!

What we learned

  • NFTs can offer new platforms for crowdfunding.
  • NGOs and communities are looking for new ways to engage with their supporters and raise funds.
  • People are looking for new ways to support causes they care about through an experience that doesn't involve physical travel or just a monetary donation.
  • NFTs can be more impactful if they are not just collectible art. Using them as in-app assets, NFTs can become a “badge,” representing the user’s donation, and a fun digital asset.
  • How to use dgoods as a NFT framework

What's next for gGoods

  • The next steps for gGoods will help improve the experience for the users.
  • New avatar categories to welcome even more causes and organizations, for example, humans, dogs, robot, or zombie faces, inanimate objects, etc.
  • Improve security across the platform.
  • Dark mode and other UI enhancements.
  • Language translations for internationalization.
  • 3D preview of the assets.
  • Subscription payments through Google Pay and other payment gateways.
  • Displaying the ricardian contract component of the NFT contract.
  • Royalty payments to the community in perpetuity for secondary market sales.
  • Allowing secondary market sales.
  • Enabling “My Own NFT Design” features in the platform.
  • Ability to create an NFT on behalf of an organization.
  • NFT filters and categories.
  • Attaching sound to an NFT
  • Allowing the use of eosio wallets and donating with crypto.

Built With

+ 6 more
Share this project: