diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e68277a4..edde1998 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,6 +4,10 @@ We are using the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) standard for commit messages. This allows us to automatically generate release notes and version numbers. We do this via [Python Semantic Release](https://python-semantic-release.readthedocs.io/en/latest/) and [GitHub actions](.github/workflows/cd.yaml). +## Guiding Principles + +AlgoKit development is done within the [AlgoKit Guiding Principles](./docs/algokit.md#guiding-principles). + ## Setup (AlgoKit CLI development) ### Initial setup @@ -78,7 +82,7 @@ We are using the [Conventional Commits](https://www.conventionalcommits.org/en/v Markdown documentation can be found within the docs directory of the repo, there is a mixture of handwritten documentation and autogenerated documentation for the CLI tool itself. To autogenerate the CLI documentation from the click source execute `poe docs`, note: this command won't work on Windows. -The CLI docs are generated using Sphinx, and its configuration can be found in `docs\sphinx`. The generated Markdown output is post processed to add a Table of Contents and top level title and the final Markdown is output to `docs\cli`. The commands to achieve this are defined in pyproject.toml under `[tool.poe.tasks]` +The CLI docs are generated using Sphinx, and its configuration can be found in `docs\sphinx`. The generated Markdown output is post processed to add a Table of Contents and top level title and the final Markdown is output to `docs\cli`. The commands to achieve this are defined in `pyproject.toml` under `[tool.poe.tasks]` ### Libraries and Tools diff --git a/README.md b/README.md index 1a5f8986..3ba6330a 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,23 @@ # AlgoKit CLI -The Algorand AlgoKit CLI is the one-stop shop tool for developers building on the Algorand network. +The Algorand AlgoKit CLI is the one-stop shop tool for developers building on the [Algorand network](https://www.algorand.com/). AlgoKit gets developers of all levels up and running with a familiar, fun and productive development environment in minutes. The goal of AlgoKit is to help developers build and launch secure, automated production-ready applications rapidly. -[Install AlgoKit](#install) | [Documentation](./docs/algokit.md) +[Install AlgoKit](#install) | [Quick Start Tutorial](./docs/tutorials/intro.md) | [Documentation](./docs/algokit.md) -## Capabilities +## What is AlgoKit? + +[model image] + +AlgoKit compromises of a number of components that make it the one-stop shop tool for developers building on the [Algorand network](https://www.algorand.com/): + +- A commandline Interface (CLI) so you can quickly access AlgoKit capabilities +- A template library to get you started faster +- A set of framework libraries so you can build faster +- A local isolated Algorand network so you can simulate real transactions and workloads + +## What can AlgoKit help me do? The set of capabilities supported by AlgoKit will evolve over time, but currently includes: @@ -20,24 +31,11 @@ Future capabilities are likely to include: - Quickly deploy [standardised](https://github.com/algorandfoundation/ARCs/#arcs-algorand-requests-for-comments), audited smart contracts - Building and deploying Algorand dApps -## Guiding Principles - -Algorand AlgoKit is guided by the following solution principles which flow through to the applications created by developers. - -1. **Cohesive developer tool suite**: Using AlgoKit should feel professional and cohesive, like it was designed to work together, for the developer; not against them. Developers are guided towards delivering end-to-end, high quality outcomes on MainNet so they and Algorand are more likely to be successful. -2. **Seamless onramp**: New developers have a seamless experience to get started and they are guided into a pit of success with best practices, supported by great training collateral; you should be able to go from nothing to debugging code in 5 minutes. -3. **Leverage existing ecosystem**: AlgoKit functionality gets into the hands of Algorand developers quickly by building on top of the existing ecosystem wherever possible and aligned to these principles. -4. **Sustainable**: AlgoKit should be built in a flexible fashion with long-term maintenance in mind. Updates to latest patches in dependencies, Algorand protocol development updates, and community contributions and feedback will all feed in to the evolution of the software. -5. **Secure by default**: Include defaults, patterns and tooling that help developers write secure code and reduce the likelihood of security incidents in the Algorand ecosystem. This solution should help Algorand be the most secure Blockchain ecosystem. -6. **Extensible**: Be extensible for community contribution rather than stifling innovation, bottle-necking all changes through the Algorand Foundation and preventing the opportunity for other ecosystems being represented (e.g. Go, Rust, etc.). This helps make developers feel welcome and is part of the developer experience, plus it makes it easier to add features sustainably. -7. **Meet developers where they are**: Make Blockchain development mainstream by giving all developers an idiomatic development experience in the operating system, IDE and language they are comfortable with so they can dive in quickly and have less they need to learn before being productive. -8. **Modular components**: Solution components should be modular and loosely coupled to facilitate efficient parallel development by small, effective teams, reduced architectural complexity and allowing developers to pick and choose the specific tools and capabilities they want to use based on their needs and what they are comfortable with. - ## Is this for me? The target audience for this tool is software developers building applications on the Algorand network. A working knowledge of using a command line interfaces and experience using the supported programming languages is assumed. -## Contributing +## How can I contribute? This is an open source project managed by the Algorand Foundation. See the [contributing page](CONTRIBUTING.MD) to learn about making improvements to the CLI tool itself, including developer setup instructions. @@ -86,26 +84,27 @@ AlgoKit can be installed using OS specific package managers, or using the python 2. Restart the terminal to ensure Python and pip are available on the path > **Note** - > Windows has a feature called **App Execution Aliases** that provides redirects for the Python command that guide users to the - Windows Store. Unfortunately these aliases can prevent normal execution of Python if Python is installed via other means, to disable them - search for **Manage app execution aliases** from the start menu, and then turn off entries listed as - **App Installer python.exe** or **App Installer python3.exe**. + > Windows has a feature called **App Execution Aliases** that provides redirects for the Python command that guide users to the + > Windows Store. Unfortunately these aliases can prevent normal execution of Python if Python is installed via other means, to disable them + > search for **Manage app execution aliases** from the start menu, and then turn off entries listed as + > **App Installer python.exe** or **App Installer python3.exe**. - 3. Install pipx: + 3. Install pipx: ``` pip install --user pipx python -m pipx ensurepath ``` - 4. Install AlgoKit via pipx: `python -m pipx install algokit` + 4. Install AlgoKit via pipx: `python -m pipx install algokit` 5. Restart the terminal to ensure AlgoKit is available on the path - + 3. [Verify installation](#verify-installation) -### Maintenance - Some useful commands for updating or removing AlgoKit in the future. - - To update AlgoKit: `pipx upgrade algokit` - - To remove AlgoKit: `pipx uninstall algokit` +### Maintenance + +Some useful commands for updating or removing AlgoKit in the future. +- To update AlgoKit: `pipx upgrade algokit` +- To remove AlgoKit: `pipx uninstall algokit` ## Install AlgoKit on Mac @@ -117,17 +116,19 @@ AlgoKit can be installed using OS specific package managers, or using the python - [Brew](https://docs.brew.sh/Installation) - [Git](https://github.com/git-guides/install-git#install-git-on-mac) should already be available if brew is installed - [Docker](https://docs.docker.com/desktop/install/mac-install/), (or `brew install --cask docker`) - > **Note** - > Docker requires MacOS 11+ + > **Note** + > Docker requires MacOS 11+ -2. Install using Brew `brew install algorandfoundation/tap/algokit` +2. Install using Brew `brew install algorandfoundation/tap/algokit` 3. Restart the terminal to ensure AlgoKit is available on the path 4. [Verify installation](#verify-installation) -### Maintenance - Some useful commands for updating or removing AlgoKit in the future. - - To update AlgoKit: `brew upgrade algokit` - - To remove AlgoKit: `brew uninstall algokit` +### Maintenance + +Some useful commands for updating or removing AlgoKit in the future. + +- To update AlgoKit: `brew upgrade algokit` +- To remove AlgoKit: `brew uninstall algokit` ## Install AlgoKit on Linux @@ -157,11 +158,12 @@ AlgoKit can be installed using OS specific package managers, or using the python 3. Restart the terminal to ensure AlgoKit is available on the path 4. [Verify installation](#verify-installation) -### Maintenance - Some useful commands for updating or removing AlgoKit in the future. - - To update AlgoKit: `pipx upgrade algokit` - - To remove AlgoKit: `pipx uninstall algokit` +### Maintenance + +Some useful commands for updating or removing AlgoKit in the future. +- To update AlgoKit: `pipx upgrade algokit` +- To remove AlgoKit: `pipx uninstall algokit` ## Verify installation diff --git a/docs/algokit.md b/docs/algokit.md index 943600e7..6a070902 100644 --- a/docs/algokit.md +++ b/docs/algokit.md @@ -14,7 +14,7 @@ For details on how to use individual features see the following - [Init](./features/init.md) - Quickly initialize new projects using official Algorand Templates or community provided templates. - [LocalNet](./features/localnet.md) - Manage a locally sandboxed private Algorand network. -## AlgoKit CLI options +## Common AlgoKit CLI options AlgoKit has a number of global options that can impact all commands. Note: these global options must be appended to `algokit` and appear before a command, e.g. `algokit -v localnet start`, but not `algokit localnet start -v`. The exception to this is `-h`, which can be appended to any command or sub-command to see contextual help information. @@ -24,3 +24,23 @@ AlgoKit has a number of global options that can impact all commands. Note: these - `--skip-version-check` Skips updated AlgoKit version checking and prompting for that execution, this can also be disabled [permanently on a given machine](./cli/index.md#version-prompt) with `algokit config version-prompt disable`. See also the [AlgoKit CLI Reference](./cli/index.md), which details every command, sub-command and option. + +## AlgoKit Tutorials + +The following tutorials guide you through various scenarios: + +- [AlgoKit quick start](./tutorials/intro.md) +- [Production-ready smart contracts](./tutorials/smart-contracts.md) + +## Guiding Principles + +Algorand AlgoKit is guided by the following solution principles which flow through to the applications created by developers. + +1. **Cohesive developer tool suite**: Using AlgoKit should feel professional and cohesive, like it was designed to work together, for the developer; not against them. Developers are guided towards delivering end-to-end, high quality outcomes on MainNet so they and Algorand are more likely to be successful. +2. **Seamless onramp**: New developers have a seamless experience to get started and they are guided into a pit of success with best practices, supported by great training collateral; you should be able to go from nothing to debugging code in 5 minutes. +3. **Leverage existing ecosystem**: AlgoKit functionality gets into the hands of Algorand developers quickly by building on top of the existing ecosystem wherever possible and aligned to these principles. +4. **Sustainable**: AlgoKit should be built in a flexible fashion with long-term maintenance in mind. Updates to latest patches in dependencies, Algorand protocol development updates, and community contributions and feedback will all feed in to the evolution of the software. +5. **Secure by default**: Include defaults, patterns and tooling that help developers write secure code and reduce the likelihood of security incidents in the Algorand ecosystem. This solution should help Algorand be the most secure Blockchain ecosystem. +6. **Extensible**: Be extensible for community contribution rather than stifling innovation, bottle-necking all changes through the Algorand Foundation and preventing the opportunity for other ecosystems being represented (e.g. Go, Rust, etc.). This helps make developers feel welcome and is part of the developer experience, plus it makes it easier to add features sustainably. +7. **Meet developers where they are**: Make Blockchain development mainstream by giving all developers an idiomatic development experience in the operating system, IDE and language they are comfortable with so they can dive in quickly and have less they need to learn before being productive. +8. **Modular components**: Solution components should be modular and loosely coupled to facilitate efficient parallel development by small, effective teams, reduced architectural complexity and allowing developers to pick and choose the specific tools and capabilities they want to use based on their needs and what they are comfortable with. diff --git a/docs/architecture-decisions/2022-11-14_sandbox-approach.md b/docs/architecture-decisions/2022-11-14_sandbox-approach.md index 7761608a..5b63e3c6 100644 --- a/docs/architecture-decisions/2022-11-14_sandbox-approach.md +++ b/docs/architecture-decisions/2022-11-14_sandbox-approach.md @@ -23,7 +23,7 @@ In order for AlgoKit to facilitate a productive development experience it needs ## Principles -- **[AlgoKit Guiding Principles](../../README.md#Guiding-Principles)** - specifically Seamless onramp, Leverage existing ecosystem, Meet devs where they are +- **[AlgoKit Guiding Principles](../../docs/algokit.md#Guiding-Principles)** - specifically Seamless onramp, Leverage existing ecosystem, Meet devs where they are - **Lightweight** - the solution should have as low an impact as possible on resources on the developers machine - **Fast** - the solution should start quickly, which makes for a nicer experience locally and also allows it to be used for continuous integration automation testing diff --git a/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md b/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md index 7458d798..329d4eb2 100644 --- a/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md +++ b/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md @@ -41,7 +41,7 @@ This decision record covers the different options and high level design for how ## Principles -- [AlgoKit Guiding Principles](../../README.md#Guiding-Principles) - specifically: +- [AlgoKit Guiding Principles](../../docs/algokit.md#Guiding-Principles) - specifically: - **Cohesive developer tool suite** - **Seamless onramp** - **Secure by default** diff --git a/docs/cli/index.md b/docs/cli/index.md index 1c85ce37..f7507631 100644 --- a/docs/cli/index.md +++ b/docs/cli/index.md @@ -64,6 +64,8 @@ AlgoKit is your one-stop shop to develop applications on the Algorand blockchain. +If you are getting started, please see the quick start tutorial: [https://bit.ly/algokit-intro-tutorial](https://bit.ly/algokit-intro-tutorial). + ```shell algokit [OPTIONS] COMMAND [ARGS]... ``` @@ -88,7 +90,8 @@ Skip version checking and prompting. ## bootstrap -Bootstrap AlgoKit project dependencies. +Expedited initial setup for any developer by bootstrapping dependencies and other +key development environment setup activities. ```shell algokit bootstrap [OPTIONS] COMMAND [ARGS]... diff --git a/docs/imgs/algokit-intro-video-thumbnail.jpg b/docs/imgs/algokit-intro-video-thumbnail.jpg new file mode 100644 index 00000000..aaeb7e96 Binary files /dev/null and b/docs/imgs/algokit-intro-video-thumbnail.jpg differ diff --git a/docs/imgs/algokitartifacts.png b/docs/imgs/algokitartifacts.png new file mode 100644 index 00000000..9e9a34db Binary files /dev/null and b/docs/imgs/algokitartifacts.png differ diff --git a/docs/imgs/algokitdemo.png b/docs/imgs/algokitdemo.png new file mode 100644 index 00000000..dd88d909 Binary files /dev/null and b/docs/imgs/algokitdemo.png differ diff --git a/docs/imgs/algokitplayground.png b/docs/imgs/algokitplayground.png new file mode 100644 index 00000000..494de2c5 Binary files /dev/null and b/docs/imgs/algokitplayground.png differ diff --git a/docs/imgs/dappflow.png b/docs/imgs/dappflow.png new file mode 100644 index 00000000..2b8ee68d Binary files /dev/null and b/docs/imgs/dappflow.png differ diff --git a/docs/imgs/dappflow1.png b/docs/imgs/dappflow1.png new file mode 100644 index 00000000..2f2ccb38 Binary files /dev/null and b/docs/imgs/dappflow1.png differ diff --git a/docs/imgs/dappflow2.png b/docs/imgs/dappflow2.png new file mode 100644 index 00000000..4efe6c9d Binary files /dev/null and b/docs/imgs/dappflow2.png differ diff --git a/docs/imgs/dappflow3.png b/docs/imgs/dappflow3.png new file mode 100644 index 00000000..4385a104 Binary files /dev/null and b/docs/imgs/dappflow3.png differ diff --git a/docs/imgs/dappflow4.png b/docs/imgs/dappflow4.png new file mode 100644 index 00000000..96fb0102 Binary files /dev/null and b/docs/imgs/dappflow4.png differ diff --git a/docs/imgs/dappflow5.png b/docs/imgs/dappflow5.png new file mode 100644 index 00000000..64d409c6 Binary files /dev/null and b/docs/imgs/dappflow5.png differ diff --git a/docs/imgs/dappflow6.png b/docs/imgs/dappflow6.png new file mode 100644 index 00000000..0030e3b5 Binary files /dev/null and b/docs/imgs/dappflow6.png differ diff --git a/docs/imgs/dappflow_transaction.png b/docs/imgs/dappflow_transaction.png new file mode 100644 index 00000000..3eda5de3 Binary files /dev/null and b/docs/imgs/dappflow_transaction.png differ diff --git a/docs/imgs/localnet.png b/docs/imgs/localnet.png new file mode 100644 index 00000000..af48b464 Binary files /dev/null and b/docs/imgs/localnet.png differ diff --git a/docs/tutorials/intro.md b/docs/tutorials/intro.md new file mode 100644 index 00000000..56e5007f --- /dev/null +++ b/docs/tutorials/intro.md @@ -0,0 +1,165 @@ +AlgoKit Quick Start Tutorial + +AlgoKit is the primary tool used by the Algorand community to develop smart contracts on the Algorand blockchain. It provides the capabilities to develop, test and deploy Algorand smart contracts within minutes! This guide is intended to help you setup AlgoKit and to start developing your application. + +# Quick start videos + +If you prefer videos, take a look at this 10 minute guide to getting started. + +[![Learn How to Build on Algorand in 10 Minutes](../imgs/algokit-intro-video-thumbnail.jpg)](https://www.youtube.com/embed/dow6U8DxOGc) + +Detailed video guides for both [Windows](https://www.youtube.com/embed/22RvINnZsRo) and [Mac](https://www.youtube.com/embed/zsurtpCGmgE) are also available. + +# Prequisites + +This guide presents installing AlgoKit using an OS agnostic procedure. For OS specific instructions take a look that the [AlgoKit install](https://github.com/algorandfoundation/algokit-cli/blob/main/README.md#install) guide. + +Using this procedure requires the the following components be installed already + +- [Python 3.10](https://www.python.org/downloads/) or higher +- [PipX](https://pypa.github.io/pipx/#on-linux-install-via-pip-requires-pip-190-or-later) +- [Git](https://github.com/git-guides/install-git#install-git) +- [Docker](https://docs.docker.com/desktop/install/mac-install/) +- [VSCode](https://code.visualstudio.com/download) + +# Install AlgoKit + +To install AlgoKit, run the following command from a terminal. + +```shell +pipx install algokit +``` + +After the installation completes, **restart the terminal**. + +For more detailed installation documentation, see the [official installation guide](https://github.com/algorandfoundation/algokit-cli#install). + +# Verify the Installation + +To verify AlgoKit Installed correctly run the following. + +```shell +algokit --version +``` + +Output similar to the following should be displayed: + +```shell +algokit, version 0.5.0 +``` + +# Start a LocalNet + +AlgoKit supports using a [local version of the Algorand blockchain](../features/localnet.md). To start an instance of this LocalNet run the following command from the terminal: + +```shell +algokit localnet start +``` + +This should start an instance of the LocalNet within docker. If you open the Docker Desktop application you should something similar to the following: + +![Docker Desktop LocalNet Instance](../imgs/localnet.png) + +# Create an AlgoKit project + +Now that AlgoKit is installed, you can rapidly create a new project to get started quickly. This can be done by running: + +```shell +algokit init +``` + +This will launch a guided menu system to create a specific project tailored to your needs. You will first be prompted to select a specific template. The templates are basic starter applications for various Algorand development scenarios. To read more about templates checkout AlgoKit detailed documentation. For now, use the arrow keys to select the `playground` template, which is a lightweight starting point for learning and experimentation. + +Next, you will be prompted for the name of your project. Finally, select the default value for the rest of the prompts (enter). + +Once finished, (if you have it installed) VS Code should automatically be opened with the initialised project and you will be prompted to install appropriate VS Code extensions. This starter app will contain one smart contract (built using the [Beaker](https://beaker.algo.xyz/) smart contract development framework) named `helloworld.py`, in the `hello_world` folder, with one method (`hello`) that takes a `String` and returns a `String`. + +![AlgoKit Playground Contract](../imgs/algokitplayground.png) + +# Run the Demo Application + +Once the playground project is created, you will notice in the `hello_world` folder a file named `demo.py` which is a simple example of using AlgoKit to deploy and make a call to the `helloworld.py` smart contract on the LocalNet instance started earlier. + +![AlgoKit Playground Demo](../imgs/algokitdemo.png) + +Right clicking on this file and selecting `Run Python File in Terminal` will deploy the `HelloWorldApp` smart contract and then call it passing the parameter `name` with a value of `Beaker`. Alternatively, you can hit F5 (or whatever keyboard shortcut is set in VS Code for running the debugger) while you are viewing the `helloworld.py` file and it will: + +1. Start LocalNet +2. Build the smart contract +3. Deploy and call the smart contract (`demo.py`) + +This should produce something similiar to the following in the VSCode terminal. + +```shell +(playground-py3.11) User@Algo-User-MBP myalgokit project % "/Users/user/code/algokit/myalgokit pro +ject/.venv/bin/python" "/Users/user/code/algokit/myalgokit project/playground/hello_world/demo.py" +Deployed app in txid SBNIJYZUOXVPXDFJHAVDDCO5TQ4WZ7P37QOOQM6CSVSMIURETHNQ + App ID: 11 + Address: 377KDIVHB7K2LFFJIPUPQFWJGVD36MAP4EI6Y2HAGRAW6JPK4MDUBC3YVY + +Hello, Beaker +``` + +The App ID of of the deployed contract and its Algorand address is displayed, followed by the message returned from the smart contract call (`Hello, Beaker`). + +At this point you have deployed a simple contract to an Algorand network and called it successfully! + +Additionally, you can find the native TEAL smart contract code and the appropriate smart contract manifest JSON files have been output to the `artifacts` folder. + +![AlgoKit Playground Demo](../imgs/algokitartifacts.png) + +Running the `build.py` python file will also generate these artifacts without deploying. These files can be used by tools like [Dappflow](https://dappflow.org/), [goal](https://developer.algorand.org/docs/clis/goal/goal/), etc. to deploy your smart contract to the various Algorand networks. + +# Using Dappflow + +Dappflow is a web-based user interface that let's you visualise accounts, transactions, assets and applications on an Algorand network and also provides ability to deploy and call smart contracts. This works for TestNet, MainNet and also LocalNet. Furthermore, you can also create and fund accounts on LocalNet. While AlgoKit surfaces both a programming interface and a command line interface for interacting with Algorand, it also allows you to quickly open Dappflow so you can see what's happening visually. + +Dappflow can be launched from AlgoKit by running the following command from the VS Code terminal. + +```shell +algokit explore +``` + +By default it will open Dappflow to point to LocalNet (It will be displayed as `sandnet-v1` in the upper left hand corner.), but you can pass in parameters to point it to TestNet and MainNet too. + +This command will launch your default web browser and load the Dappflow web application. + +**Note:** If you are using Safari, then it won't work against LocalNet and you will need to open it in a different browser. + +![AlgoKit Dappflow](../imgs/dappflow1.png) + +## Create test account + +To issue commands against the LocalNet network you need an account with ALGOs in it. Dappflow lets you easily create one. + +Select `Dev Wallets` from the left menu and click on the `Create wallet` button. This will create an account on the LocalNet and fund it with 100 Algos that can be used to test with. + +![AlgoKit Dappflow](../imgs/dappflow2.png) + +In the bottom left hand corner of the menu, select `Connect wallet` and you will be prompted with several wallet choices. Choose the `Dev Wallet` option. This will connect the account you just created to Dappflow so you can use that account for signing transactions from the Dappflow user interface. + +## Deploy the Hello World application + +To deploy the built Beaker smart contract application, select the `Beaker studio` menu and click on the import beaker app. Select `File` and `Upload file`, browse to the artifacts created in the previous section of this guide. Select the `application.json` manifest file. This will load the specific manifest file for the Hello World sample application. + +![AlgoKit Dappflow](../imgs/dappflow3.png) + +To deploy this application again, select the `Create app` button followed by the `Create` button from the popup. You should get a `Transaction successful` message with the option to view the specific transaction in the explorer. Close out the popup and then scroll down to the `ABI` section of the page. The `hello` method should be displayed with an execute button beside it. + +![AlgoKit Dappflow](../imgs/dappflow4.png) + +Click on the Execute button and a popup will be displayed allowing you to enter the parameter that we defined in the `HelloWorldApp` smart contract. + +![AlgoKit Dappflow](../imgs/dappflow5.png) + +Enter a string in the parameter and click on `Execute`. You should get get a confirmation that the method executed properly and what the smart contract returned. + +![AlgoKit Dappflow](../imgs/dappflow6.png) + +You have now successfully deployed and executed a smart contract method call using Dappflow! + +# Next steps + +- To learn more about AlgoKit and what you can do with it, checkout the [AlgoKit documentation](../algokit.md). +- To learn more about Beaker, take a look at the [Beaker documentation](https://beaker.algo.xyz/). +- More information on Algorand smart contracts is also available in the [smart contract documentation](https://developer.algorand.org/docs/get-details/dapps/smart-contracts/). diff --git a/docs/tutorials/smart-contracts.md b/docs/tutorials/smart-contracts.md new file mode 100644 index 00000000..786587a3 --- /dev/null +++ b/docs/tutorials/smart-contracts.md @@ -0,0 +1,14 @@ +# Smart Contract Tutorial + +_TODO_ + +[mental model image] + +- Lifecycle +- Deploy-time immutability and permanence controls +- Deployment automation +- ... + +## Next steps + +- Read the architecture decision diff --git a/src/algokit/cli/__init__.py b/src/algokit/cli/__init__.py index d7ff5a9f..6a433508 100644 --- a/src/algokit/cli/__init__.py +++ b/src/algokit/cli/__init__.py @@ -14,7 +14,6 @@ @click.group( - help="AlgoKit is your one-stop shop to develop applications on the Algorand blockchain.", context_settings={ "help_option_names": ["-h", "--help"], "max_content_width": 120, @@ -25,6 +24,11 @@ @color_option @skip_version_check_option def algokit(*, skip_version_check: bool) -> None: + """ + AlgoKit is your one-stop shop to develop applications on the Algorand blockchain. + + If you are getting started, please see the quick start tutorial: https://bit.ly/algokit-intro-tutorial. + """ if not skip_version_check: do_version_prompt() diff --git a/src/algokit/cli/bootstrap.py b/src/algokit/cli/bootstrap.py index bc03ab7e..443b79d7 100644 --- a/src/algokit/cli/bootstrap.py +++ b/src/algokit/cli/bootstrap.py @@ -8,9 +8,12 @@ logger = logging.getLogger(__name__) -@click.group("bootstrap", short_help="Bootstrap AlgoKit project dependencies.") +@click.group("bootstrap", short_help="Bootstrap local dependencies in an AlgoKit project.") def bootstrap_group() -> None: - pass + """ + Expedited initial setup for any developer by bootstrapping dependencies and other + key development environment setup activities. + """ @bootstrap_group.command( diff --git a/tests/bootstrap/test_bootstrap.test_bootstrap_help.approved.txt b/tests/bootstrap/test_bootstrap.test_bootstrap_help.approved.txt index b6e8b77a..8b264712 100644 --- a/tests/bootstrap/test_bootstrap.test_bootstrap_help.approved.txt +++ b/tests/bootstrap/test_bootstrap.test_bootstrap_help.approved.txt @@ -1,5 +1,8 @@ Usage: algokit bootstrap [OPTIONS] COMMAND [ARGS]... + Expedited initial setup for any developer by bootstrapping dependencies and + other key development environment setup activities. + Options: -h, --help Show this message and exit. diff --git a/tests/test_root.test_help.approved.txt b/tests/test_root.test_help.approved.txt index 0a23eacb..ab5ef3ec 100644 --- a/tests/test_root.test_help.approved.txt +++ b/tests/test_root.test_help.approved.txt @@ -3,6 +3,9 @@ Usage: algokit [OPTIONS] COMMAND [ARGS]... AlgoKit is your one-stop shop to develop applications on the Algorand blockchain. + If you are getting started, please see the quick start tutorial: + https://bit.ly/algokit-intro-tutorial. + Options: --version Show the version and exit. -v, --verbose Enable logging of DEBUG messages to the console. @@ -11,7 +14,7 @@ Options: -h, --help Show this message and exit. Commands: - bootstrap Bootstrap AlgoKit project dependencies. + bootstrap Bootstrap local dependencies in an AlgoKit project. completions Install and Uninstall AlgoKit shell integration. config Configure AlgoKit options. doctor Run the Algorand doctor CLI.