Dapper is a CLI toolkit for compiling, deploying, and managing Algorand applications

🕴️ Dapper

Decentralized Application Manager for the Algorand Blockchain

Dappman is a Golang CLI toolkit for compiling, deploying, and managing Algorand applications. It is a thin wrapper built on top of goal app

🚧 Dapper is currently under development

Fetch from GitHub

The easiest is to clone Dappman in a directory outside of GOPATH, as in the following example:

mkdir $HOME/src
cd $HOME/src
git clone https://github.com/connorjcantrell/dapper.git
cd dapper
go install

Getting Started

algod address and token

Connect to a node using algod: How to obtain an algod address and token

Set environment variables:

  • $ALGOD_ADDRESS - Algod REST endpoint IP address
  • $ALGOD_TOKEN - Algod access token

Store path to boilerplate directory

  • You can clone the dapper-boilerplate-code repo to get started.
  • Alternatively, you can create your own boilerplate directory, however be sure to follow the following file structure:
boilerplate
│
└───pyteal
│   │   
│   └───default
│       │    approval_program.py
│       │    clear_state_program.py
│
└───reach
    │   
    └───default
        │    index.rsh

Set DAPPER_BOILERPLATE_DIR environment variable to the absolute path of your boilerplate directory

  • The project structure of $DAPPER_BOILERPLATE_DIR/{language}/{template} Note: Dapper CLI gives you the ability to add your own boilerplate code with the dapper boilerplate command

Store secret passphrase (FOR TESTNET ONLY!)

Dapper is a work in progress, and therefore should not be used in production. Do not store your secret passphrase of any wallet that you are useing on mainnet.

  • $ALGORAND_PASSPHRASE - 25-word mnemonic is the most user-friendly representation of the private key

Init

Initialize dapper inside a project directory:

dapper init --global-byteslices 0 -global-ints 0 --local-byteslices 0 --local-ints 0 --boilerplate pyteal

This will generate the following project structure:

project
│
└───.dapper
    │   config.json 
│
└───public
│   
└───src
    │   approval_program.py
    │   clear_state_program.py

.config.json is a local representation of the application details that exist on the Algorand Blockchain. This file will be referenced/ modified during create, update and delete commands. Application ID is initially set to 0 to signify the app has not yet been created.

Do not manually modify .config.json

.config.json

{
	"application_id": 0,
	"block": 0,
	"creator": "",
	"revision": 0,
	"deleted": false,
	"global_state_schema": {
		"num_byte_slice": 0,
		"num_uint": 10
	},
	"local_state_schema": {
		"num_byte_slice": 0,
		"num_uint": 0
	}
}

Compile

dapper compile pyteal
  1. Searches for approval_program.py and clear_state_program.py in /src directory
  2. Compiles PyTeal down to TEAL, writes TEAL programs to /public directory
project
│
└───.dapper
    │   config.json 
│
└───public
│   │   approval_program.teal
│   │   clear_state_program.teal
│
└───src
    │   approval_program.py
    │   clear_state_program.py

Create

Issue a transaction that creates an application

dapper create

.config.json modifications

application_id will be changed from 0 revision will be increased by 1

Update

Issue a transaction that updates an application's ApprovalProgram and ClearStateProgram

dapper update

.config.json modifications

revision will be increased by 1

Delete

dapper delete

.config.json modifications

deleted changed to true

Similar Resources

this service provides an API for publishing and managing your articles

REST API Для Публикации и Работы с Articles на Go В работе применены следующие концепции: Разработка Веб-Приложений на Go, следуя дизайну REST API. Ра

Jul 25, 2022

Dinogo is an CLI framework for build terminal and shell applications in Go.

dinogo Dinogo is an CLI framework for build terminal and shell applications in Go. Features Cross Platform Fast and efficient Keyboard API Enable/Disa

Aug 29, 2022

Cobra CLI tool to generate applications and commands

Cobra Generator Cobra provides its own program that will create your application and add any commands you want. It's the easiest way to incorporate Co

Jan 3, 2023

CraftTalk Command Line Tool helps with managing CraftTalk releases on baremetal instances

ctcli - CraftTalk Command Line Tool Commands help Shows help version Shows version init Initializes specified root directory as a ctcli dir. ctcli --r

Jan 20, 2022

A client for managing authzed or any API-compatible system from your command line.

zed A client for managing authzed or any API-compatible system from your command line. Installation zed is currently packaged by as a head-only Homebr

Dec 31, 2022

Command Line Tool for managing Apache Kafka

kafkactl A command-line interface for interaction with Apache Kafka | Features command auto-completion for bash, zsh, fish shell including dynamic com

Dec 30, 2022

A versatile library for building CLI applications in Go

mow.cli Package cli provides a framework to build command line applications in Go with most of the burden of arguments parsing and validation placed o

Dec 28, 2022

An easy to use menu structure for cli applications that prompts users to make choices.

An easy to use menu structure for cli applications that prompts users to make choices.

WMenu Package wmenu creates menus for cli programs. It uses wlog for its interface with the command line. It uses os.Stdin, os.Stdout, and os.Stderr w

Dec 26, 2022

multi progress bar for Go cli applications

Multi Progress Bar mpb is a Go lib for rendering progress bars in terminal applications. Features Multiple Bars: Multiple progress bars are supported

Dec 28, 2022
Related tags
CLI to support with downloading and compiling terraform providers for Mac with M1 chip

m1-terraform-provider-helper A CLI to help with managing the installation and compilation of terraform providers when running a new M1 Mac. Motivation

Jan 2, 2023
Command line tools for creating and compiling JavaScript Minecraft plugins.

@customrealms/cli CustomRealms command-line tools for setting up and compiling JavaScript Minecraft plugins. Installation Install the CLI on your comp

Aug 2, 2022
MyApps is a universal command line tool for managing manually installed applications.
MyApps is a universal command line tool for managing manually installed applications.

MyApps MyApps is a universal command line tool for managing manually installed applications. Disclaimer I wrote this tool over two long nights while p

Jul 15, 2022
CLI for SendGrid, which helps in managing SSO users, can install and update users from yaml config

Sendgrid API This script is needed to add new users to SendGrid as SSO teammates. Previously, all users were manually added and manually migrating the

Jul 20, 2022
K-Mesh is an experimental Knative distribution which provides a fresh, CLI-focused, holistic user experience of running and managing Knative.

K-Mesh is an experimental Knative distribution which provides a fresh, CLI-focused, holistic user experience of running and managing Knative. N

Feb 14, 2022
Gobby-cli - CLI application to debug gobby applications

go(bby) Interactive debugging tool for gobby applications Usage Coming soon™ Ins

Feb 8, 2022
Oui - MAC Address CLI Toolkit

oui MAC Address CLI Toolkit Installation macOS $ brew tap thatmattlove/oui $ bre

Jan 1, 2023
textnote is a command line tool for quickly creating and managing daily plain text notes.

textnote is a command line tool for quickly creating and managing daily plain text notes. It is designed for ease of use to encourage the practice of daily, organized note taking. textnote intentionally facilitates only the management (creation, opening, organizing, and consolidated archiving) of notes, following the philosophy that notes are best written in a text editor and not via a CLI.

Jan 2, 2023
Bucket-ssh. A fuzzy ssh manager for managing and categorizing ssh connections.
Bucket-ssh. A fuzzy ssh manager for managing and categorizing ssh connections.

Bssh is an ssh bucket for categorizing and automating ssh connections. Also, with parallel command execution and connection checks(pings) over categories (namespaces).

Oct 25, 2022
A twitch focused command line tool for producing, archiving and managing live stream content. Built for Linux.

twinx is a live-streaming command line tool for Linux. It connects streaming services (like Twitch, OBS and YouTube) together via a common title and description.

Oct 17, 2022