Chromia
Start Building

03 / 26Beginner

Rell project structure

Chromia applications are written in Rell, a language built for decentralized applications (dapps). Rell works directly with relational data models, so you can build reliable blockchain applications in a way that feels familiar and efficient. The Rell introduction covers the language in more depth.

Organizing your project

You will split the code across dedicated files inside one folder. This keeps the project readable, easy to maintain, and ready to grow.

Project setup

  1. Add a folder for the main module:

    • The project has only one module, so create a folder called main under the src directory. Every file belonging to the module goes here.
  2. Create the module files:

    • Add these files to the main folder:
      • module.rell
      • entities.rell
      • functions.rell
      • operations.rell
      • queries.rell

    You describe your data model in entities.rell. Each entity in Rell maps to a SQL table, and keywords like key, index, and mutable control how that table is stored and queried. See Entity for the full reference.

  3. Declare the module in module.rell:

    • Put this code in module.rell:
    src/main/module.rell
    module;
    • The module; declaration marks this file as the module's main file. It marks the folder as a module, so Rell treats all files in it as one unit, which keeps your code organized and easier to manage.
  4. Remove the old main.rell file:

    • The src folder already contains main.rell. You could keep all your code in that single file, but separate files make the structure easier to follow. Delete main.rell to complete the reorganization.

The project should now have this layout:

text
book-review/├── src/│   ├── main/│   │   ├── entities.rell│   │   ├── functions.rell│   │   ├── module.rell│   │   ├── operations.rell│   │   └── queries.rell│   └── test/│       └── book_review_test.rell├── .gitignore└── chromia.yml

Each file has a single responsibility, which keeps the codebase manageable as the application grows. The next sections go through these files one at a time, beginning with entity definitions and building up to a complete decentralized application.

Written for this site from Chromia’s public course. Code samples are the course’s own.