## HEDERA MINTBOX SCENARIO
### 1. Normal app run
1. Clone the MVP branch of our repository:
```shell
git clone --branch mvp-v1 https://github.com/hashgraph/hedera-mintbox.git
```
2. After cloning the repository, navigate to the project directory:
```shell
cd hedera-mintbox
```
3. Fill the `hedera-credentials.txt` configuration file for preferable network in ``data/config`` directory.
4. If you have filled in the credentials, prepare your collection data for preferable network in `collection-data.txt` config file from ``data/config`` directory. For example your file might looks like this:
```clike
COLLECTION_TOKEN_NAME=Mintbox Test Collection
COLLECTION_TOKEN_SYMBOL=MTS
```
___
#### At this point, the application has a guard that will not proceed if the collection does not have a defined `supply_key`.
To set it up, uncomment the line with `COLLECTION_KEYS_SUPPLY_KEY` in the `data/config/[network]/collection-keys.txt` file and assign the public key of the account from the Hedera Credentials (as we do not support multi-signature at the moment).
After adding the signature, you can use the application without errors related to configuration files.
___
5. The next step is to prepare the metadata for uploading. If you have launched a new project instance, you will not find the `metadata.csv` file and the `data/metadata` folder is empty. The easiest way to add them is by copying the appropriate examples from the `data/example` directory according to the instructions or use one of populating flags for the shell scripts. After preparing metadata, you need to restart the application.
6. Before lunch, you need to declare FILE_STORAGE as "NFTStorage" in the `file-storages-keys.txt` file and add the NFTStorage key in the `data/config/file-storages-keys.txt` file, following the commented example in that file.
7. Run the appropriate shell script based on your operating system to install the dependencies and build the application:
- For Windows:
```powershell
.\RUN.bat
```
- For Unix-like systems (Linux, macOS):
```shell
./RUN.sh
```
9. Proceed through the entire process by confirming the messages with the "Enter" button. Your NFTs and their associated media will be uploaded to the selected File Storage (by default it is a `NFT.Storage`, so no need to change this settings, but can be change in ``data/config/file-storage.txt`` config file). Each upload will be indicated in the console, and upon success, the corresponding CID will be displayed.
10. After the upload process is completed, an estimated TokenCreation+TokenMint price will be displayed. Press the "Enter" button to proceed to the token creation step. The ID of the newly minted token will be displayed.
11. The next step is the minting process. Up to 10 NFTs can be minted simultaneously. If you have more than 10 NFTs (which can be demonstrated using a CSV file), the minting will be divided into parts. For example, 33 NFTs will be divided into 4 parts: [10, 10, 10, 3].
12. Upon successful minting, a link to HashScan will be displayed. If the user performed the entire operation on the testnet, a select option will also be displayed, allowing the user to repeat the entire operation using the same uploaded metadata for the mainnet or exit the application.
13. All logs are available in the `logs` folder.
___
### 2. MVP Demo scenario
#### The archiving functionality was not presented in the demo. The `data/metadata` folder does not exist in the example. Only the minting path from the `.csv` file was considered in the demo.
1. Clone the MVP branch of our repository:
```shell
git clone --branch mvp-v1 https://github.com/hashgraph/hedera-mintbox.git
```
2. **Copy the the configuration files** from `mvp-v1_config.zip` to ***data/config*** directory. (create it if not exists).
3. To prepare your metadata, you can use the `--populate:csv-rich` flag to generate the metadata files.
Run the appropriate shell script based on your operating system:
- For Windows:
```shell
./RUN.bat --populate:csv-rich
```
- For Unix-like systems (Linux, macOS):
```shell
./RUN.sh --populate:csv-rich
```
5. Follow the on-screen instructions displayed by the script. Press the ``Enter`` button to proceed through the application flow.
6. Initially, information from the configuration files will be displayed, along with a request to press the "Enter" button to confirm their correctness.
7. Upon pressing the "Enter" button, the prepared metadata files along with the directory path will be displayed. These files will then be uploaded to the selected Upload Service (in our case, NFT.Storage). After that, press the 'Enter' key again to proceed to the upload step.
8. Each upload will be indicated in the console, and the corresponding CID will be displayed upon success.
9. After the upload process is completed, the estimated TokenCreation+TokenMint price will be displayed. Press the "Enter" button to proceed to the token creation step. The ID of the newly minted token will be displayed.
10. The next step is the minting process. Up to 10 NFTs can be minted simultaneously. The minting will be divided into parts if you have more than 10 NFTs (which can be demonstrated using a CSV file). In this example, our 11 NFTs will be divided into 2 parts: [10, 1].
11. Upon successful minting, a link to HashScan will be displayed. If the user performed the entire operation on the testnet, a select option will also be displayed, allowing the user to repeat the entire operation using the same uploaded metadata for the mainnet or exit the application.
12. All logs are available in the `logs` folder.
13. After successfully minting on the testnet, it's time to mint using the previously uploaded metadata on the mainnet. Please ensure that the configuration files (credentials, collection keys) are correctly filled (the ones in the example are valid).
14. Now it's time to indicate that new configuration files have been read for the mainnet. All collection data may differ (collection data, collection fees, collection keys), which can be seen in the token name property.
15. At this stage, we can skip the upload step as it has already been done for minting on the testnet.
16. After pressing the "Enter" button, we will proceed directly to the collection creation step on the mainnet. A new collection will be created, and its CID will be provided. We can then proceed to the minting step on the mainnet.
17. As mentioned before, we reuse the previously uploaded CIDs (used for minting on the testnet) for the minting process for the metadata. After pressing the 'Enter' button, the minting process will be carried out, this time for the mainnet.
18. Upon successful minting, a link to the collection on HashScan will be displayed. The application will be closed successfully.