Skip to main content

How to create a new Rell dapp

Creating a new Rell dapp is the first step in your Chromia development journey. This guide shows you how to bootstrap a project, understand the generated structure, and customize it for your needs.

Prerequisites​

  • Chromia CLI installed
  • PostgreSQL database installed and configured
  • Basic understanding of command line operations

Alternative: You can also create projects using VS Code with the Chromia extension, which provides a graphical interface for project creation.

Basic project creation​

Step 1: Create your dapp​

chr create-rell-dapp

This creates a new project called my-rell-dapp with the necessary files:

my-rell-dapp
|--chromia.yml
|--src
|--main.rell
|--test
|--arithmetic_test.rell
|--data_test.rell

Step 2: Explore the project structure​

cd my-rell-dapp
ls -la

You'll see this structure:

my-rell-dapp/
├── chromia.yml # Project configuration
├── src/
│ ├── main.rell # Main Rell source code
│ └── test/ # Test directory
│ ├── arithmetic_test.rell
│ └── data_test.rell

Running your dapp​

Step 1: Start the node​

Navigate to your project directory and start a local node:

cd my-rell-dapp
chr node start

This starts a node with your application running on it. All blockchains listed in the blockchains key in chromia.yml get started.

Step 2: Get the Blockchain RID​

Locate the Blockchain RID in the terminal output. You need it to interact with your dapp. The Blockchain RID is the hex value following the "Blockchain RID:" tag in the node output.

Step 3: Test your dapp​

You can query your dapp in two ways:

Option 1: Using CURL

curl -X GET 'localhost:7740/query/<BlockchainRID>?type=hello_world'

Option 2: Using Chromia CLI

chr query --blockchain-rid <BlockchainRID> hello_world

Both commands should return:

"Hello World!"

Note: Replace <BlockchainRID> with your actual Blockchain RID from the node output.

Tip: For local development, you can use the simpler --local flag instead of specifying the blockchain RID:

chr query --local hello_world

Project customization patterns​

Advanced project creation​

The chr create-rell-dapp command creates a default project named my-rell-dapp. For custom project names or setups:

# Create default project (named my-rell-dapp)
chr create-rell-dapp

# For custom names, rename after creation
chr create-rell-dapp
mv my-rell-dapp my-custom-dapp

# Or create in a custom directory structure
mkdir my-custom-project
cd my-custom-project
chr create-rell-dapp
# This creates my-rell-dapp inside my-custom-project/

Directory structure customization​

Organize your project for larger applications by extending the generated structure:

my-rell-dapp/
├── chromia.yml
├── src/
│ ├── main.rell # Main entry point (generated)
│ ├── entities/ # Data models (custom)
│ │ ├── user.rell
│ │ └── message.rell
│ ├── operations/ # Business logic (custom)
│ │ ├── user_ops.rell
│ │ └── message_ops.rell
│ ├── queries/ # Data queries (custom)
│ │ ├── user_queries.rell
│ │ └── message_queries.rell
│ └── test/ # Test directory (generated)
│ ├── arithmetic_test.rell # Generated test
│ ├── data_test.rell # Generated test
│ ├── user_test.rell # Custom test
│ └── message_test.rell # Custom test

Configuration customization​

Customize your chromia.yml for development:

blockchains:
hello:
module: main

# Development settings (optional)
database:
schema_version: 1

# Test configuration (optional)
test:
timeout: 30000
parallel: true

# Build settings (optional)
build:
output_dir: build
optimize: true

Next steps​

After creating your dapp:

  1. Test your Hello World dapp - Follow the "Running your dapp" section above
  2. Run queries - Advanced query patterns and testing
  3. Run operations - Test state modifications with chr tx
  4. Run tests - Set up comprehensive testing workflows