React fullstack framework with file-based SPA routes, router-free MPA pages, server functions, and a Hono server runtime.
ev = Evaluation · Evolution — evaluate across runtimes, evolve with AI tooling.
- Convention over Configuration —
ev dev/ev build, no boilerplate needed. - Page Routes —
src/pagesis the client route source of truth. - SPA and MPA Modes — SPA is generated from
src/pageswith typed page hooks; MPA emits independent router-free pages. - Data Fetching — TanStack Query with built-in proxies.
- Server Functions —
"use server"directive, auto-discovered at build time. - Pluggable Transport — HTTP, WebSocket, or custom via
ServerTransport. - Plugin System — extend builds with custom loaders (Tailwind, SVG, etc.).
- Programmatic Route Handlers — Standard Request/Response REST API endpoints via
createRoute(). - Typed Errors —
ServerErrorflows structured data server → client. - Multi-Runtime — Hono-based server with Node, Deno, Bun, Edge adapters.
- CLI —
ev dev·ev build·ev inspect
npx @evjs/create-app my-app
cd my-app && npm install
ev devAfter ev dev, your browser opens to http://localhost:3000 with hot module
replacement. Server functions in *.server.ts files are auto-discovered — no
config needed.
| Package | Purpose |
|---|---|
@evjs/ev |
Framework API, config, plugins, and build orchestration (defineConfig, dev, build) |
@evjs/cli |
Thin CLI wrapper (ev dev, ev build, ev inspect) with the default bundler |
@evjs/create-app |
Project scaffolding (npx @evjs/create-app) |
@evjs/client |
Browser runtime core for standalone CSR, page hooks, navigation, transport, and RSC |
@evjs/server |
Server runtime core for Hono/fetch apps, server functions, routes, rendering, and deployment |
examples/ |
Starter templates |
Internal modules such as manifest schemas, build tools, page runtime, and shell
live inside the public packages above instead of separate application-facing
packages. Application code imports framework composition APIs from @evjs/ev
and runtime APIs from @evjs/client or @evjs/server. Browser-only apps can
use @evjs/client without depending on @evjs/ev.
See ARCHITECTURE.md · AGENTS.md · AGENT.md
npm install # deps
npm run build # all packages + examples
npm run test # vitest
npm run test:e2e # playwrightMIT © Ant UED