Skip to main content

NajaScript: native apps, simply.

naja (the cobra, from Python) + JavaScript: a language made to build native apps and programs simply, fast and safely. Compiled, typed, no garbage collector. With NajaNative, one code base for apps on every platform — Linux today.

app/page.njsx
export default fun Page() {
int count = 0

return (
<div class="p-4 gap-2">
<h1 class="text-3xl font-bold">Count: {count}</h1>
<button class="bg-brand-500 text-black font-bold rounded-lg px-4 py-2"
onClick={() => count += 1}>+1</button>
</div>
)
}

Learn it from zero

A tutorial for people learning to program: output, variables, strings, if, loops, functions, arrays, maps, structs — one thing per page, with examples and their output.

NajaNative: the Next.js shape

app/page.njsx is a route, app/layout.njsx the shell; useState, useEffect, controllers, a router. Native widgets, not a browser. Save and the app reloads with its state kept.

Batteries in the box

najac native new gives you sign-in, sign-up, a users CRUD and an API over the same controllers. Migrations, models, seeders, .env, argon2id.

Tailwind on widgets

The classes you know — flex, p-4, rounded-xl, dark:, hover: — become widget properties and GTK CSS. Your own colours from naja.toml.

The desktop, all of it

Notifications, a tray icon, sounds, drag and drop, more windows, modals, the window's size remembered, WebSockets, HTTP.

Ship it

najac native release: a stripped binary, a .desktop file, a .deb, an AppImage and a Flatpak manifest in dist/.