ToolJet is an open-source builder for internal tools, with a built-in database, 90+ connectors, JavaScript and Python, and AI app generation. Luna Park builds complete applications, internal or customer-facing, compiled to Vue and Node.js code.

- **Public apps.** Share any app with visitors on every plan.
- **Standard code.** Vue and Node.js you can run without Luna Park.
- **Flat price.** One license, whatever your traffic or users.

![Sunset Park in the Luna Park editor](https://luna-park.app/static/assets/builder-DAXbtfYB.png "Sunset Park, a demo site built with Luna Park: your own design, not a grid of components.")


## At a glance

Both build apps on a built-in database. The main differences: audience, public apps, and pricing.

| | Luna Park | ToolJet |
|---|---|---|
| **Made for** | SaaS, portals, internal tools | Internal tools |
| **Interface** | Your own components, CSS, design tokens | Grid of ready-made components |
| **Logic** | Visual scripting graphs, front and back | Queries, JavaScript, Python |
| **Database** | [+PostgreSQL] Joins, aggregates, transactions | [+Built-in] ToolJet Database, 90+ connectors ([source](https://docs.tooljet.com/docs/tooljet-db/tooljet-database)) |
| **Code export** | [+Vue + Node.js source] (Pro) | [~ToolJet JSON] ([source](https://docs.tooljet.com/docs/app-builder/importing-exporting-applications/)) |
| **Open source** | [-No] | [+AGPL-3.0] Community edition ([source](https://github.com/ToolJet/ToolJet)) |
| **Public apps** | [+All plans] | [~Team and Enterprise] ([source](https://www.tooljet.com/pricing)) |
| **Pricing** | Free, or Pro at €25/month or €300 once | Free, then per builder ([source](https://www.tooljet.com/pricing)) |

## 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 site's design.
2. On click, a graph sends the fields to a backend route and shows the ticket.
3. The route inserts a row in the `Waitlist` table and returns its id.

Visitors need no account.

---

### ToolJet

1. Create a `waitlist` table in ToolJet Database.
2. Add a form component with the fields.
3. Run an insert query on submit, and show the id.
4. Share the app publicly, on a plan that allows it.
:::

::: gallery
![The click logic of the waitlist form](https://luna-park.app/static/assets/logic-C66duI84.png "On click: read the fields, call the route, show the ticket.")

![The Join Waitlist backend route](https://luna-park.app/static/assets/route-DQo3hM8a.png "The route: receive the body, insert a row, return its id.")
:::

## Code export

ToolJet exports apps as JSON, to import back into ToolJet. Luna Park compiles every project to plain Vue and Node.js, with no Luna Park 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

- **Costs.** ToolJet Cloud bills per builder, with end-user limits per plan. A Luna Park app costs what its server costs, at any number of users.
- **Customer-facing apps.** Luna Park builds products with your design, your [authentication](/docs/backend-data/auth), and your domain.
- **Logic.** ToolJet logic is queries and code. Luna Park logic is visual, and [TypeScript functions](/docs/logic/scripts#code-functions) remain available.

## Which one to choose?

::: columns
### Luna Park

- Your app is, or will be, customer-facing.
- You want your own design and visual logic.
- You want standard code and flat costs.

---

### ToolJet

- You need internal tools on many data sources.
- Your team writes JavaScript or Python.
- You want an open-source tool you can self-host.
:::

## Before switching

- Luna Park is not open source.
- Until [managed hosting](/pricing) launches in late 2026, you [host the backend](/docs/deployment/deployment).

::: info
Based on ToolJet as of October 2026. See [tooljet.com](https://www.tooljet.com) for current features and prices.
:::
