alepha
v0.18.3
Published
Easy-to-use modern TypeScript framework for building many kind of applications.
Downloads
10,926
Maintainers
Readme
[!WARNING] This project is in active development and may not be suitable for production use. Please report any issues or bugs on GitHub.
What is Alepha?
Full-stack TypeScript framework for agentic era. Define your schema once — get database, API, types, and forms.
- One schema, everywhere — Database, API validation, TypeScript types, React forms — all from one definition
- Full autocomplete — Client calls server with complete type safety, zero codegen
- Multi-runtime — Same code runs on Node, Bun, and Cloudflare Workers
- Deploy anywhere — Cloudflare, Vercel, Docker, bare metal
Built on predictable conventions and typed primitives — works great with AI coding assistants (BYOA).
Each layer builds on the previous.
| Layer | Description | Primitives |
|-------|-------------|---------------------------------------------------------|
| Foundation | DI, lifecycle, config | $inject, $env, $module, $hook, $logger |
| Backend | Database, queues, storage, API | $entity, $action, $queue, $bucket, $scheduler |
| Frontend | React with SSR, routing, i18n | $page, $head, $atom, $dictionary |
| Platform | Users, auth, jobs, audits | $realm, $job, $audit, $notification |
| Admin | Admin panel & auth UI | $uiAdmin, $uiAuth |
Example
// src/Api.ts
import { t } from "alepha";
import { $action } from "alepha/server";
import { $entity, $repository, db } from "alepha/orm";
const viewEntity = $entity({
name: "views",
schema: t.object({
id: db.primaryKey(),
createdAt: db.createdAt(),
}),
});
export class Api {
views = $repository(viewEntity);
inc = $action({
schema: { // ← validates + generates OpenAPI
response: t.object({
count: t.number()
})
},
handler: async () => {
await this.views.create({});
return { count: await this.views.count() };
},
});
}// src/AppRouter.tsx
import { $client } from "alepha/server/links";
import { $page } from "alepha/react/router";
import type { Api } from "./Api.ts";
export class AppRouter {
api = $client<Api>(); // ← fully typed, zero codegen
home = $page({
loader: () => this.api.inc(),
component: (props) => <div>Counter: {props.count}</div>,
});
}Getting Started
Requirements: Node.js 22+ or Bun 1.3+
# L1: Backend only
npx alepha init my-api --api
# L2: React frontend (with or without backend)
npx alepha init my-app --react
# L3: Api, Frontend, Admin UI
npx alepha init my-saas --adminLearn More
- Documentation
- llms.txt — for AI assistants
- GitHub
