https://github.com/terra-money/houston
  
  
    A development environment, testing framework and smart contract pipeline for Terra, aiming to make life as a Terra developer easier. 
    https://github.com/terra-money/houston
  
        Last synced: 7 months ago 
        JSON representation
    
A development environment, testing framework and smart contract pipeline for Terra, aiming to make life as a Terra developer easier.
- Host: GitHub
 - URL: https://github.com/terra-money/houston
 - Owner: terra-money
 - Archived: true
 - Created: 2020-10-12T07:05:09.000Z (about 5 years ago)
 - Default Branch: main
 - Last Pushed: 2021-05-13T06:06:05.000Z (over 4 years ago)
 - Last Synced: 2024-10-31T17:08:14.178Z (about 1 year ago)
 - Language: TypeScript
 - Size: 1.6 MB
 - Stars: 27
 - Watchers: 24
 - Forks: 15
 - Open Issues: 1
 - 
            Metadata Files:
            
- Readme: README.md
 - Contributing: CONTRIBUTING.md
 
 
Awesome Lists containing this project
README
          # Houston 🚀
Houston is a development environment, testing framework and smart contract pipeline for Terra, aiming to make life as a Terra developer easier.
** 🚨 Houston is now currently in Beta version. Completed version is not ready yet. use it with your own caution. **
## Features
- Built-in smart contract compilation, linking, deployment and wasm binary management.
- Configurable build pipeline with support for custom build processes.
- Scriptable deployment & migrations framework.
- Network management for deploying to Terra's public & private networks.
- Instant rebuilding of webassembly binaries during development.
## Installation
_Houston will gracefully setup **a stable version of rust compiler** and **wasm target** to develop smart contracts on Terra blockchain._
Grab the latest version of [NPM](https://www.npmjs.com/package/@terra-money/houston):
```sh
npm install -g @terra-money/houston
```
## Documentation
To get more information on Houston, check out the documentation.
## Kickstart
**Houston has five commands to help smart contract development:**
`init`: for project initialization
`compile`: for compiling contracts
`migrate`: for deploying contracts to blockchain
`add`: for adding or downloading contract cargo projects
To get help on each command, run `houston help `.
### Initialize project
```bash
mkdir myProject
cd myProject
houston init
```
Once this operation is completed, you'll now have a project structure with the following items:
```
myProject/
  |- contracts
  | |- starter
  |- wasm
  |- schema
  |- migrations
  | |- 0_deploy_starter.ts 
  |- package.json
  |- tsconfig.json
```
`contracts`: directory for cosmwasm contracts
`wasm`: wasm binaries of compiled contracts
`schema`: generated schema of compiled contracts
`test`: test script directory for contract interaction
`starter`: a starter cosmwasm contract cargo
`package.json`: package manager for migration scripts
`tsconfig.json`: Typscript configuration file for migration scripts
### Compile contracts
Set current working directory inside of the project directory
```shell
houston compile [contractName]
```
All contract cargos in the `contracts` directory will be compiled as default.
`[contractName]` is an optional parameter to specify which cargo to compile with the command.
Once this operation is initiated, you'll see the event in the console as below:
```shell
🛠 Compiling your contracts...
===========================
```
After comilation of each contract, you'll get the directories for compiled results as below:
```shell
> WASM written to /Users/...//wasm
> Schemas written to /Users/...//schemas/_schema
```
Compiled WASM binaries will be placed in `wasm` directory as ``.wasm.
Generated collection of schema json files will be placed as a directory with the name `-schema` in `schemas` directory.
You will have the new project structure with the following items:
```
myProject/
  |- contracts
  | |- starter
  |- wasm
  | |- starter.wasm
  |- schema
  | |- starter-schema
  |   |- config.json
  |   |- ....
  | migrations
  | |- 0_deploy_starter.ts
  | package.json
  | tsconfig.json
```
### Running migrations
run your migraion scripts in `migrations` folder after installing packages with the following command:
```shell
npm install
houston migrate 
```
## Contributions
Contributions are welcome to this project for helping Terra developers to build their dapps.
To contribute to this project, you can check [CONTRIBUTING.md](https://github.com/terra-project/houston/blob/master/CONTRIBUTING.md) for the detail.
Or you can join the Terra's official discord channel and discuss new ideas or addition.
## License
This software is licensed under the Apache 2.0 license. See [LICENSE](https://github.com/terra-project/houston/blob/master/LICENSE) for full disclosure.
© 2020 Terraform Labs, PTE.
 
  Powering the innovation of money.
        
