VLODIA
Orveth
A modular TypeScript backend framework ecosystem for Node.js. The Orveth runtime ships in @orveth/server; optional packages add TLS, JWT, Prisma helpers, and more. Early-stage, pre-1.0.
Explore
Documentation
Guides describe the public entrypoints exported from each package. When a page and the implementation disagree, trust the source and published types.
- Getting startedInstall scoped packages, run a minimal listener, and learn the handler and middleware model.Read guide →
- Server runtimeExact routing, middleware, request context helpers, JSON body limits, and error mapping.Read guide →
- ArchitecturePackage layers, dependency rules, and the request lifecycle from socket to JSON response.Read guide →
- ExamplesProduction-shaped snippets combining config, logging, TLS, JWT, and Prisma helpers.Read guide →
Design
What you get
TypeScript-first
Strict public types on every export. Published sources avoid escape hatches such as `any`.
Modular installs
Add `@orveth/server` alone, or pull optional helpers for TLS, JWT, and Prisma operations.
Explicit HTTP core
Exact routes, ordered middleware, predictable JSON helpers—no hidden routers or globals.
Stable error codes
Machine-readable `code` strings and JSON normalization shared across services.
Honest scope
No ORM, no OAuth product, no SSR—integrations stay thin and optional.
Tested contracts
Behavior covered by unit tests in the monorepo; docs track what ships today.
Packages
Published modules
Prefer scoped installs in production. The unscoped orveth meta-package re-exports every module for quick prototypes.
- orveth
- @orveth/server
- @orveth/http
- @orveth/https
- @orveth/errors
- @orveth/config
- @orveth/logger
- @orveth/validation
- @orveth/jwt
- @orveth/prisma
- @orveth/core
Example
Hello, HTTP
Handlers can return response helpers synchronously. Top-level await on app.listen requires an ES module or async wrapper in your entry file.
import { Orveth } from "orveth";
const app = new Orveth();
app.get("/", (ctx) => ctx.ok({ ok: true }));
await app.listen(3000);