The full-stack framework for building intelligent web apps
TypeScript runs the web surface, Python runs the intelligence. Routing, auth, database, AI, and jobs - wired together by one config.
Everything wired.
Real libraries, composed through one config. Each capability is a thin plugin package - pick what your project needs, ignore the rest.
Drop-in auth
01.1Better Auth, Clerk, Firebase, Supabase, or WorkOS. Server code and client wiring land ready, waiting only for your keys.
Database, wired
01.2SQLite or PostgreSQL behind Prisma, Drizzle, Kysely, or the raw driver you prefer - a working client and schema from day one.
AI, ready in a module
01.3OpenAI, Anthropic, Google Gemini, or Ollama as flat modules that hand you the official SDK client - plus agents, RAG, tools, prompts, and MCP.
Jobs, first task ready
01.4Celery, RQ, or Dramatiq with a Redis or RabbitMQ broker. You get a queue and a task that already connects.
Python where it belongs
01.5AI and jobs live at the top level - ai/ and jobs/ - never buried under the server, never an afterthought.
Deploy anywhere
01.6Nitro presets for Node.js and Docker, Vercel, Netlify, Cloudflare Workers, Deno Deploy, and AWS Lambda. One build, one config, deploy where you want.
Everything in one file.
The same config composes auth, database, AI, and jobs. Flip the framework on the right and see what the alternative looks like.
import { defineConfig } from "@bionicjs/core";
import { betterAuth } from "@bionicjs/better-auth"; // auth
import { prisma } from "@bionicjs/prisma"; // database
import { anthropic } from "@bionicjs/anthropic"; // ai
import { celery } from "@bionicjs/celery"; // jobs
export default defineConfig({
auth: betterAuth({ emailAndPassword: { enabled: true }, socialProviders: { github: { clientId, clientSecret } } }),
database: prisma({ provider: "postgresql", url: env("DATABASE_URL") }),
ai: anthropic({ model: "claude-sonnet-4-5", agents: true, rag: true }),
jobs: celery({ broker: "redis://localhost:6379" }),
});// ── auth ──
import { clerkMiddleware } from "@clerk/nextjs/server";
export default clerkMiddleware({
publicRoutes: ["/", "/sign-in"],
});
// ── database ──
import { PrismaClient } from "@prisma/client";
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient };
export const db = globalForPrisma.prisma ?? new PrismaClient();
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = db;
// ── ai ──
import OpenAI from "openai";
export const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
// ── jobs ──
// No built-in — manual BullMQ or custom workerOne build, any platform.
The build contract is one .output/ directory. Point any supported target at it and ship.