Modules with real boundaries
Compose features through published extension points. Catch missing dependencies before serving requests.
COMPOSE MORE. COUPLE LESS.
Build modular TypeScript applications with data, permissions, web UI and jobs that share a checked contract. Start with SQLite, compose reusable features, or use ketjs-view on its own for a static site.
npx -y @ketvietlab/ketjs@latest new my_appTHE PIECES, ALREADY CONNECTED
Spend less time connecting schemas, permissions, routes and workers. Each module declares the contracts they share.
Compose features through published extension points. Catch missing dependencies before serving requests.
Render on the server, hydrate only interactive regions, and update the DOM with signals.
Models, routes, permissions, jobs, and agent capabilities share a checked contract.
Explicit effects, validation, and permissions put boundaries around every operation.
Transactional jobs, worker leases, and retries. SQLite or PostgreSQL. No Redis required.
Expose declared capabilities with opt-in dry runs and idempotency. Keep domain rules in charge.
DECLARE IT ONCE
A deployment selects the modules. KetJS checks their contracts and composes the runtime.
WHY CHOOSE KETJS?
A router or a UI library solves one part of the stack. KetJS is useful when reusable business modules need their data, permissions, routes and background work to stay aligned.
The build composes one manifest and rejects missing dependencies and unpublished extension points. You can inspect what each deployment actually contains.
Inspect application composition →Declare validation, effects and permissions alongside business functions. HTTP routes and agent calls invoke those operations through the framework runtime.
Read the function contract →SQLite handles local data and durable jobs. Add the PostgreSQL adapter when you need it; the built-in job queue does not require a separate Redis service.
Understand durable jobs →Use ketjs-view independently for TSX, signals, SSR, static sites or client rendering. Install the server framework only when you need its application contracts.
Build with ketjs-view alone →Evaluate KetJS when building tenant-aware tools, operational workflows, reusable feature modules or agent-accessible business operations. This site itself uses the standalone rendering layer and static generation.
KetJS is still a preview for evaluation and feedback. APIs and data formats can change before 1.0, and production workloads are not recommended yet. If you need a mature ecosystem and long-term compatibility today, weigh that requirement before adopting it.
See measured performance and its limits →START WITH SOMETHING REAL
A fullstack application or a static site. Both start with the public KetJS contracts.
Runnable example
A SQLite-backed application with a module, model, function, migration, and HTTP route.
Runnable example
Build plain HTML, CSS, and JavaScript with optional interactive islands and no application server.
BUILD YOUR NEXT APPLICATION
Start with SQLite. Ship the modules you need. Keep the boundaries explicit.
Build with KetJS