SpliceNFT / splicenft

Splice renders deterministic, validated header images for existing NFTs. Generally it breeds new NFTs out of seed NFTs using style NFTs as a ruleset.
https://getsplice.io/
MIT License
20 stars 3 forks source link
dapp ethereum generative-art nft web3

Splice creates generative art for the NFT metaverse

NFTs make great profile pictures. Showing off your NFT as a profile picture, preferably on the collection communities' Discord channels, makes you part of the gang!

These derivative elements can form a metaverse where NFT communities flourish. So that’s a great vision, but currently there aren’t good tools to make it happen. That’s where Splice comes in.

Splice generates building blocks for metaverse creation. When you input your NFT, Splice extracts its features and metadata and generates an array of derivative elements. Right now it's built to create banner images for social profiles. Anyone who owns an NFT can create a matching header image on Splice.

The full documentation of the Splice protocol can be found here: https://splicenft.github.io/splicenft/

Setup

All relevant code is written in Typescript and Solidity, so to build it the only prerequisite is to have an up to date nodejs installation. We recommend NVM to set it up.

The project is using pnpm as a monorepo package manager. Because it's better, faster, slimmer than yarn or npm and supports monorepos without the lerna hassle and yarn incompatibilities right out of the box. Install it globally, before continuing.

You can install all dependencies by issuing an

pnpm install

in the root folder and pnpm will download and hoist all dependencies for all packages neatly.

Environment files

We're using dotenv-flow for .env file resolution. Therefore, .env files are unique for your environment and mustn't be committed ever. For each package, check the .env.sample files to get an idea what you mus configure for each package.

Packages

Contracts

contains all smart contracts and a TS based Hardhat configuration that allows you to compile the code, run tests and create typechain information for its dependents.

Common

contains all commonly used interface classes, helpers (e.g. color extractors and chain indexers) and types needed to for the frontend and the backend. Depends on contracts being built

Backend

To make Splice an enjoyable experience we're running a backend service that caches style code and renderered splices. Depends on common being built.

Dapp

The Splice frontend, built as a CRA using Chakra UI and ethers.js. Depends on common.

Subgraph

Code for The Graph indexers. Will create a subgraph instance on the hosted service. Is utilized by Dapp to quickly scan for existing Splices, provenances and an user's items.