Project Compiler

Build apps from declared structure.

NovaDev can compile high-level app declarations into ProjectIR, then generate project-specific Vue, Tailwind, Flask, routes, models, workflow hooks, custom modules, and documentation.

ProjectIR

The middle layer that makes generation specific.

ProjectIR stores what the developer declared: app name, mode, pages, tables, routes, workflows, modules, custom code, architecture, styling, database, backend target, and frontend target. Generators read ProjectIR instead of copying the same template into every project.

Important: mode custom means NovaDev does not assume ecommerce, school, CRM, construction, or any other domain. It generates from only what the developer declares.

project.nova
app StoreFront {
    project {
        frontend Vue
        backend Flask
        database SQLite
        structure VueFlask
        styling Tailwind
        mode ecommerce
    }

    table Product {
        id auto
        name text
        price money
        stock int
    }

    page Home {
        type catalog
        section Products from Product
    }
}

Modes

Common categories get helpful defaults. Custom mode gets full control.

Modes help NovaDev choose better page structure, data displays, workflows, naming, and Tailwind styling profiles. They are not hardcoded clone pages; they should respond to the app's declarations.

Project Features

What the compiler can generate from Nova code.

Tables and models

Declare entities, fields, types, IDs, and relationships for backend model generation.

Pages and components

Generate dashboard, catalog, form, table, landing, marketing, admin, and custom page layouts.

Routes and APIs

Create Flask route files from declared HTTP routes and workflow endpoints.

Auth and roles

Declare auth models, role requirements, and protected pages or routes.

Workflows

Describe actions like checkout, lead capture, prayer submission, booking, attendance, or scanning.

Custom modules

Wrap Python code in Nova modules so generated backends can call project-specific logic.

Architecture files

Declare folders and files like Dockerfile, utility modules, docs, and app-specific structure.

Tailwind styling

Generate UI with mode-aware design profiles instead of the same shared CSS everywhere.

Vue + Flask output

Generate frontend services, views, routes, backend models, API routes, and starter app files.

custom-mode.nova
app ChurchMediaSystem {
    project {
        frontend Vue
        backend Flask
        styling Tailwind
        mode custom
    }

    table Sermon {
        id auto
        title text
        speaker text
        videoUrl text
        date date
    }

    workflow SubmitPrayer {
        input PrayerRequest
        creates PrayerRequest
        notify Admin
    }

    page Home {
        type landing
        section Sermons from Sermon
        form PrayerRequest
    }
}

Custom Mode

Use NovaDev for projects that do not fit a common category.

A church media system, trading journal, gym billing app, refund tracker, scanner, portfolio CMS, or dispatch tool should not receive ecommerce defaults. With mode custom, the developer controls the shape.

See Custom Examples