Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Commit

Permalink
Sdc mental models: payment dapp upgrades (#641)
Browse files Browse the repository at this point in the history
* bringing sdc-mental-models branch up to date (#632)

* feat: provide a means of receiving simple feedback from users (#587)

* feat: provide a means of receiving simple feedback from users

Here, we have swizzled (ejected) the `DocItem/Footer` component
from docusaurus, and are inserting our own `ReaderFeedback`
component into it before the rest of the doc footer content.
Also, the `custom.scss` file has been used to style this element
in a consistent manner with the rest of the site.

This is the first step to resolve #586: The user interaction can
now take place. From here, we will work on integrating the custom
events into Google analytics. Ultimately, we will like to implment
this feature into the `stellar-docs` repository, as well.

Refs: #586

* Moving some React state things around

* Including an `alt` tag for the like/dislike buttons

* use the `pageId` for `eventLabel` in the send event

* style: Linting the code

* style: changing inline svg tag to be on newlines, changine filename to `jsx`

* feat: Inserting the `DocItem/Footer` components on `dapps` and `api` pages

* feat: migrating to the GA4 plugin in docusaurus

* Testing with a new ga4 tracking id for preview domain

* add some console statements to test what's happening

* add configuration for test gtag container for this pr preview

* feat: use `gtag` over the deprecated `ga` function

* adding my own test gtag?

* Remove the `gtag` function call, and just register state

* removing the old-style google analytics tag for good

* remove staging tag manager containers in preparation for production

* replace staging ga4 tracking id with production tracking id

* use `@site/static` for feedback button imports, rename file extension

* rpc: rename expirationLedgerSeq to liveUntilLedgerSeq (#625)

* rpc: rename expirationLedgerSeq to liveUntilLedgerSeq

* rpc: rename expiration ledger in openrpc file

---------

Co-authored-by: Elliot Voris <[email protected]>

* Remove docker image hashes (#628)

* remove mentions of specific image hashes in docker commands

* update docker image hash to most recent version on releases page

* Update WASM retrieval tutorial (#627)

* docs: explain the diagnostic events that are emitted in sandbox (#593)

* docs: explain the diagnostic events that are emitted in sandbox

Perhaps this approach is too verbose? I think having the explanation
of what is being seen right there in the tutorial is useful at this
early step in the "getting started" section. A new developer is more
likely to understand what they see, and remember what it is in the
future if we don't try to interrupt their flow at this point by
sending them to another page for some (possibly irrelevant) info.

I may be incorrect there, and I'm happy to hear opinions from others.

Refs: #521

* docs: add a space between two words

* editorial in Update hello-world.mdx

---------

Co-authored-by: Bri Wylde <[email protected]>

* Fix a couple typos in rust-dialect.mdx (#630)

---------

Co-authored-by: Elliot Voris <[email protected]>
Co-authored-by: Alfonso Acosta <[email protected]>
Co-authored-by: George <[email protected]>
Co-authored-by: Bri Wylde <[email protected]>
Co-authored-by: Sapo-Dorado <[email protected]>

* Crowdfund dapp copy updates v1

Added in some (minimal) context throughout.
Tidied up a few grammatical/spelling inconsistencies.

* add description and update "ship it" workflow

* update soroban-cli install

* Update challenge-0-crowdfund.mdx

* remove extra vercel link

* Merge branch 'main' into sdc-mental-models

* Add intro to dapps

* nit formatting

* Payment dapp copy updates

Updates to Checkpoints 0-4 of the Payment dapp challenge, including added copy and a few very minor grammatical upgrades.

* add more context

* Merge Payment dapp fix (#643)

* Update latest testnet-compatible JavaScript release versions (#634)

* Update latest testnet-compatible JavaScript release versions

* Add links to release notes for each version

* Upgrade `getLedgerEntries` examples to latest pre-stable releases of the SDKs (#635)

Co-authored-by: Elliot Voris <[email protected]>

* Switch Ubuntu base image to 22.04 from 20.04 (#638)

Signed-off-by: Satyam Zode <[email protected]>
Co-authored-by: Satyam Zode <[email protected]>

* Update getting-started for 20.0.0-rc.4.1 cli (#636)

* Updates to setup.mdx

* Add CLI for testnet configuration to Setup

* Updates to hello-world.mdx

Reorder some code snippets to be after the description

* Small edits in storing-data.mdx

* Add high_expiration_watermark argument to bump in incrementor

* Move deploy-to-testnet after hello-world to allow the user to interact with their contract on testnet

* Add Optimizing Builds to hello-world

* Update storing-data to remove sandbox interation

* Add a deploy-incrementor-to-testnet step

* Update position of Create an App

* Apply suggestions from code review

Co-authored-by: Chad Ostrowski <[email protected]>

* Apply suggestions from code review

Co-authored-by: Chad Ostrowski <[email protected]>

* Update create-an-app.mdx

* Fix typo

* Add a mv command for .soroban dir when reorganizing to a multi-contract project

* Apply mdx prettier updates

* Update astro port in create-an-app.mdx

* Apply suggestions from code review

Co-authored-by: Elliot Voris <[email protected]>

* Add .mdx to end of internal markdown links for docusaurus magic

* Make sure there are new lines before and after ::: tags

* Some additional edits/improvements

* Mention that Freighter is available as a firefox add-on

* Update the deploy-incrementor url

* Apply prettier updates

---------

Co-authored-by: Chad Ostrowski <[email protected]>
Co-authored-by: Elliot Voris <[email protected]>

* docs: change preflight wording to simulate transaction (#585)

* docs: change preflight wording to simulate transaction

A first attempt to resolve #478, there may be more work to be done.
I've used a few different phrases, depending on how the sentence
structure works, perhaps taking some liberties in the process.

I've also left alone the `releases` page for preview releases
older than 11. It seems unnecessary to rewrite the development
history too far into the past.

Refs: #478

* editorial on Update interacting-with-contracts.mdx

* added a couple "the"s Update state-expiration.mdx

* fix wording about ledger entries to be less confusing

* clearing up some other language surrounding footprints

---------

Co-authored-by: Bri Wylde <[email protected]>

* Create data-providers.mdx (#629)

* Create data-providers.mdx

Adding new page for data providers to cover indexers and block explorers

* Update data-providers.mdx

updated explanation text

* style: fixing some markdown styles and formatting

* Adding some more verbose descriptions and links

---------

Co-authored-by: Elliot Voris <[email protected]>

* docs: change sitewide wording from "preview release" to "release candidate" (#639)

* docs: update welcome page "preview release" > "release candidate"

* docs: change "preview release" > "release candidate" on releases page

* update payment challenge; add styles

* add clickable object to localhost:9000 example

* Update challenge-1-payment.mdx

* Squashed commit of the following:

commit b6a1a46
Author: Julian Martinez <[email protected]>
Date:   Wed Nov 8 10:10:12 2023 -0800

    add more context

---------

Signed-off-by: Satyam Zode <[email protected]>
Co-authored-by: George <[email protected]>
Co-authored-by: Elliot Voris <[email protected]>
Co-authored-by: Satyam Zode <[email protected]>
Co-authored-by: Satyam Zode <[email protected]>
Co-authored-by: Elizabeth <[email protected]>
Co-authored-by: Chad Ostrowski <[email protected]>
Co-authored-by: Elliot Voris <[email protected]>
Co-authored-by: Bri Wylde <[email protected]>
Co-authored-by: jcx120 <[email protected]>

* format image

* Squashed commit of the following:

commit 308444d
Author: Julian Martinez <[email protected]>
Date:   Wed Nov 8 14:55:06 2023 -0800

    update copy

commit ec06270
Author: Julian Martinez <[email protected]>
Date:   Wed Nov 8 12:34:07 2023 -0800

    add styles for lp

commit f7bbf2e
Author: Julian Martinez <[email protected]>
Date:   Wed Nov 8 12:13:49 2023 -0800

    add image styles

* update copy for production deployment

* caution -> tip

* add commas, add soroban-cli install to payment dapp

* fix broken link

* Squashed commit of the following:

commit 7de8a99
Author: Elliot Voris <[email protected]>
Date:   Thu Nov 9 15:47:49 2023 -0600

    docs: move data providers page out of sdks directory (#645)

commit 55e0a86
Author: Elliot Voris <[email protected]>
Date:   Tue Nov 7 11:40:20 2023 -0600

    docs: change sitewide wording from "preview release" to "release candidate" (#639)

    * docs: update welcome page "preview release" > "release candidate"

    * docs: change "preview release" > "release candidate" on releases page

commit 2ae1072
Author: jcx120 <[email protected]>
Date:   Tue Nov 7 08:48:50 2023 -0800

    Create data-providers.mdx (#629)

    * Create data-providers.mdx

    Adding new page for data providers to cover indexers and block explorers

    * Update data-providers.mdx

    updated explanation text

    * style: fixing some markdown styles and formatting

    * Adding some more verbose descriptions and links

    ---------

    Co-authored-by: Elliot Voris <[email protected]>

commit 0054011
Author: Elliot Voris <[email protected]>
Date:   Mon Nov 6 11:00:02 2023 -0600

    docs: change preflight wording to simulate transaction (#585)

    * docs: change preflight wording to simulate transaction

    A first attempt to resolve #478, there may be more work to be done.
    I've used a few different phrases, depending on how the sentence
    structure works, perhaps taking some liberties in the process.

    I've also left alone the `releases` page for preview releases
    older than 11. It seems unnecessary to rewrite the development
    history too far into the past.

    Refs: #478

    * editorial on Update interacting-with-contracts.mdx

    * added a couple "the"s Update state-expiration.mdx

    * fix wording about ledger entries to be less confusing

    * clearing up some other language surrounding footprints

    ---------

    Co-authored-by: Bri Wylde <[email protected]>

commit b9710ea
Author: Elizabeth <[email protected]>
Date:   Mon Nov 6 11:59:21 2023 -0500

    Update getting-started for 20.0.0-rc.4.1 cli (#636)

    * Updates to setup.mdx

    * Add CLI for testnet configuration to Setup

    * Updates to hello-world.mdx

    Reorder some code snippets to be after the description

    * Small edits in storing-data.mdx

    * Add high_expiration_watermark argument to bump in incrementor

    * Move deploy-to-testnet after hello-world to allow the user to interact with their contract on testnet

    * Add Optimizing Builds to hello-world

    * Update storing-data to remove sandbox interation

    * Add a deploy-incrementor-to-testnet step

    * Update position of Create an App

    * Apply suggestions from code review

    Co-authored-by: Chad Ostrowski <[email protected]>

    * Apply suggestions from code review

    Co-authored-by: Chad Ostrowski <[email protected]>

    * Update create-an-app.mdx

    * Fix typo

    * Add a mv command for .soroban dir when reorganizing to a multi-contract project

    * Apply mdx prettier updates

    * Update astro port in create-an-app.mdx

    * Apply suggestions from code review

    Co-authored-by: Elliot Voris <[email protected]>

    * Add .mdx to end of internal markdown links for docusaurus magic

    * Make sure there are new lines before and after ::: tags

    * Some additional edits/improvements

    * Mention that Freighter is available as a firefox add-on

    * Update the deploy-incrementor url

    * Apply prettier updates

    ---------

    Co-authored-by: Chad Ostrowski <[email protected]>
    Co-authored-by: Elliot Voris <[email protected]>

commit 61054dc
Author: Satyam Zode <[email protected]>
Date:   Fri Nov 3 20:26:27 2023 +0530

    Switch Ubuntu base image to 22.04 from 20.04 (#638)

    Signed-off-by: Satyam Zode <[email protected]>
    Co-authored-by: Satyam Zode <[email protected]>

commit d609113
Author: George <[email protected]>
Date:   Thu Nov 2 12:53:52 2023 -0700

    Upgrade `getLedgerEntries` examples to latest pre-stable releases of the SDKs (#635)

    Co-authored-by: Elliot Voris <[email protected]>

commit 228e4bf
Author: George <[email protected]>
Date:   Thu Nov 2 09:18:50 2023 -0700

    Update latest testnet-compatible JavaScript release versions (#634)

    * Update latest testnet-compatible JavaScript release versions

    * Add links to release notes for each version

* add SEO logic

---------

Signed-off-by: Satyam Zode <[email protected]>
Co-authored-by: Elliot Voris <[email protected]>
Co-authored-by: Alfonso Acosta <[email protected]>
Co-authored-by: George <[email protected]>
Co-authored-by: Bri Wylde <[email protected]>
Co-authored-by: Sapo-Dorado <[email protected]>
Co-authored-by: Julian Martinez <[email protected]>
Co-authored-by: Julian Martinez <[email protected]>
Co-authored-by: Satyam Zode <[email protected]>
Co-authored-by: Satyam Zode <[email protected]>
Co-authored-by: Elizabeth <[email protected]>
Co-authored-by: Chad Ostrowski <[email protected]>
Co-authored-by: Elliot Voris <[email protected]>
Co-authored-by: jcx120 <[email protected]>
  • Loading branch information
14 people committed Nov 20, 2023
1 parent 12c86b7 commit 098ae5d
Show file tree
Hide file tree
Showing 8 changed files with 401 additions and 132 deletions.
98 changes: 69 additions & 29 deletions dapps/dapp-challenges/challenge-0-crowdfund.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,42 @@ import CompleteStepButton from "../../src/components/atoms/complete-step-button"
import StartChallengeButton from "../../src/components/atoms/start-challenge-button";
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
import "./styles.css";

<head>
<title>Crowdfund Dapp Challenge.</title>
<meta charSet="utf-8" />
<meta
property="og:title"
content="Build and ship a Crowdfund Dapp on Soroban! Beat the Challenge!"
/>
<meta
property="og:description"
content="Build and ship a Crowdfund Dapp on Soroban! Beat the Challenge!"
/>
<link
rel="canonical"
href="https://soroban.stellar.org/dapps/dapp-challenges/challenge-0-crowdfund"
/>
</head>

<StartChallengeButton id={0} />

This challenge will guide you through the process of building and shipping a crowdfunding dapp on Stellar using Soroban. You will learn how to deploy smart contracts to Futurenet, and how to interact with them through a web frontend. In this context, the term "ship" refers to finalizing the development process of your dapp, ensuring that it functions as expected, and is accessible for user interaction and testing through a hosted frontend. However, it's crucial to clarify that despite its functionality, the dapp is not promoted nor intended for deployment in a production-level setting on Futurenet. The challenge is designed for educational purposes, helping you understand how a dapp can be built and interacted with, with further customization and development, it has the potential to evolve into a full-fledged, ready-to-use crowdfunding solution.
This challenge will guide you through the process of building and shipping a crowdfunding dapp on Stellar using Soroban. Unlike traditional crowdfunding applications, crowdfunding dapps (decentralized applications) provide the means for users to pledge funds to a crowdfund campaign directly from their digital wallets, without the need for intermediaries.

In this challenge, you will learn how to deploy smart contracts to Futurenet, and how to interact with them through a web frontend. In this context, the term "ship" refers to finalizing the development process of your dapp, ensuring that it functions as expected, and is accessible for user interaction and testing through a hosted frontend. However, it's crucial to clarify that despite its functionality, the dapp is not promoted nor intended for deployment in a production-level setting on Futurenet. The challenge is designed for educational purposes, helping you understand how a dapp can be built and interacted with, with further customization and development, it has the potential to evolve into a full-fledged, ready-to-use crowdfunding solution.

## Checkpoint 0: 📦 Install 📚

Start by installing the required dependencies.
Start by installing the required dependencies. You'll also want to be sure you have the most updated version of Rust installed.

Required:

- `soroban-cli alias`: [Download Soroban Alias](https://github.com/stellar/soroban-example-dapp#install-dependencies)
- `soroban-cli alias` (installed in the next step)
- `Node` v18: [Download Node](https://nodejs.org/en/download/)
- `Freighter Wallet`: [Freighter Wallet](https://freighter.app/)

First, clone the Soroban Dapps Challenge repo and check out the `crowdfund` branch:
First, clone the Soroban Dapps Challenge repo and check out the `crowdfund` branch, which contains the code for the crowdfund smart contract that powers this dapp:

```sh
git clone https://github.com/stellar/soroban-dapps-challenge.git
Expand All @@ -46,9 +66,11 @@ Then, install soroban-cli alias by running the following command:
cargo install_soroban
```

Soroban CLI is the command line interface to Soroban. It allows you to build, deploy, and interact with smart contracts, configure identities, generate key pairs, manage networks, and more. The soroban-cli (alias) that is used in this challenge is a pinned version of the soroban-cli that is used in the Soroban Dapps Challenge. This ensures that the challenge is reproducible and that all participants are using the same version of Soroban.

## Checkpoint 1: 🎬 Deploy Smart Contracts

Now that you have the Crowdfund branch checked out, it's time to deploy the smart contracts to a Sandbox environment.
Now that you have the Crowdfund branch checked out, it's time to deploy the smart contracts to a Sandbox environment. Deploying a smart contract in a production setting involves submitting the contract code to the blockchain's main network ( Mainnet ), where it becomes part of the chain's immutable ledger. Deploying smart contracts to a Sandbox environment simulates that process without actually affecting Mainnet. When you deploy the smart contracts, you'll instead deploy to Futurenet, a test network with more cutting-edge features that have not yet been implemented in the Mainnet.

In your terminal, load the contracts and initialize them in the Sandbox environment by running the following commands:

Expand All @@ -72,17 +94,19 @@ Done
...
```

:::caution
The contract ID is a unique identifier for a smart contract deployed on a blockchain. This contract ID is used to interact with and reference the smart contract, allowing users to invoke functions from the smart contract, send transactions, or otherwise interact with the smart contract's functionalities and data stored on the blockchain.

:::tip

Please, save your deployed contract ID, you will need it to complete the challenge.
Please, save your deployed contract ID. You will need it to complete the challenge.

:::

<ParentChallengeContractForm id={0} progress={1} />

## Checkpoint 2: 🤝 Connect the Frontend to the Backend

Now that you have the smart contracts deployed, it's time to check out the frontend of your dapp.
Now that you have deployed the smart contract, it's time to check out the frontend of your dapp. The frontend is the browser interface where contributors to your crowdfund campaign will connect their digital wallets and pledge assets to the campaign's cause.

First, start the development server:

Expand All @@ -94,15 +118,13 @@ Now open your browser and visit [http://localhost:3000](http://localhost:3000).

> Note: Follow the instructions below and ensure that you have funded your wallet address that you intend to use from browser, otherwise the dapp display will be blank and a 'Account not found' will be printed on browser's console only. If you are using Freighter, be sure that you have properly configured the Freighter Wallet by following the instructions [here](../guides/wallets#connect-a-wallet-freighter).
Now that you have the frontend running, it's time to connect it with your smart contracts.
Now that you have the frontend running, it's time to connect it with the backend, your smart contract, that defines the rules and logic of the crowdfund campaign, including the function for accepting contributions. If you want to dig into the specifics of the contract, take a look at the video walkthrough of the contract code [here](https://youtu.be/vTz0CQYnMRQ?t=260&feature=shared).

You will need to add some Futurenet network lumens to your wallet to interact with the dapp. Visit https://laboratory.stellar.org/#account-creator?network=futurenet, and follow the instructions to create and or fund an account on Futurenet.

> Note: These are test lumens for use with Futurenet and cannot be used on Mainnet
You will need to add some Futurenet network lumens to your wallet to interact with the dapp. Visit https://laboratory.stellar.org/#account-creator?network=futurenet, and follow the instructions to create and or fund an account on Futurenet. Remember, these are test lumens for use on Futurenet and cannot be used on Mainnet.

## Checkpoint 3: 🌟 Powering the Campaign

Fuel the vision! In this step, you will learn how to mint tokens and fund the crowdfunding campaign.
Fuel the vision! In this step, you will learn how to mint tokens and fund the crowdfunding campaign. Minting tokens in a crowdfund dapp, while not always required, serves as a bootstrapping mechanism for the campaign, allowing the campaign to be funded with the minted tokens.

<Tabs defaultValue="mint" values={[
{label: '🏦 Mint Tokens', value: 'mint'},
Expand All @@ -123,7 +145,7 @@ Fuel the vision! In this step, you will learn how to mint tokens and fund the cr

Open the dapp frontend and click on the "Mint 100 ABND" button.

<img src={mintToken} width="40%" />
<img src={mintToken} className="image-style" />

</TabItem>

Expand All @@ -133,7 +155,7 @@ Open the dapp frontend and click on the "Mint 100 ABND" button.

You should see a popup from Freighter asking you to sign the transaction. Click on "Approve" and wait for the transaction to be confirmed.

<img src={approveTokenMint} width="40%" />
<img src={approveTokenMint} className="image-style" />

</TabItem>

Expand All @@ -143,7 +165,7 @@ You should see a popup from Freighter asking you to sign the transaction. Click

You should see an updated balance in the pledge component.

<img src={updatedBalance} width="40%" />
<img src={updatedBalance} className="image-style" />

</TabItem>

Expand All @@ -165,7 +187,7 @@ You should see an updated balance in the pledge component.

Now that you have your wallet set up, let's fund the crowdfunding campaign. Open the frontend and click on the "Back this project" button. You should see a popup from Freighter asking you to sign the transaction.

<img src={back100} width="40%" />
<img src={back100} className="image-style" />

</TabItem>

Expand All @@ -175,7 +197,7 @@ Now that you have your wallet set up, let's fund the crowdfunding campaign. Open

Click on "Approve" and wait for the transaction to be confirmed. Once the transaction is confirmed, you should see a success message.

<img src={success} width="40%" />
<img src={success} className="image-style" />

</TabItem>

Expand All @@ -185,7 +207,7 @@ Click on "Approve" and wait for the transaction to be confirmed. Once the transa

You should see an updated balance reflecting the amount you have pledged in the pledge component.

<img src={backedResult} width="40%" />
<img src={backedResult} className="image-style" />

</TabItem>

Expand Down Expand Up @@ -221,24 +243,38 @@ rm -rf target

>Note: You can build this directory again by running `soroban contract build` in the `contracts/abundance` directory.
Next, you will use the Vercel cli to complete your deployment.
Then, remove any existing `.vercel` directory in your project to ensure that you are starting with a clean slate:

Run the following command to deploy your dapp:
```bash
rm -rf .vercel
```

```sh
npx vercel --prod
Then, run the following command to deploy your example dapp:

```bash
vercel --prod
```

Vercel will prompt you to link your local project to a new Vercel project.
Follow the answers to the prompts below to ensure that your local project is correctly linked to a new Vercel project:

```bash
? Set up “~/Documents/GitHub/test/soroban-dapps-challenge”? [Y/n] y
? Which scope should contain your project? <VERCEL_UNAME>
? Link to existing project? [y/N] n
? What’s your project’s name? <PROJECT_NAME>
? In which directory is your code located? ./
```

Then, continue through the prompts (you will not need to modify any settings) until you reach the completion prompt similar to the following:

```sh
Vercel CLI 30.1.1
🔗 Linked to julian-dev28/soroban-example-dapp (created .vercel)
🔍 Inspect: https://vercel.com/julian-dev28/soroban-example-dapp/C1YZVQSqh6WcyR1uvxz8q2tW1tjD [2s]
✅ Production: https://soroban-example-dapp-rho.vercel.app [42s]
```

:::caution
:::tip

Please, save your production url, you will need it to complete the challenge.

Expand All @@ -248,10 +284,14 @@ You can now visit the preview link to see your deployed dapp! 🎉

<img src={deployedDApp} width="90%" />

Remember, you must add Futurenet network lumens to your Freighter wallet to interact with the deployed example dapp. Visit https://laboratory.stellar.org/#account-creator?network=futurenet, and follow the instructions to create your Freighter account on Futurenet.


## Checkpoint 5: 💪 Pass the Challenge!

Submit your public url to the challenge form and proceed to the next step to check your work.
Now it's time to submit your work!

Submit your `Production` URL from the previous step into the challenge form to pass the challenge!

<ParentChallengeForm id={0} />

Expand All @@ -265,15 +305,15 @@ Join [our Community in Discord](https://discord.gg/stellardev) in case you have

## Checkpoint 6: ✅ Check your work!

In order to successfully complete this challenge, your work needs to be checked. Please, follow this steps:
In order to successfully complete this challenge, your work needs to be checked. Please, follow the steps below:

1. Fork [the challenge repository](https://github.com/stellar/soroban-dapps-challenge/fork).
2. Fill `crowdfund/challenge/output.txt` file with your wallet address. Filled file should look like:
2. Fill the `crowdfund/challenge/output.txt` file with your wallet address. The filled file should look as follows:

```sh
Public Key: GBSXUXZSA2VEXN5VGOWE5ODAJLC575JCMWRJ4FFRDWSTRCJ123456789
```
3. Create a Pull Request to the `stellar/soroban-dapps-challenge/crowdfund` branch. When the PR will be created, CI actions will check the `crowdfund/challenge/output.txt` file data and update your progress.
3. Create a Pull Request to the `stellar/soroban-dapps-challenge/crowdfund` branch. When the PR is created, CI actions will check the `crowdfund/challenge/output.txt` file data and update your progress.
4. Wait for the CI/CD pipeline results.
5. Fix errors if present:

Expand Down
Loading

0 comments on commit 098ae5d

Please sign in to comment.