/gGoods-1

NFTs that enable communities to raise funds. :innocent:

Primary LanguageJavaScriptMIT LicenseMIT

NFTs that enable communities to raise funds

Collaborative Etiquette Code Style MIT Twitter Forks

gGoods is an open-source NFT standard that enables organizations and communities to create their own NFTs to raise funds. Creating an NFT is easy and straightforward using our avatar creator. The NFTs are then purchased by donors as collectibles that not only support a cause but can be integrated into countless applications such as games, emojis, chat stickers, avatars etc. Visit gGoods.io and try it out!

Why gGoods?

We want to use blockchain technology to encourage anyone to donate their time, creativity and uniqueness to support a cause. Not just money.

Life is beginning to return to normal for many industries. Unfortunately this is not the case for many NGOs, who are being hit particularly hard by the economic effects of the pandemic. As sales slowed, jobs were lost and financial challenges persist, it is proving to be difficult for communities to raise and maintain donations. 2019 broke records of charitable donations ever recorded. However 2020 was disastrous for many charitable causes and 2021 will undoubtedly continue to be tough.

One report reveals that 1 in 5 donors have stopped giving altogether and are not prepared to resume any funding activities until the economy fully recovers. This scenario will likely be familiar to organizations in operation during the 2008 financial crisis, where giving sharply declined during the recession.

The economic downturn has affected incoming revenue for many not-for-profits and there appears to be no easy solution.

That is not to say that NGOs are powerless. gGoods is an innovative low-cost solution that charities can leverage to help boost their funding, even during this difficult period.

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 its own NFT representing a cause and supporters can acquire the NFT 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.

By minting and selling NFTs in our marketplace, gGoods can help communities and NGOs solve the immediate liquidity issues caused by economic slowdown. gGoods enable voluntary donations and payment subscriptions in exchange for an NFT. This is a unique, innovative funding strategy that NGOs can apply to help reduce the negative financial impact to their organization while engaging with their supporters.

Who’s behind gGoods?

gGoods was created by a group of Costa Rican techies at EOS Costa Rica. It was our submission to the 2021 Beyond Blockchain EOSIO Hackathon organized by block.one, Google, Galaxy Interactive and Mythical Games.

About the hackathon

The 2021 Beyond Blockchain EOSIO Hackathon was organized by block.one, a leading technology company that launched the EOSIO blockchain protocol, to encourage teams to develop a solution that could bring positive change at scale to communities around the world. The judging committee included Google, Galaxy Interactive and Mythical Games.

About the technology

What is blockchain?

We deploy EOSIO blockchain technology to create gGoods. A blockchain is a decentralized ledger that registers transactions within a network of various computers or nodes. Once a transaction is validated by the network and registered in the chain, it remains immutable and cannot be altered or hacked, improving transparency and trust.

Learn more about blockchain

What is EOSIO?

Block.one launched the EOSIO blockchain protocol in 2018 as an open-source technology to help solve real-world problems. EOSIO offers scalability, flexibility, and a developer friendly tech that uses the C++ language to program smart contracts.

Explore EOSIO

What are NFTs?

NFTs or non-fungible tokens are unique, rare, and indivisible cryptographic digital assets representing collectibles, digital artwork, tickets to an event, or in-game items. In gaming, NFTs enable users to collect assets that they can use as in-game items or trade with their peers.

Read more on NFTs

How we built gGoods

This project features the following tech stack:

EOSCR Boilerplate

We built this project using our own EOSIO project boilerplate, a highly scalable skeleton including best practices. This fullstack monorepo contains our front end and backend boilerplates.

UX Design

We use Figma as an application for collaborative design projects in teams, where we create the gGoods prototype to improve the user experience.

Project Board and Discussion Topics

Find out more about the following topics on gitHub discussions

We use a Kanban-style board for planning and prioritizing work. Check out our Agile Project Board.

Installation

Before you Start

Somethings you need before getting started:

First Time

Copy the .env.example then update the environment variables according to your needs.

cp .env.example .env

Quick Start

  1. Clone this repo using git clone --depth=1 https://github.com/eoscostarica/Ggoods.git <YOUR_PROJECT_NAME>.
  2. Move to the appropriate directory: cd <YOUR_PROJECT_NAME>.
  3. Run make run in order to start the project using docker compose.

At this point you can navigate to http://localhost:3000.

File Structure

File Structure

Within the repo you'll find the following directories:

.
├── contracts ..................... gGoods Smart Contract
├── docs .......................... Diagrams and Images for docs
├── hasura ........................ Hasura GraphQL Engine
├── hapi .......................... HTTP API 
├── kubernetes .................... Kubernetes Manifests 
├── utils ......................... Makefiles for project build
├── wallet ........................ EOSIO Wallet Service
└── webapp ........................ ReactJS Web Application

Infrastructure Diagram

Services

Tech Stack Description

Google Kubernetes Engine Cluster

We built gGood taking into consideration scalability and high availability of the services for this reason we use Kubernetes powered by GKE on Google Cloud with auto-scaling policies set to meet the most demanding audiences.

EOSIO Smart Contract

We forked the dGoogds token standard smart contracts form https://github.com/MythicalGames/dgoods

The smart contract used by gGoods is deployed on the jungle3 testnet as ggoodsggoods. Here you can find its source code, additionally as part of quality assurance here you will find our tests

EOSIO KEOSD Wallet Service

gGoods allows for users to purchase NFTs using traditional payment and authentication methods such as Google. We believe this provides the best user experience and lowers barriers for adoption. To accomplish this we are using the native EOSIO KEOS wallet service to store user's private keys and sign transactions for them. We plan to enable client side wallets soon.

ReactJS Web Application

This project uses React.js as a Frontend Library which together with other tools like Apollo Client, GraphQL and Material UI brings a robust solution for building Single Page Applications out of the box.

Hasura GraphQL Engine

Hasura technology maps a PostgreSQL database and provides a reliable and easy-to-use API. This allows us to focus on critical features of our projects, 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.

HTTP API Service - hAPI

We use an internal HTTP API to handle custom business logic coming from the Hasura GraphQL server. We chose to use hapi.dev for this, which is a simple and easy-to-use Node JS backend framework.

Interplanetary File System - IPFS

We use IPFS to store the assets that are displayed in the Web Application. IPFS is a decentralized storage that uses blockchain technology to provide auditability and availability of the assets. IPFS can be configured to setup your own node and validate the data, but this time we are using the public IPFS access, i.e. public endpoints.

Release Management Process

Version

  • 0.1.0

License

MIT © EOS Costa Rica.

Contributing

Please Read EOS Costa Rica's Open Source Contributing Guidelines.

Please report any bugs big and small by opening an issue

Contributors

Thanks goes to these wonderful people (emoji key):


JustinCast

💻 📖 🤔 🚇 🔬 👀

Jorge Murillo

️️️️♿️ 🎨 🤔 🔬 👀

Edgar Fernandez

💼 🖋 📖 🤔 📹

Luis Diego Rojas

📝 💼 🖋 📖 🤔 🔬

Rodolfo Perez

🎨

Leister Francisco Alvarez Campos

💻 🤔 🔬 👀

AngeloCG97

💻 🤔 🔬 👀

Andres Gomez

🚇 🧑‍🏫 👀

Jean Vega

💻 🎨 🤔 🔬 👀

Steph Delgado

💻 🎨 🤔 🔬 👀

Kriskoin

💻 🤔 👀
Xavier Fernandez
Xavier Fernandez

🤔 📝 📢 🚇
Teto Gomez
Teto Gomez

🤔 💻 👀
Adriel Diaz
Adriel Diaz

🤔 💻 👀

This project follows the all-contributors specification. Contributions of any kind welcome!

About EOS Costa Rica


EOS Costa Rica is an independently-owned, self-funded, bare-metal Genesis block producer that provides stable and secure infrastructure for EOSIO blockchains. We support open source software for our community while offering enterprise solutions and custom smart contract development for our clients.

eoscostarica.io