/algokit-python-template

Official AlgoKit template for smart contract development project using Algorand Python

Primary LanguageJinja


This template provides a production-ready baseline for developing and deploying Puya smart contracts.

To use it install AlgoKit and then either pass in -t python to algokit init or select the python template.

This is one of the official templates used by AlgoKit to initialize an Algorand smart contract project. It's a Copier template.

Features

This template supports the following features:

  • Compilation of multiple Puya contracts to a predictable folder location and file layout where they can be deployed
  • Deploy-time immutability and permanence control
  • Poetry for Python dependency management and virtual environment management
  • Linting via Ruff or Flake8
  • Formatting via Black
  • Type checking via mypy
  • Testing via pytest (not yet used)
  • Dependency vulnerability scanning via pip-audit (not yet used)
  • VS Code configuration (linting, formatting, breakpoint debugging)
  • dotenv (.env) file for configuration
  • Automated testing of the compiled smart contracts
  • Output stability tests of the TEAL output
  • CI/CD pipeline using GitHub Actions:
    • Optionally pick deployments to Netlify or Vercel

Getting started

Once the template is instantiated you can follow the README.md file to see instructions for how to use the template.

Interactive Wizard

To initialize using the algokit CLI:

  • Execute the command algokit init. This initiates an interactive wizard that assists in selecting the most appropriate template for your project requirements.

To initialize within GitHub Codespaces:

  • Follow these steps to leverage GitHub Codespaces for template selection:

    1. Go to the algokit-base-template repository.
    2. Initiate a new codespace by selecting the Create codespace on main option. This can be found by clicking the Code button, then navigating to the Codespaces tab.
    3. Upon codespace preparation, algokit will automatically start LocalNet and present a prompt with the next steps. Executing algokit init will initiate the interactive wizard.