You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: examples/production/README.md
+36-32
Original file line number
Diff line number
Diff line change
@@ -16,15 +16,18 @@ This project has been generated using AlgoKit. See below for default getting sta
16
16
### Initial Setup
17
17
18
18
#### 1. Clone the Repository
19
+
19
20
Start by cloning this repository to your local machine.
20
21
21
22
#### 2. Install Pre-requisites
23
+
22
24
Ensure the following pre-requisites are installed and properly configured:
23
25
24
26
-**Docker**: Required for running a local Algorand network.
25
27
-**AlgoKit CLI**: Essential for project setup and operations. Verify installation with `algokit --version`, expecting `2.6.0` or later.
26
28
27
29
#### 3. Bootstrap Your Local Environment
30
+
28
31
Run the following commands within the project folder:
29
32
30
33
-**Setup Project**: Execute `algokit project bootstrap all` to install dependencies and setup npm dependencies.
@@ -34,14 +37,16 @@ Run the following commands within the project folder:
34
37
### Development Workflow
35
38
36
39
#### Terminal
40
+
37
41
Directly manage and interact with your project using AlgoKit commands:
38
42
39
43
1.**Build Contracts**: `algokit project run build` compiles all smart contracts. You can also specify a specific contract by passing the name of the contract folder as an extra argument.
40
-
For example: `algokit project run build -- hello_world` will only build the `hello_world` contract.
44
+
For example: `algokit project run build -- hello_world` will only build the `hello_world` contract.
41
45
2.**Deploy**: Use `algokit project deploy localnet` to deploy contracts to the local network. You can also specify a specific contract by passing the name of the contract folder as an extra argument.
42
-
For example: `algokit project deploy localnet -- hello_world` will only deploy the `hello_world` contract.
46
+
For example: `algokit project deploy localnet -- hello_world` will only deploy the `hello_world` contract.
47
+
48
+
#### VS Code
43
49
44
-
#### VS Code
45
50
For a seamless experience with breakpoint debugging and other features:
46
51
47
52
1.**Open Project**: In VS Code, open the repository root.
@@ -50,20 +55,22 @@ For a seamless experience with breakpoint debugging and other features:
50
55
- Use `F5` to start debugging.
51
56
52
57
#### JetBrains IDEs
58
+
53
59
While primarily optimized for VS Code, JetBrains IDEs are supported:
54
60
55
61
1.**Open Project**: In your JetBrains IDE, open the repository root.
56
62
2.**Automatic Setup**: The IDE should configure the Node.js environment.
57
63
3.**Debugging**: Use `Shift+F10` or `Ctrl+R` to start debugging. Note: Windows users may encounter issues with pre-launch tasks due to a known bug. See [JetBrains forums](https://youtrack.jetbrains.com/issue/IDEA-277486/Shell-script-configuration-cannot-run-as-before-launch-task) for workarounds.
58
64
59
65
## AlgoKit Workspaces and Project Management
66
+
60
67
This project supports both standalone and monorepo setups through AlgoKit workspaces. Leverage [`algokit project run`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/run.md) commands for efficient monorepo project orchestration and management across multiple projects within a workspace.
61
68
62
69
## AlgoKit Generators
63
70
64
71
This template provides a set of [algokit generators](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/generate.md) that allow you to further modify the project instantiated from the template to fit your needs, as well as giving you a base to build your own extensions to invoke via the `algokit generate` command.
65
72
66
-
### Generate Smart Contract
73
+
### Generate Smart Contract
67
74
68
75
By default the template creates a single `HelloWorld` contract under hello_world folder in the `smart_contracts` directory. To add a new contract:
69
76
@@ -75,7 +82,7 @@ By default the template creates a single `HelloWorld` contract under hello_world
75
82
76
83
### Generate '.env' files
77
84
78
-
By default the template instance does not contain any env files to deploy to different networks. Using [`algokit project deploy`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/deploy.md) against `localnet` | `testnet` | `mainnet` will use default values for `algod` and `indexer` unless overwritten via `.env` or `.env.{target_network}`.
85
+
By default the template instance does not contain any env files to deploy to different networks. Using [`algokit project deploy`](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/project/deploy.md) against `localnet` | `testnet` | `mainnet` will use default values for `algod` and `indexer` unless overwritten via `.env` or `.env.{target_network}`.
79
86
80
87
To generate a new `.env` or `.env.{target_network}` file, run `algokit generate env-file`
81
88
@@ -85,7 +92,6 @@ This project is optimized to work with AlgoKit AVM Debugger extension. To activa
85
92
86
93
Refer to the commented header in the `index.ts` file in the `smart_contracts` folder.Since you have opted in to include VSCode launch configurations in your project, you can also use the `Debug TEAL via AlgoKit AVM Debugger` launch configuration to interactively select an available trace file and launch the debug session for your smart contract.
87
94
88
-
89
95
For information on using and setting up the `AlgoKit AVM Debugger` VSCode extension refer [here](https://github.com/algorandfoundation/algokit-avm-vscode-debugger). To install the extension from the VSCode Marketplace, use the following link: [AlgoKit AVM Debugger extension](https://marketplace.visualstudio.com/items?itemName=algorandfoundation.algokit-avm-vscode-debugger).### Continuous Integration / Continuous Deployment (CI/CD)
90
96
91
97
This project uses [GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions) to define CI/CD workflows, which are located in the [.github/workflows](`.github/workflows`) folder.
@@ -98,41 +104,43 @@ To define custom `algokit project run` commands refer to [documentation](https:/
98
104
99
105
#### Setting up GitHub for CI/CD workflow and TestNet deployment
100
106
101
-
1. Every time you have a change to your smart contract, and when you first initialize the project you need to [build the contract](#initial-setup) and then commit the `smart_contracts/artifacts` folder so the [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md) tests pass
102
-
2. Decide what values you want to use for the `allowUpdate` and `allowDelete` parameters specified in [`deploy-config.ts`](./smart_contracts/hello_world/deploy-config.ts).
103
-
When deploying to LocalNet these values are both set to `true` for convenience. But for non-LocalNet networks
104
-
they are more conservative and use `false`
105
-
These default values will allow the smart contract to be deployed initially, but will not allow the app to be updated or deleted if is changed and the build will instead fail.
106
-
To help you decide it may be helpful to read the [AlgoKit Utils app deployment documentation](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/docs/capabilities/app-deploy.md) or the [AlgoKit smart contract deployment architecture](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md#upgradeable-and-deletable-contracts).
107
-
3. Create a [Github Environment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#creating-an-environment) named `Test`.
108
-
Note: If you have a private repository and don't have GitHub Enterprise then Environments won't work and you'll need to convert the GitHub Action to use a different approach. Ignore this step if you picked `Starter` preset.
109
-
4. Create or obtain a mnemonic for an Algorand account for use on TestNet to deploy apps, referred to as the `DEPLOYER` account.
110
-
5. Store the mnemonic as a [secret](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets)`DEPLOYER_MNEMONIC`
111
-
in the Test environment created in step 3.
112
-
6. The account used to deploy the smart contract will require enough funds to create the app, and also fund it. There are two approaches available here:
113
-
* Either, ensure the account is funded outside of CI/CD.
114
-
In Testnet, funds can be obtained by using the [Algorand TestNet dispenser](https://bank.testnet.algorand.network/) and we recommend provisioning 50 ALGOs.
115
-
* Or, fund the account as part of the CI/CD process by using a `DISPENSER_MNEMONIC` GitHub Environment secret to point to a separate `DISPENSER` account that you maintain ALGOs in (similarly, you need to provision ALGOs into this account using the [TestNet dispenser](https://bank.testnet.algorand.network/)).
107
+
1. Every time you have a change to your smart contract, and when you first initialize the project you need to [build the contract](#initial-setup) and then commit the `smart_contracts/artifacts` folder so the [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md) tests pass
108
+
2. Decide what values you want to use for the `allowUpdate` and `allowDelete` parameters specified in [`deploy-config.ts`](./smart_contracts/hello_world/deploy-config.ts).
109
+
When deploying to LocalNet these values are both set to `true` for convenience. But for non-LocalNet networks
110
+
they are more conservative and use `false`
111
+
These default values will allow the smart contract to be deployed initially, but will not allow the app to be updated or deleted if is changed and the build will instead fail.
112
+
To help you decide it may be helpful to read the [AlgoKit Utils app deployment documentation](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/docs/capabilities/app-deploy.md) or the [AlgoKit smart contract deployment architecture](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/architecture-decisions/2023-01-12_smart-contract-deployment.md#upgradeable-and-deletable-contracts).
113
+
3. Create a [Github Environment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#creating-an-environment) named `Test`.
114
+
Note: If you have a private repository and don't have GitHub Enterprise then Environments won't work and you'll need to convert the GitHub Action to use a different approach. Ignore this step if you picked `Starter` preset.
115
+
4. Create or obtain a mnemonic for an Algorand account for use on TestNet to deploy apps, referred to as the `DEPLOYER` account.
116
+
5. Store the mnemonic as a [secret](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets)`DEPLOYER_MNEMONIC`
117
+
in the Test environment created in step 3.
118
+
6. The account used to deploy the smart contract will require enough funds to create the app, and also fund it. There are two approaches available here:
119
+
- Either, ensure the account is funded outside of CI/CD.
120
+
In Testnet, funds can be obtained by using the [Algorand TestNet dispenser](https://bank.testnet.algorand.network/) and we recommend provisioning 50 ALGOs.
121
+
- Or, fund the account as part of the CI/CD process by using a `DISPENSER_MNEMONIC` GitHub Environment secret to point to a separate `DISPENSER` account that you maintain ALGOs in (similarly, you need to provision ALGOs into this account using the [TestNet dispenser](https://bank.testnet.algorand.network/)).
116
122
117
123
#### Continuous Integration
118
124
119
125
For pull requests and pushes to `main` branch against this repository the following checks are automatically performed by GitHub Actions:
120
-
- NPM dependencies are audited using [better-npm-audit](https://github.com/jeemok/better-npm-audit#readme)
121
-
- Code formatting is performed using [Prettier](https://prettier.io/)
122
-
- Linting is checked using [ESLint](https://eslint.org/)
126
+
127
+
- NPM dependencies are audited using [better-npm-audit](https://github.com/jeemok/better-npm-audit#readme)
128
+
- Code formatting is performed using [Prettier](https://prettier.io/)
129
+
- Linting is checked using [ESLint](https://eslint.org/)
123
130
- The base framework for testing is [vitest](https://vitest.dev/), and the project includes two separate kinds of tests:
124
131
--`Algorand TypeScript` smart contract unit tests, that are run using [`algorand-typescript-testing`](https://github.com/algorandfoundation/algorand-typescript-testing), which are executed in a Node.js intepreter emulating major AVM behaviour
125
132
-- End-to-end (e2e) `AppClient` tests that are run against `algokit localnet` and test the behaviour in a real network environment
126
-
- Smart contract artifacts are built
127
-
- Smart contract artifacts are checked for [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md).
128
-
- Smart contract is deployed to a AlgoKit LocalNet instance
133
+
- Smart contract artifacts are built
134
+
- Smart contract artifacts are checked for [output stability](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/articles/output_stability.md).
135
+
- Smart contract is deployed to a AlgoKit LocalNet instance
129
136
130
137
> NOTE: By default smart contract artifacts are compiled with `--debug-level` set to 0, to change this, modify the compiler invocation under the `build` script in `package.json`
131
138
132
139
#### Continuous Deployment
133
140
134
141
For pushes to `main` branch, after the above checks pass, the following deployment actions are performed:
135
-
- The smart contract(s) are deployed to TestNet using [AlgoNode](https://algonode.io).
142
+
143
+
- The smart contract(s) are deployed to TestNet using [AlgoNode](https://algonode.io).
136
144
137
145
> Please note deployment is also performed via `algokit deploy` command which can be invoked both via CI as seen on this project, or locally. For more information on how to use `algokit deploy` please see [AlgoKit documentation](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/features/deploy.md).
138
146
@@ -151,10 +159,6 @@ This project makes use of Algorand TypeScript to build Algorand smart contracts.
151
159
-[better-npm-audit](https://github.com/jeemok/better-npm-audit#readme): Tool for scanning JavaScript / TypeScript environments for packages with known vulnerabilities.
152
160
-[pre-commit](https://pre-commit.com/): A framework for managing and maintaining multi-language pre-commit hooks, to enable pre-commit you need to run `pre-commit install` in the root of the repository. This will install the pre-commit hooks and run them against modified files when committing. If any of the hooks fail, the commit will be aborted. To run the hooks on all files, use `pre-commit run --all-files`.
153
161
154
-
155
162
It has also been configured to have a productive dev experience out of the box in [VS Code](https://code.visualstudio.com/), see the [.vscode](./.vscode) folder.
156
163
157
-
158
-
159
164
It has also been configured to have a productive dev experience out of the box in [Jetbrains IDEs](https://www.jetbrains.com/ides/), see the [.idea](./.idea) folder.
0 commit comments