Language Guide

Learn NovaDev

NovaDev can be used like a normal programming language before you use it as a project compiler. Start in the shell, learn the syntax, then use the same language features to build and generate larger applications.

Core Syntax

Write code that feels direct and readable.

NovaDev supports common programming ideas: data, expressions, conditions, loops, functions, classes, modules, imports, string interpolation, and safe bridges to Python helper modules.

Values Control Flow Functions Classes Modules

Variables and data

Use let for variables. NovaDev supports strings, numbers, booleans, nil values, lists, objects, tuples, and expressions with operators.

  • strings
  • numbers
  • booleans
  • nil
  • lists
  • objects
  • tuples
values.nova
let name = "Aldane"
let age = 20
let active = true
let skills = ["NovaDev", "Python", "Vue"]
let profile = { name: name, role: "Developer" }

print("Hello {name}")
print(skills[0])

Conditions and loops

NovaDev supports if, elif, else, while, for, break, continue, try, and catch.

control-flow.nova
let total = 0

for price in [12, 18, 7] {
    total = total + price
}

if total > 30 {
    print("Large cart")
} elif total == 30 {
    print("Exact cart")
} else {
    print("Small cart")
}

Functions and reusable logic

Functions let you build small tools, calculate values, transform data, and keep large project declarations from becoming repetitive.

functions.nova
function subtotal(items) {
    let result = 0
    for item in items {
        result = result + item.price
    }
    return result
}

let cart = [{ price: 10 }, { price: 15 }]
print(subtotal(cart))

Classes and objects

NovaDev supports classes, constructors, methods, and inheritance for projects that need structured domain logic before generation.

classes.nova
class Cart {
    function init(items) {
        self.items = items
    }

    function count() {
        return self.items.length
    }
}

let cart = Cart(["phone", "case"])
print(cart.count())

Modules and Python bridge

NovaDev projects can import other .nova files, use safe Nova.* helpers, and wrap Python modules for generated backends.

modules.nova
use Nova.math

function describe(number) {
    let root = Nova.math.sqrt(number)
    return "sqrt({number}) = {root}"
}

print(describe(16))
Interactive shell
python shell.py

NovaDev 1.1.0 Interactive Shell
Type .exit to quit
nova> let name = "Aldane"
nova> print("Hello {name}")
Hello Aldane
nova> .load examples/scripts/math_tool.nova
nova> .tokens examples/business_admin.nova
nova> .build-fullstack examples/apps/webshield

Shell

Run code and project commands in one place.

The shell is not only for one-line expressions. It can run normal programming code, load files, inspect tokens, inspect AST output, lint, format, generate docs, and build projects.

  • .load
  • .tokens
  • .ast
  • .lint
  • .format
  • .docs
  • .build-ui
  • .build-backend
  • .build-fullstack

Learning Checklist

What to learn before building full apps.

1. Run scripts

Use python nova.py run file.nova to practice variables, functions, and loops.

2. Use modules

Split code across files and import folders when a project gets larger.

3. Inspect the compiler

Use tokens and AST commands to understand how source becomes runtime behavior.

4. Add project declarations

Declare apps, tables, pages, routes, auth, themes, and workflows.

5. Generate output

Build Vue/Tailwind frontend and Flask backend files from the declared structure.

6. Customize code

Use Python modules, architecture files, custom frontend blocks, and custom backend logic.