Noodl and Luna Park both build logic with node graphs. Noodl became [open source](https://github.com/noodlapp/noodl) in 2024 and continues in community forks such as [Fluxscape](https://fluxscape.io). Luna Park is actively developed and compiles graphs into a Vue and Node.js application.

- **Compiled logic.** Every node compiles to plain JavaScript.
- **Actively developed.** New features every month, AI included.
- **Backend included.** Routes, crons, and PostgreSQL, built visually.

![The click logic of the Sunset Park waitlist](https://luna-park.app/static/assets/logic-C66duI84.png "A Luna Park graph: typed anchors, each node compiled to JavaScript.")


## At a glance

Both build logic with node graphs. The main differences: execution, backend, and platforms.

| | Luna Park | Noodl / Fluxscape |
|---|---|---|
| **Interface** | Component tree, CSS, design tokens | UI elements as nodes |
| **Logic** | Typed visual scripting graphs | Node graphs, JavaScript function nodes |
| **Execution** | Compiled to JavaScript and Vue | Noodl runtime, shipped with the app |
| **Backend** | Routes, crons, PostgreSQL | Cloud services, Supabase in Fluxscape |
| **Editor** | [=Commercial] Actively developed | [+Open source] GPLv3 editor, MIT runtime |
| **Pricing** | Free, or Pro at €25/month or €300 once | Free, paid plans on Fluxscape |
| **Platforms** | [=Web] [=PWA] [=Desktop] [=Android] [=iOS] | [=Web] |

## Example: a waitlist form

Visitors enter their name, email, and favorite ride, and get a ticket number.

::: columns
### Luna Park

1. Place the fields and a button in the component tree.
2. On click, a graph sends the fields to a backend route and shows the ticket.
3. The route, also a graph, inserts a row in the `Waitlist` table and returns its id.

---

### Noodl

1. Place Text Input and Button nodes.
2. Create a class in the cloud services.
3. Connect the button to a Create New Record node.
4. Put server-side checks in a cloud function.
:::

![The Join Waitlist backend route](https://luna-park.app/static/assets/route-DQo3hM8a.png "The route: the same graphs as the interface, next to PostgreSQL.")

## Code export

A Noodl app ships with the Noodl runtime, which runs the graphs in the browser. Luna Park compiles each node to a line of JavaScript and each component to a Vue component, with no runtime.

![The waitlist component compiled to Vue](https://luna-park.app/static/assets/code-BUYWx0sG.png "The waitlist, compiled to Vue and TypeScript.")

## Other differences

- **Types.** Each anchor shows its type, and links only connect [compatible types](/docs/visual-scripting/graph). [Type files](/docs/logic/scripts#type-files) are shared by the interface and the backend.
- **Database.** PostgreSQL with joins, aggregates, and [transactions](/docs/backend-data/database#specialized-nodes).
- **App map.** One view shows which pages render which components, call which routes, and write which tables.

![The app map of Sunset Park](https://luna-park.app/static/assets/map-BKfoCy_I.png "The Waitlist section calls the Join Waitlist route, which writes to the Waitlist table.")

## Which one to choose?

::: columns
### Luna Park

- You want node-based logic in an active tool.
- You want a SQL backend in the same project.
- You want compiled code and native apps.

---

### Noodl or Fluxscape

- An open-source editor is a requirement.
- You have a Noodl project to keep running.
:::

## Before switching

- Luna Park is not open source. Downloading the source code needs Pro; the exported code is yours.
- Noodl projects can't be imported.
- Until [managed hosting](/pricing) launches in late 2026, you [host the backend](/docs/deployment/deployment).

## From Noodl to Luna Park

| Noodl | Luna Park |
|---|---|
| Page, component | [Page, component](/docs/interface/components) |
| UI nodes (Group, Text, Button...) | Elements of the component tree |
| Logic nodes | Nodes of a logic graph |
| Variable, Object nodes | [Variable](/docs/logic/variables), or [Store](/docs/logic/store) |
| Function node | [Function](/docs/logic/scripts) |
| Cloud function | [Route](/docs/backend-data/routes) |
| Class | [Database](/docs/backend-data/database) table |
| REST node | `Fetch` node |

::: info
Based on Noodl and Fluxscape as of October 2026. See [the Noodl repository](https://github.com/noodlapp/noodl) and [fluxscape.io](https://fluxscape.io) for their current state.
:::
