# denext > denext is a complete, lightweight framework for Deno: write an app once and ship it to the > web, iOS, Android and the desktop, on its own small React core. Its API is surface compatible > with React and the Next.js App Router, so if you know Next.js you already know denext — the > same file conventions, hooks, and `app/` router — and existing npm packages work. This file > helps AI tools emit correct denext instead of Next.js. ## One install, no toolchain to assemble - Install the `denext` command (`curl -fsSL https://denext.dev/install.sh | sh`, or `irm https://denext.dev/install.ps1 | iex` on Windows), then `denext create my-app`. Nothing else to install or configure: no Node version manager, bundler, test-runner, linter, formatter or tsconfig setup. - Every other tool is pinned to the denext release and fetched on first need: denext's Deno build (`Deno.SQL`, Vitest/Jest compatibility in `deno test`, native TypeScript 7 checking, SHA-256-verified into `/denext-deno/`), esbuild 0.25.5, `denort` for `denext build --compile`, the Gleam compiler and a managed fastlane (pinned portable Ruby, checksum-locked gems; macOS and Linux, a C compiler once). Lightning CSS and swc are denext's own wasm packages; SQLite (`node:sqlite`), Postgres (`Deno.SQL`) and Redis need no driver. - Agents: don't spend turns assembling a build. `denext toolchain install --with gleam,fastlane` prefetches everything for offline work; `denext toolchain status` shows what is cached. ## What differs from Next.js (read first) - Imports come from `denext`, not `react` — `import { useState } from "denext"`. There is **no `react`/`react-dom` package** (a drop-in aliases them; new code imports `denext`). - **No `package.json`/npm** — a `deno.json` with URL/`jsr:`/`npm:` imports; run with `denext task dev|build|start` (the `denext` command brings its own Deno; `deno task` works too). - Server-only helpers (`cookies`, `headers`, `revalidatePath`) come from `denext/server`; client-only from `denext/client`. - File conventions are **the same as the Next.js App Router** (`app/page.tsx`, `app/layout.tsx`, `app/api/x/route.ts`, `app/blog/[slug]/page.tsx`, `middleware.ts`). - Route handlers return a web `Response`; use `Request`/`fetch`/`URL`/`Deno.env.get`. - Calls to your own API are type-checked: return `TypedResponse` from a handler and use `createApiClient()` (types from `./.denext/api.ts`). ## Docs - [Full guide for AI tools](https://denext.dev/llms-full.txt): the complete rules, import map, common tasks, and an API-surface summary — load this to write denext. - [API reference](https://denext.dev/docs/api): every public symbol with signatures. - [Examples](https://denext.dev/docs/examples): every runnable example app, one page each (`/docs/examples/`) with its README and the commands that run it. - [Fixed in denext](https://denext.dev/docs/fixed): problems on Next.js, React, Vite and React Native stacks that denext handles, each with the test that proves it (source: `catalog/fixed-in-denext.json`). - [Backend](https://denext.dev/docs/backend): the opt-in `@denext/backend` plugin — storage, Postgres scoped by row-level security (`db()`), realtime from tables, auto-REST with a typed client, and Supabase's APIs (`/auth/v1`, `/rest/v1`, `/storage/v1`, realtime, `/functions/v1`) so the stock `@supabase/supabase-js` client works unchanged; Vault, queues, pgvector, webhooks. - [Scheduled jobs](https://denext.dev/docs/jobs): `defineJob` in `jobs/.ts`, cron schedules, `runJob()` / `denext job `, run history. - [denext's Deno toolchain](https://denext.dev/docs/toolchain): the pinned Deno build project verbs run on (`Deno.SQL`, Vitest/Jest compatibility), and `denext task` vs `deno task`. - [Coming from Supabase](https://denext.dev/docs/coming-from-supabase): a concept map and migration checklist (schema, policies, users and files). - [Guide (source)](https://github.com/Brainwires/denext/blob/main/AGENTS.md): AGENTS.md in the repo. - [GitHub](https://github.com/Brainwires/denext): source, examples, and issues. ## Tooling for agents - **MCP server** — `denext mcp` (with nothing installed: `deno run -A jsr:@denext/denext/cli mcp`). Tools (derived from the live registry so this never drifts): `denext_check_snippet`, `denext_explain_error`, `denext_import_map`, `denext_generate`, `denext_doctor`, `denext_codemod`, `denext_list_routes`, `denext_dev_logs`, `denext_render`, `denext_route_map`, `denext_profile`, `denext_search_docs`, `denext_read_docs`, `denext_index_codebase`, `denext_query_codebase`, `denext_find_definition`, `denext_find_references`, `denext_component_tree`, `denext_why_render`, `denext_hook_state`, `denext_migrations`, `denext_gen_types`, `denext_ui_overview`, `denext_ui_setup`, `denext_ui_config`, `denext_ui_plugins`, `denext_ui_generate`, `denext_ui_docker`, `denext_ui_desktop`, `denext_ui_dev`, `denext_ui_tasks`, `denext_ui_services`, `denext_ui_database`, `denext_ui_commands`. It can lint a snippet for Next-isms, map imports, scaffold, run doctor/codemod, list an app's routes, read a running dev server's errors + console, render a route/component server-side, and search or read every docs page and API symbol offline (`denext_search_docs` / `denext_read_docs`). - **Migrate** an app in one pass with `denext migrate`: Next.js (App Router, or the Pages Router through `@denext/pages-router`), Remix and React Router, TanStack Start, Fresh, Preact, Expo / React Native, and Vite / Create React App / other SPAs (`--from ` forces one). `denext migrate --check [--json]` reports what it would change and what won't migrate, writing nothing.