Create the cargo project

Create a new cargo project by running following command from the root of your counter project:

cargo new --lib counter-app

You project should look like:

counter/contract/pint.toml
counter/contract/contract.pnt
counter/contract/src/contract.pnt
counter/counter-app/Cargo.toml
counter/counter-app/src/lib.rs

Dependencies

Now add the following dependencies to your rust project:

cd counter-app
cargo add essential-app-utils
cargo add essential-app-utils --features test-utils --dev
cargo add essential-deploy-contract
cargo add essential-hash
cargo add essential-rest-client
cargo add essential-types
cargo add essential-wallet --features test-utils --dev
cargo add anyhow
cargo add tokio --features full
cargo add clap

Your cargo toml should look something like this:

[package]
name = "counter-app"
version = "0.1.0"
edition = "2021"

[dependencies]
anyhow = "1.0.86"
clap = "4.5.8"
essential-app-utils = "0.1.0"
essential-deploy-contract = "0.1.0"
essential-hash = "0.1.0"
essential-rest-client = "0.1.0"
essential-types = "0.1.0"
tokio = { version = "1.38.0", features = ["full"] }

[dev-dependencies]
essential-app-utils = { version = "0.1.0", features = ["test-utils"] }
essential-wallet = { version = "0.1.0", features = ["test-utils"] }

Add a test

Lastly add a test to your front end application:

mkdir tests
touch tests/counter.rs

Your project should now look like:

counter/contract/pint.toml                        
counter/contract/contract.pnt                         
counter/contract/src/contract.pnt                             
counter/counter-app/Cargo.toml                             
counter/counter-app/tests/counter.rs                   
counter/counter-app/src/lib.rs