Thank you for contributing to D-ASA.
The standard contributor workflow assumes:
- AlgoKit for project bootstrap, LocalNet, build, and deployment workflows
- Poetry for the Python environment
- Docker for Algorand LocalNet
- pre-commit for local checks
Docs contributors also need:
- Rust and Cargo
mdbookmdbook-mermaid
git clone git@github.com:cusma/d-asa.git
cd d-asaThe standard setup path is:
algokit project bootstrap all
make pre-commit
make doctorIf you are only setting up Python dependencies:
make installIf you are contributing to docs, install the mdBook toolchain as well:
cargo install mdbook --version 0.5.2 --locked
cargo install mdbook-mermaid --version 0.17.0 --locked
mdbook-mermaid install .Run:
make doctormake doctor runs algokit doctor, checks core contributor dependencies, checks
Docker daemon reachability for LocalNet workflows, and warns if docs-only tools
are missing.
The main contributor commands are:
make help
make build
make test
make test-cov
make lint
make format
make typecheck
make allmake all runs the standard code quality loop for contributors:
- build smart contracts
- run lint and type checks
- run the default non-showcase test suite
It intentionally does not require mdBook tooling.
Start LocalNet when you need end-to-end execution tests or LocalNet deployment:
make localnet
make deploy-localnet
make showcase
make localnet-stopThese targets map to the existing AlgoKit workflow already used by CI and the project scripts.
For docs editing with live reload:
make docs-serveFor docs validation:
make docsmake docs runs both:
- the docs pre-commit hooks:
mdbook-buildmdbook-testmarkdownlinttrailing-whitespace
- the mdBook build artifacts remain available in
book/untilmake clean
When preparing a pull request:
- Keep changes focused and atomic.
- Add or update tests when behavior changes.
- Update docs when user-facing behavior, workflows, or interfaces change.
- Run the relevant local checks before opening the PR.
Suggested pre-PR checklist:
make doctor
make allIf you changed docs:
make docsIf you changed LocalNet behavior or showcase flows:
make localnet
make showcase
make localnet-stopThe main top-level layout is:
.algokit/ -> AlgoKit configuration and generators
.github/ -> CI/CD workflows and shared GitHub actions
docs/ -> mdBook source files
modules/ -> D-ASA module implementations
smart_contracts/ -> AVM smart contracts and generated contract artifacts
src/ -> D-ASA SDK, Python-side normalization, helpers, and shared runtime code
tests/ -> SDK, contract, LocalNet, and showcase tests
The project uses:
blackfor formattingrufffor linting and import organizationmypyfor type checkingpytestfor tests
Run the standard checks with:
make format
make lint
make typecheck
make testThe docs are written in CommonMark and validated in
CI with markdownlint, trailing whitespace checks, and mdbook test.
Numbered lists MUST use 1.-only style.
1. First item 1. Second item 1. Third item
Table rows MUST keep aligned column widths.
✅ Correct table format
| Month | Savings | |----------|---------| | January | EUR 250 | | February | EUR 80 | | March | EUR 420 |❌ Wrong table format
| Month | Savings | |----------|---------| | January | EUR 250 | | February | EUR 80 | | March | EUR 420 |
Column alignment may be controlled with : markers in the separator row.
An admonition is a special type of callout or notice block used to highlight important information. It is written as a blockquote with a special tag on the first line.
> [!NOTE]
> General information or additional context.
> [!TIP]
> A helpful suggestion or best practice.
> [!IMPORTANT]
> Key information that shouldn't be missed.
> [!WARNING]
> Critical information that highlights a potential risk.
> [!CAUTION]
> Information about potential issues that require caution.
Mathematical formulas are rendered with MathJax.
Reference:
- Do not remove or hand-edit generated artifacts under
smart_contracts/artifactsorsrc/artifactsunless the change explicitly requires regenerated output. - Prefer the checked-in
algokitcommands andmaketargets over ad-hoc local command variations so contributor workflows stay aligned with CI.