---
layout: core
description: "Blockstack smart contracting language"
permalink: /:collection/:path.html
---
# Clarity SDK Quickstart
{:.no_toc}
You can use the software developer kit (SDK) to develop, test, and deploy Clarity smart contracts. The SDK goes beyond the basic test environment to allow for development of Javascript or TypeScript clients that call upon Clarity contracts.
* TOC
{:toc}
Clarity is in pre-release
Clarity, its accompanying toolset, and the SDK are in pre-release. If you encounter issues with or have feature requests regarding Clarity, please create an issue on the blockstack/blockstack-core repository. To read previous or join ongoing discussions about smart contracts in general and Clarity in particular, visit the Smart Contracts topic in the Blockstack Forum.
## About this tutorial and the prerequisites you need
{% include note.html content="This tutorial was written on macOS High Sierra 10.13.4. If you use a Windows or Linux system, you can still follow along. However, you will need to \"translate\" appropriately for your operating system." %}
For this tutorial, you will use `npm` to manage dependencies and scripts. Before you begin, verify you have installed `npm` using the `which` command to verify.
```bash
$ which npm
/usr/local/bin/npm
```
If you don't find `npm` in your system, [install it](https://www.npmjs.com/get-npm).
## Task 1: Install the SDK command line
The SDK comes with a command line for setting up the SDK and creating new projects. Use `npm` to install the `clarity` SDK command:
```
npm install -g @blockstack/clarity-cli
```
Verify you have installed the command correctly:
```
$ clarity --help
The Clarity CLI is used to manage Clarity smart contracts from the command line.
VERSION
@blockstack/clarity-cli/0.1.13-alpha.3 darwin-x64 node-v12.10.0
USAGE
$ clarity [COMMAND]
COMMANDS
help display help for clarity
new Generate new project
setup Install blockstack-core and its dependencies
```
## Task 2: Generate an initial Clarity project
In this task, you generate a project scaffold — an initial set of directories and files.
1. Create a new Clarity project .
```sh
clarity new hello-clarity-sdk
```
The system responds by creating a scaffolding for your Clarity project and initializing the packaging:
```
$ clarity new hello-clarity-sdk
create .vscode/extensions.json
create .vscode/launch.json
create contracts/sample/hello-world.clar
create test/mocha.opts
create tsconfig.json
create test/hello-world.ts
create .gitignore
create package.json
...
added 126 packages from 632 contributors and audited 226 packages in 4.678s
found 0 vulnerabilities
Project created at /tmp/hello-clarity-sdk
```
Depending on your connection speed, it may take time to construct the scaffolding.
2. Change into your new project directory.
```sh
cd hello-clarity-sdk
```
## Task 3: Investigate the generated project
Your project should contain three directories:
| Directory |Description |
|---|---|
| `contracts` | Contains `.clar` files (Clarity contract files) here. |
| `test` | Contains files for testing your application. |
| `node_modules` | Contains packages the project depends on. Added by `npm`. |
The `contracts` directory contains a single file in `sample/hello-world.clar` file.
```cl
(define (say-hi)
"hello world")
(define (echo-number (val int))
val)
```
The contract exposes 2 rudimentary functions. The **say-hi** returns a `hello world` string. The **increment-number**: echos `val`.
The project also includes `tests/hello-world.ts` file. The the `mocha.opts` file supports the testing by the