Enterprise ambition with zero-config simplicity.
ExisJS is the ultimate batteries-included Node.js backend. Get the performance of a minimal micro-framework and the end-to-end type safety of an RPC client without spending weeks plumbing tools together.
- Cold start
- 60ms
- Config required
- 0 files
- Type coverage
- DB → client
- License
- MIT
A file becomes an endpoint. An endpoint becomes a function call.
No route registry, no manually maintained client SDK. Both sides come from the same source of truth.
import { controller, route, t } from 'exisjs/router'import { db } from '@/db'
export default controller({ get: route.get('/', { params: { id: t.string() }, handle({ params }) { return db.users.findUnique({ where: { id: params.id } }) } })})import { client } from '@/api'
const user = await client.users['[id]'].get({ params: { id: "42" }})
// user is fully typed:// { id: string, name: string, email: string }Everything you need, built-in.
Stop stitching together community packages. ExisJS provides a cohesive, battery-included standard library for production-grade APIs.
File-System Routing
Drop a file in src/http and get a typed API endpoint back. Functional handlers and OOP decorators both work, with no boilerplate to wire them up.
Dependency Injection
A DI container built into core, not bolted on. Structure business logic with providers and injectables, with zero reflection configuration.
Plugin Engine
A robust, highly modular architecture built on defineModule and definePlugin. Encapsulate functionality, inject dependencies, and distribute reusable packages.
Native Validation Engine
A zero-dependency schema validator for request validation and RPC client generation, eliminating bloated node_modules and keeping boot times instant.
Zero-Config Services
Lazy-loaded integrations for Postgres, MongoDB, Redis, Prisma, and Drizzle. Nothing connects until the first query, so boot time stays instant.
End-to-End Type Safety
The ultimate file → typed endpoint → typed client loop. Every route generates a typed definition automatically, so your frontend calls your API like a native function.
From zero to a typed API in three steps.
Install
One command scaffolds a project with sane defaults.
Add a route file
Create a file under src/http. The path and method are inferred from its name.
Call it, fully typed
Import the generated client anywhere. Params, response shape, and errors are all typed.
Built in the open.
ExisJS is MIT-licensed and developed in public. Read the source, open an issue, or ship a fix the roadmap and RFCs live on GitHub, not behind a paywall.
Ship your next API without the setup tax.
One command scaffolds a fully typed project. No config files to write before you can make your first request.