Pixels For Peace is an opensource Ethereum blockchain NFT project that allows users to create unique NFTs from their image files and choose to either create an auction or a lottery for a charitable cause. All proceeds are donated to the designated charity.
To get started with Pixels For Peace, you will need the following:
Once you have these, you can start creating your own Pixels For Peace NFTs and supporting a good cause.
Pixels For Peace uses the following Solidity contracts:
NFT.sol
: used to generate NFTsAuction.sol
: used to manage auctionsLottery.sol
: used to manage lotteriesSaleFactory.sol
: used to create new auction or lottery contract instances for each generated NFTThe frontend is built with Angular (TypeScript) and provides the customer-facing interface for generating new NFTs, viewing past and current sales, and viewing a list of supported charitable causes.
The backend is built with Nest (TypeScript) and is responsible for securely interacting with the Ethereum contracts, as well as managing the database (MongoDB). Backend API
Each associated sale data (auction or lottery contract instance), are saved to the database.
The backend utilizes MongoDB Atlas instance. Simply connect to it using a connection string in the following format:
`MONGO_DB_CONNECTION_STRING="mongodb+srv://<username>:<password>@cluster0.ynzm1xh.mongodb.net/pixelForPeaceDB"`
Add this as an key-value pair in .env
configuration. (See .env-sample
at root of backend source.)
Frontend and backend are deployed to Azure web app instances.
Pipeline definitions for located in ./github/workflows
which deployment can be triggered in GitHub action tab.
Each pipelines requires the following GitHub Action secret variables.
Configure the following (see each respective files env
section).
deploy-frontend.yml
FRONTEND_PUBLISH_PROFILE
: Export and add Azure web app publish profile here.
deploy_backend.yml
BACKEND_PUBLISH_PROFILE
: Export and add Azure web app publish profile here.
BACKEND_ENV_FILE
: Add production .env
file here. (e.g containing database connection string).