{"id":18780535,"url":"https://github.com/barkprotocol/mint-nft","last_synced_at":"2025-09-09T19:29:00.761Z","repository":{"id":254534576,"uuid":"838360632","full_name":"barkprotocol/mint-nft","owner":"barkprotocol","description":"A comprehensive tool for minting NFTs on the Solana blockchain with advanced features like dynamic metadata updates, staking, fractional ownership, and email notifications.","archived":false,"fork":false,"pushed_at":"2024-08-24T05:31:50.000Z","size":97,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-29T10:44:18.597Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barkprotocol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-05T13:35:04.000Z","updated_at":"2024-08-24T05:31:53.000Z","dependencies_parsed_at":"2024-08-24T06:30:06.214Z","dependency_job_id":null,"html_url":"https://github.com/barkprotocol/mint-nft","commit_stats":null,"previous_names":["barkprotocol/mint-nft"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barkprotocol%2Fmint-nft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barkprotocol%2Fmint-nft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barkprotocol%2Fmint-nft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barkprotocol%2Fmint-nft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barkprotocol","download_url":"https://codeload.github.com/barkprotocol/mint-nft/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239697076,"owners_count":19682352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T20:26:59.617Z","updated_at":"2025-02-19T16:41:09.194Z","avatar_url":"https://github.com/barkprotocol.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NFT Minting Dapp\n\nA comprehensive tool for minting NFTs on the Solana blockchain with advanced features like dynamic metadata updates, staking, fractional ownership, and email notifications.\n\n## Overview\n\nThe BARK NFT Minting Dapp allows users to mint, stake, fractionalize, and buy out NFTs on the Solana blockchain. This application integrates with Uploadcare for off-chain storage and provides functionalities for NFT management and advanced features such as staking and fractionalization.\n\n## Features\n\n- **Minting NFTs**: Create and mint NFTs with custom metadata.\n- **Staking**: Stake NFTs to participate in specific programs.\n- **Fractionalization**: Divide NFTs into fractions for partial ownership.\n- **Buyout**: Initiate buyouts for fractionalized NFTs.\n- **Email Notifications**: Receive email alerts for NFT-related activities.\n- **Secure File Upload**: Uses Uploadcare for storing NFT metadata.\n\n## Project Structure\n\n```\nbark-nft-minting-dapp/\n│\n├── src/\n│   ├── index.ts          # Entry point of the application\n│   ├── app.ts            # Main application logic for NFT minting, staking, etc.\n│   ├── nft.ts            # Functions and utilities related to NFTs\n│   ├── staking.ts        # Functions for staking NFTs\n│   ├── fractionalization.ts # Functions for fractionalizing NFTs\n│   ├── buyout.ts         # Functions for initiating buyouts\n│   ├── utils/\n│   │   ├── uploadcare.ts # Utility functions for Uploadcare integration\n│   │   ├── email.ts      # Utility functions for sending emails\n│   │   └── validation.ts # Utility functions for validating NFT metadata\n│   └── config.ts         # Configuration file and environment variables handling\n│\n├── assets/\n│   └── metadata/\n│       └── nft_metadata.json # Example metadata for NFTs\n│\n├── tests/\n│   ├── app.test.ts       # Tests for the main application logic\n│   ├── nft.test.ts       # Tests for NFT-related functions\n│   ├── staking.test.ts   # Tests for staking functionality\n│   ├── fractionalization.test.ts # Tests for fractionalization functionality\n│   └── buyout.test.ts    # Tests for buyout functionality\n│\n├── scripts/\n│   ├── deploy.ts         # Script for deploying smart contracts or other deployment tasks\n│   ├── setup.ts          # Script for setting up the development environment\n│   └── example.ts        # Example script to demonstrate usage\n│\n├── .env                  # Environment variables\n├── .gitignore             # Git ignore file\n├── package.json           # NPM package descriptor\n├── README.md             # Project documentation\n└── tsconfig.json         # TypeScript configuration\n```\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js\n- Solana CLI and wallet setup\n- Uploadcare account\n- Access to Solana devnet or mainnet\n\n### Installation\n\n1. Clone the repository:\n\n    ```bash\n    git clone https://github.com/barkprotocol/mint-nft.git\n    cd mint-nft\n    ```\n\n2. Install dependencies:\n\n    ```bash\n    npm install\n    ```\n\n3. Set up environment variables:\n\n    Create a `.env` file in the root directory and add the following:\n\n    ```plaintext\n    UPLOADCARE_PUBLIC_KEY=your_uploadcare_public_key\n    UPLOADCARE_SECRET_KEY=your_uploadcare_secret_key\n    WALLET_PATH=path_to_your_wallet.json\n    SOLANA_NETWORK=devnet\n    EMAIL_HOST=your_email_host\n    EMAIL_PORT=your_email_port\n    EMAIL_USER=your_email_user\n    EMAIL_PASS=your_email_password\n    ```\n\n### Usage\n\n1. **Minting NFTs**\n\n    Create a JSON file with NFT metadata and use the script to mint NFTs:\n\n    ```typescript\n    import { mintMultipleNfts } from './app'; // Ensure this function is exported in your app.ts\n\n    const nftDetails = [\n      {\n        name: 'BARK NFT 1',\n        symbol: 'BARK1',\n        uri: 'https://your_metadata_uri',\n        royalty: 5,\n        attributes: [{ trait_type: 'Background', value: 'Forest' }],\n        collection: { name: 'BARK Collection', family: 'BARK' }\n      },\n      {\n        name: 'BARK NFT 2',\n        symbol: 'BARK2',\n        uri: 'https://your_metadata_uri',\n        royalty: 5,\n        attributes: [{ trait_type: 'Background', value: 'Desert' }]\n      }\n    ];\n\n    mintMultipleNfts(nftDetails, 'recipient@example.com');\n    ```\n\n2. **Staking an NFT**\n\n    Call the `stakeNft` function with the NFT mint address and owner public key:\n\n    ```typescript\n    import { stakeNft } from './app';\n\n    const nftMintAddress = new PublicKey('your_nft_mint_address');\n    const ownerPublicKey = new PublicKey('your_wallet_public_key');\n\n    stakeNft(nftMintAddress, ownerPublicKey);\n    ```\n\n3. **Fractionalizing an NFT**\n\n    Use the `fractionalizeNft` function to divide the NFT:\n\n    ```typescript\n    import { fractionalizeNft } from './app';\n\n    const nftMintAddress = new PublicKey('your_nft_mint_address');\n    const fractionCount = 10; // Number of fractions\n\n    fractionalizeNft(nftMintAddress, fractionCount);\n    ```\n\n4. **Initiating a Buyout**\n\n    Call the `initiateBuyout` function for fractionalized NFTs:\n\n    ```typescript\n    import { initiateBuyout } from './app';\n\n    const nftMintAddress = new PublicKey('your_nft_mint_address');\n    const buyoutPercentage = 50; // Buyout percentage\n\n    initiateBuyout(nftMintAddress, buyoutPercentage);\n    ```\n\n## Contributing\n\nWe welcome contributions to improve this dApp. Please follow these steps:\n\n1. Fork the repository.\n2. Create a feature branch.\n3. Commit your changes.\n4. Push to the branch.\n5. Create a pull request.\n\n## License\n\nThe MIT License. See the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- **Uploadcare**: For providing reliable off-chain storage.\n- **Solana**: For its high-performance blockchain.\n- **Metaplex**: For enabling NFT standards on Solana.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarkprotocol%2Fmint-nft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarkprotocol%2Fmint-nft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarkprotocol%2Fmint-nft/lists"}