Search pages, headings and code across the docs.

to navigateto open

Documentation

ohne is a zero-dependency TypeScript framework for the web. It gives you a database, an HTTP API, internationalization, and a dashboard, with no build step and no runtime dependencies. The framework ships .ts source, your app is .ts source, and Node 26 runs both directly. What you write is what runs.

Start here

New to ohne? Read these two in order:

The project

How a project is put together - the config file, the CLI, and the layer system that lets one project extend another.

Database

Declare your data as collections of fields. ohne keeps the schema in step with your code and gives you a typed query builder for reads and writes.

Uploads

An optional layer for files: storage behind a pluggable backend, an `Uploads` collection, upload and serve routes, media fields, and the dashboard's Media page.

HTTP API

Define endpoints as files. Handlers read the request and return a value ohne serializes for you.

Authentication

Email and password accounts, sessions, and the helpers to gate a route. Shipped by the ohne layer, so an app opts out by not stacking it.

Internationalization

Two independent systems: message catalogs for your UI strings, and content locales for your data (covered in [translations](./database/translations.md)).

Dashboard

A browser UI for your app, served by ohne with no build step. Pages are `.ts` modules that ship to the browser as type-stripped JavaScript.

Production