# Frontend User Guide

## URL

[vorj.app](https://vorj.app)

## Purpose of this guide

The purpose of this guide is to provide a first time VORJ user with the steps required to create and deploy an ERC-721 smart contract through the VORJ frontend.

{% hint style="warning" %}

#### Warning: VORJ is currently beta

* This API is not meant for production use, currently beta.
* You, the user, accept all responsibility for the use of the VORJ API.
* Through the use of the API you are agreeing to the [terms of service](/the-legal-bits.md) and [privacy policy](/the-legal-bits.md) of VORJ.
* The VeChain Foundation San Marino nor any other entity associated with VeChain nor VORJ accept any responsibility associated with the use of VORJ.
* All smart contracts created and deployed through VORJ are done so through the VORJ deployment wallet and thus these smart contracts are owned and controlled by VORJ, unless they are transferred by the user to another wallet.
* The digital assets, either fungible or non-fungible, that are created as part of the smart contracts are minted into your own self-custody wallet, through the provided API endpoints, and thus the digital assets are owned and controlled by the private key holder of that wallet.
  {% endhint %}

## Create and verify an account

To get started on VORJ, you will first need to create and verify an account. Follow the four steps to create and verify your VORJ account.

### 1. Landing page

From the landing page if you already have an account you can login. If you are a new user and are creating an account press the `Register` link.

<figure><img src="/files/givlURTK9BOmk0GLpzQo" alt=""><figcaption><p>VORJ landing page, use the Register link to create an account.</p></figcaption></figure>

### 2. Provide an email address and name

After having selected the register account you will be prompted to provide an email address and a name. After populating this information press `Sign Up`.

{% hint style="info" %}
**Name criteria:**

* Must be more than 5 characters in length.
* Alphanumeric characters only.
* No special characters allowed.
  {% endhint %}

<figure><img src="/files/QhrEy82E1ZCW4vVyqNNI" alt=""><figcaption><p>VORJ account creation page.</p></figcaption></figure>

### 3. Set a password

The next step in creating your VORJ account is to set a password and agree to the Terms of Service. Once you have read and are satisfied with the Terms of Service proceed to check the associated checkbox. Signing up to the newsletter is optional and you can always change your preferences at a later stage. The `Next` button will become active once a valid password is set and the Terms of Service checkbox is checked.

{% hint style="info" %}
**Password criteria:**

* Must be more than 8 characters in length.
* 1 Uppercase and 1 lowercase character.
* 1 Numeric character.
* 1 Special character.
  {% endhint %}

<figure><img src="/files/imp7i3cwgdENfQvpHq8p" alt=""><figcaption><p>VORJ account password creation page.</p></figcaption></figure>

### 4. Verify your account

You will receive a verification code through the email address that you signed up with. Please provide this verification code to complete your VORJ account creation.&#x20;

<figure><img src="/files/IbCAnia67iqBHiCb9SyQ" alt=""><figcaption><p>VORJ account verification page.</p></figcaption></figure>

After a successful registration you will be presented with a success message as shown in the image below.

<figure><img src="/files/dUNSgl657cgR7HlRvUWK" alt=""><figcaption><p>Successful account creation and prompt for next steps.</p></figcaption></figure>

## Create an organization and project

The next step is to create an organization. An organization is a space where you can collaborate with team members to create projects which group your smart contracts.

### 1. Provide an organization name and image

From the success page, as show above, select the `Create Organization` button which will start the organization creation process.

<figure><img src="/files/vFlGmdL04UjmEa1mgX8R" alt=""><figcaption><p>Provide an organization name and image.</p></figcaption></figure>

### 2. Select a plan

As there is only one place select the `Next` button to select the Free plan.

{% hint style="warning" %}
VORJ is currently a beta release, as such there is only a free plan on offer
{% endhint %}

<figure><img src="/files/eLnz1vDfjWPAGRXGirJ1" alt=""><figcaption><p>Select a plan for your organization.</p></figcaption></figure>

### 3. Add members

You can invite team members to join your organization to collaborate with you as you create smart contracts. To procced press `Next` to move onto the final step in the organization creation process.

<figure><img src="/files/FDRYkZ7NeOVjRqxMnSLj" alt=""><figcaption><p>Add members to you organization team.</p></figcaption></figure>

### 4. Create a project

A project is a workspace within an organization where you and your team can collaborate on creating smart contracts. Provide a project name, select the network that you want to deploy your smart contract on and set an image for your project.

{% hint style="info" %}
Smart contracts inherit the network setting of a project and smart contracts cannot be moved between projects.
{% endhint %}

<figure><img src="/files/OtY51jb0ov5PYQYwmDKJ" alt=""><figcaption><p>Creating your first project.</p></figcaption></figure>

After successfully creating an organization and project you will be directed to the dashboard page, which is shown in the image below.

<figure><img src="/files/W43LnYhsc5PvBBoWOAR5" alt=""><figcaption><p>Dashboard for our new organization</p></figcaption></figure>

## Create a smart contract

The next step is to create a smart contract. After we have successfully created a project, we should be on a page similar to the image show above. From here we can select the project card by clicking on it. By clicking on the project card we are entering the project space, we should now be on a page similar to the image shown below.

<figure><img src="/files/MPmBfRMavqgYwIQksLpH" alt=""><figcaption><p>The project detail page is where we create and can access our smart contracts.</p></figcaption></figure>

### 1. Allocate resources

The first step is to allocate resources to our project so that we can create, deploy and interact with our smart contracts. To allocate resources select the `Allocate Resources` button.

{% hint style="info" %}
Refer to [Plans, Resources and Usage](/welcome-to-vorj/plans-resources-and-usage.md) for more information.
{% endhint %}

We will be presented with a modal where we can assign a set amount of `API Calls`, `API Calls/Min` and `Smart Contract Deployments` for the project to use. In this example we have set the following values:

* API Calls: 100
* API Calls/Min: 10
* Smart Contract Deployments: 2

Once you have set the resources for your project press the `Confirm` button to proceed to the next step.

{% hint style="info" %}
A minimum of 2 `API Calls` and 1 `Smart Contract Deployment` resources are required to be allowed to create a smart contract.
{% endhint %}

<figure><img src="/files/TZXgTe9LwcUhfxvfARUy" alt=""><figcaption><p>Resource allocation for a project</p></figcaption></figure>

The image below is an example of a project with no smart contracts but with resources allocated. The next step is to begin the smart contract creation process.

<figure><img src="/files/aC4YEkUcD3rlGDtZxH1s" alt=""><figcaption><p>An example of a project with resources allocated.</p></figcaption></figure>

### 2. Select a smart contract standard

Having allocated resources and having met the minimum resource allocation requirements we should now be able to use the `Create Smart Contract` button. We will be presented with the options of smart contracts standards that we choose from.

We will be selecting the ERC721 token standard to create a Non-Fungible Token (NFT).

<figure><img src="/files/R1poadsGlZKiArdN0ocn" alt=""><figcaption><p>A list of smart contract standards to select from.</p></figcaption></figure>

### 3. Create and deploy an NFT

{% hint style="warning" %}
Smart contracts are immutable, this means that once they are deployed they cannot be changed or altered in anyway.  It is advised that you proceed with caution.

Always, check the contents of the form and double check it before deploying.
{% endhint %}

{% hint style="info" %}
The NFT media that you provide as part of your NFT will be uploaded to the [InterPlanetary File System](https://ipfs.tech/) (IPFS).
{% endhint %}

#### a. NFT configuration

Having selected the NFT standard we are presented with the template to populate, as shown in the image below. This template has a number of required and optional fields.

At a minimum the fields under the heading `Token Appearance` must be populated. The fields contained in the `Features` section are optional. It is strongly advised that you read the supporting information icons to understand the purpose of the fields before activating them.

#### b. Media upload

{% hint style="warning" %}
VORJ beta release and restricts the user to creating an NFT collection with a maximum of 20 images. Future releases will lift this limitation through the availability of plans with different levels of resources.
{% endhint %}

{% hint style="info" %}
The current release provides one route for creating NFTs which is through a dynamic table to add metadata to uploaded images. Additional flows will be supported in future releases.
{% endhint %}

{% hint style="info" %}
Supported media formats: mp3, mpeg, wov, ogg, mp4, webm, jpg, jpeg, git, svg, glb and gltf.
{% endhint %}

Either drag and drop or press upload icon within the `Upload Media` section. Select the group of media files that you want to upload, these can be images, video, sound or animation files. You must upload all of the files in one group at the same time. A limited number of file types are supported and there is a maximum file size per media item. Currently, there is a limit of 20 media items per NFT contract.

<figure><img src="/files/b06OQViPTbktvn4VmQcH" alt=""><figcaption><p>The NFT smart contract template.</p></figcaption></figure>

#### c. Populate metadata

Having uploaded the media files you will be presented with additional fields to populate within the `Metadata` section. You can provide a description for your NFT collection and up to five attributes per media items via the dynamic table. To add an attribute field use the `Set Metadata` button.

<figure><img src="/files/O3jLAMYoMXrAuu3KnKqa" alt=""><figcaption><p>NFT dynamic table for attribute setting.</p></figcaption></figure>

#### d. Preview

Once you have populated the NFT metadata you can use the `Preview` section to check and confirm the metadata of each item in your collection.

<figure><img src="/files/DmL5W0Z8xT7k0kXhltMc" alt=""><figcaption><p>NFT preview.</p></figcaption></figure>

#### e. Deploy

{% hint style="info" %}
Deploying a smart contract takes a minimum of two minutes but could be longer depending on network congestion and other pending transactions within VORJ.
{% endhint %}

As shown in the image above the final action is to either save the contract via the `Save` button and deploy it at a later stage or to deploy the contract via the `Deploy` button.

{% hint style="info" %}
You can monitor all of the pending and historical transactions for your organization via the `Usage` page and the `Transactions` tab. The `Usage` page is accessible as the second icon on the side navigation bar.
{% endhint %}

The first image below shows the screen that will immediately appear once you select `Deploy`. The `here` links to the above mentioned `Usage` page and `Transactions` tab.

The second image shows the state of the contract that is pending deployment. The contract is in a read only state as the contract deployment transaction is propagated through the blockchain network. Once the contract deployment is successful you should be able to interact with the smart contract, more on this in the next section.

<figure><img src="/files/0KMiIVAuEOH4q0pBqzyr" alt=""><figcaption><p>Transaction submitted notification.</p></figcaption></figure>

<figure><img src="/files/l0iVGHiKH6b78NWLWONH" alt=""><figcaption><p>Contract pending deployment.</p></figcaption></figure>

## NFT Actions

Once your smart contract has been successfully deployed you can perform various activities on your smart contract via the `Actions` tab.

{% hint style="info" %}
The actions available may differ depending on the features that you decided to activate on your smart contract.
{% endhint %}

<figure><img src="/files/VwFYVoDwjRggHelVlctr" alt=""><figcaption><p>NFT actions.</p></figcaption></figure>

### Mint an NFT

To mint an NFT simply populate the `Address` field with the receiver Vechain address along with a valid `tokenID(s)`.

{% hint style="info" %}
If you cannot remember the tokenIDs that you used in your collection go back to the `Contract` tab and scroll to the `Preview` section and use the `edition` value as an input into `tokenID`.
{% endhint %}

{% hint style="info" %}
This particular smart contract is configured to use selective minting instead of sequential minting.\
\
Selective minting allows the user to select the tokenID to send per transaction whereas sequential minting mints the tokenIDs in sequential order.
{% endhint %}

Congratulations you have now created, deployed and minted an NFT on the VechainThor blockchain.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.vorj.app/guides/written-guides/frontend-user-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
