Get started with Ende

Ende (/ˈɛndə/, pronounced en-duh) is an open source JavaScript, TypeScript, and WebAssembly runtime with secure defaults and a great developer experience. It is a fork of Deno, and the Deno global remains available as an alias of Ende. This page takes you from nothing to a running, tested project in a few minutes.

Why Ende?

Install Ende

Install the runtime with one command:

curl -fsSL https://ende.sh/install.sh | sh
# pwsh
irm https://ende.sh/install.ps1 | iex

Verify the install:

ende --version

See Installation for package managers, Docker, and other options.

Create a project

Scaffold a new project with ende init:

ende init my_project

That creates a small, ready-to-run project:

my_project
├── ende.json      # project configuration: tasks, imports, lint/fmt settings
├── main.ts        # a tiny HTTP server built on Ende.serve
└── main_test.ts   # its tests

ende.json is where your tasks, dependencies, and tooling config live, in one file.

Run it

$ cd my_project
$ ende -N main.ts
Listening on http://localhost:8000/

Notice the -N (short for --allow-net). Ende is secure by default: code can't touch the network, filesystem, or environment until you grant it. Open the URL to see the response.

main.ts is TypeScript and it ran directly: no tsc, no build step. It's also built on the web-standard Ende.serve with Request/Response, so what you learn here is the platform, not a framework.

Test it

The project ships with tests. Run them with ende test. The test runner is built in, so there's nothing to install:

$ ende test
running 2 tests from ./main_test.ts
returns html on / ... ok (12ms)
returns json on /api ... ok (0ms)

ok | 2 passed | 0 failed (15ms)

Add a dependency

Pull in packages from JSR with ende install:

ende install jsr:@ende/assert    # the Ende standard library, on JSR

Then import and use them:

import { assertEquals } from "@ende/assert";

assertEquals(1 + 1, 2);

Use the built-in toolchain

Formatting, linting, and more come with the runtime, no setup needed:

ende fmt     # format your code
ende lint    # catch problems
ende task    # run scripts defined in ende.json

Next steps