Categorygithub.com/ole-larsen/plutonium
repository
0.0.0-20250205152611-bfae35225242
Repository: https://github.com/ole-larsen/plutonium.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

Plutonium NFT Marketplace

Welcome to Plutonium NFT Marketplace, a powerful and feature-rich platform for creating, buying, and selling NFTs (Non-Fungible Tokens).

Develop Installation

Plutonium requires golang v1.23+ to run.

Install the dependencies and devDependencies and start the server.

cd plutonium
docker pull quay.io/goswagger/swagger
alias swagger='docker run --rm -it  --user $(id -u):$(id -g) -e GOPATH=$(go env GOPATH):/go -v $HOME:$HOME -w $(pwd) quay.io/goswagger/swagger'
swagger generate server -A service -P models.Principal -f ./schema/swagger.yml   

Tests

go test -v -coverpkg=./... -coverprofile=coverage.out -covermode=count ./...
go test -race -covermode=atomic -coverprofile=coverage.out ./... &&
go tool cover -func coverage.out | grep total | awk '{print $3}' &&
go tool cover -html="coverage.out"

Make sure your gopath is correct

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

Install abigen

go get -u github.com/ethereum/go-ethereum
cd $GOPATH/src/github.com/ethereum/go-ethereum/
make
make devtools

Compile contracts

solc --abi contracts/nft/NFT.sol -o contracts/nft/abi --overwrite && \
solc --abi contracts/collection/NFTCollection.sol -o contracts/collection/abi --overwrite && \
solc --abi contracts/marketplace/Marketplace.sol -o contracts/marketplace/abi --overwrite && \
solc --abi contracts/ballot/Ballot.sol -o contracts/ballot/abi --overwrite && \
solc --abi contracts/auction/NFTAuction.sol -o contracts/auction/abi --overwrite

Generate bindings

abigen --abi contracts/nft/abi/NFT.abi --pkg nft --type NFT --out contracts/nft/NFT.go && \
abigen --abi contracts/collection/abi/NFTCollection.abi --pkg collection --type NFTCollection --out contracts/collection/NFTCollection.go && \
abigen --abi contracts/marketplace/abi/Marketplace.abi --pkg marketplace --type Marketplace --out contracts/marketplace/Marketplace.go && \
abigen --abi contracts/ballot/abi/Ballot.abi --pkg ballot --type Ballot --out contracts/ballot/Ballot.go && \
abigen --abi contracts/auction/abi/NFTAuction.abi --pkg auction --type Auction --out contracts/auction/NFTAuction.go

Deploying contracts

solc --bin contracts/nft/NFT.sol -o contracts/nft/bin --overwrite && \
solc --bin contracts/collection/NFTCollection.sol -o contracts/collection/bin --overwrite && \
solc --bin contracts/marketplace/Marketplace.sol -o contracts/marketplace/bin --overwrite && \
solc --bin contracts/ballot/Ballot.sol -o contracts/ballot/bin --overwrite && \
solc --bin contracts/auction/NFTAuction.sol -o contracts/auction/bin --overwrite

# One Command

solc --evm-version paris --abi contracts/nft/NFT.sol -o contracts/nft/abi --overwrite &&
solc --evm-version paris --abi contracts/collection/NFTCollection.sol -o contracts/collection/abi --overwrite &&
solc --evm-version paris --abi contracts/marketplace/Marketplace.sol -o contracts/marketplace/abi --overwrite &&
solc --evm-version paris --abi contracts/ballot/Ballot.sol -o contracts/ballot/abi --overwrite &&
solc --evm-version paris --abi contracts/auction/NFTAuction.sol -o contracts/auction/abi --overwrite &&
abigen --abi contracts/nft/abi/NFT.abi --pkg nft --type NFT --out contracts/nft/NFT.go &&
abigen --abi contracts/collection/abi/NFTCollection.abi --pkg collection --type NFTCollection --out contracts/collection/NFTCollection.go &&
abigen --abi contracts/marketplace/abi/Marketplace.abi --pkg marketplace --type Marketplace --out contracts/marketplace/Marketplace.go &&
abigen --abi contracts/ballot/abi/Ballot.abi --pkg ballot --type Ballot --out contracts/ballot/Ballot.go &&
abigen --abi contracts/auction/abi/NFTAuction.abi --pkg auction --type NFTAuction --out contracts/auction/NFTAuction.go &&
solc --evm-version paris --bin contracts/nft/NFT.sol -o contracts/nft/bin --overwrite &&
solc --evm-version paris --bin contracts/collection/NFTCollection.sol -o contracts/collection/bin --overwrite &&
solc --evm-version paris --bin contracts/marketplace/Marketplace.sol -o contracts/marketplace/bin --overwrite &&
solc --evm-version paris --bin contracts/ballot/Ballot.sol -o contracts/ballot/bin --overwrite &&
solc --evm-version paris --bin contracts/auction/NFTAuction.sol -o contracts/auction/bin --overwrite &&
abigen --abi contracts/nft/abi/NFT.abi --pkg nft --type NFT --out contracts/nft/NFT.go --bin contracts/nft/bin/NFT.bin &&
abigen --abi contracts/collection/abi/NFTCollection.abi --pkg collection --type NFTCollection --out contracts/collection/NFTCollection.go --bin contracts/collection/bin/NFTCollection.bin &&
abigen --abi contracts/marketplace/abi/Marketplace.abi --pkg marketplace --type Marketplace --out contracts/marketplace/Marketplace.go --bin contracts/marketplace/bin/Marketplace.bin &&
abigen --abi contracts/ballot/abi/Ballot.abi --pkg ballot --type Ballot --out contracts/ballot/Ballot.go --bin contracts/ballot/bin/Ballot.bin &&
abigen --abi contracts/auction/abi/NFTAuction.abi --pkg auction --type NFTAuction --out contracts/auction/NFTAuction.go --bin contracts/auction/bin/NFTAuction.bin


### Mocks
```bash
mockgen -source=internal/storage/db/repository/users.go -destination=internal/storage/mocks/users_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/contracts.go -destination=internal/storage/mocks/contracts_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/categories.go -destination=internal/storage/mocks/categories_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/pages.go -destination=internal/storage/mocks/pages_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/menus.go -destination=internal/storage/mocks/menus_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/sliders.go -destination=internal/storage/mocks/sliders_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/files.go -destination=internal/storage/mocks/files_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/authors.go -destination=internal/storage/mocks/authors_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/contacts.go -destination=internal/storage/mocks/contacts_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/contactForms.go -destination=internal/storage/mocks/contactForms_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/faqs.go -destination=internal/storage/mocks/faqs_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/helpCenter.go -destination=internal/storage/mocks/helpCenter_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/blogs.go -destination=internal/storage/mocks/blogs_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/tags.go -destination=internal/storage/mocks/tags_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/wallets.go -destination=internal/storage/mocks/wallets_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/createAndSell.go -destination=internal/storage/mocks/createAndSell_mock.go -package=mocks

mockgen -source=internal/storage/dbstorage.go -destination=internal/storage/mocks/dbstorage_mock.go -package=mocks