00TypeScript web, Python intelligence

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.

React + ViteNitro serverPython ai/ jobs
01What you get

Everything wired.

Real libraries, composed through one config. Each capability is a thin plugin package - pick what your project needs, ignore the rest.

ships

Drop-in auth

01.1

Better Auth, Clerk, Firebase, Supabase, or WorkOS. Server code and client wiring land ready, waiting only for your keys.

ships

Database, wired

01.2

SQLite or PostgreSQL behind Prisma, Drizzle, Kysely, or the raw driver you prefer - a working client and schema from day one.

ships

AI, ready in a module

01.3

OpenAI, Anthropic, Google Gemini, or Ollama as flat modules that hand you the official SDK client - plus agents, RAG, tools, prompts, and MCP.

ships

Jobs, first task ready

01.4

Celery, RQ, or Dramatiq with a Redis or RabbitMQ broker. You get a queue and a task that already connects.

ships

Python where it belongs

01.5

AI and jobs live at the top level - ai/ and jobs/ - never buried under the server, never an afterthought.

direction

Deploy anywhere

01.6

Nitro presets for Node.js and Docker, Vercel, Netlify, Cloudflare Workers, Deno Deploy, and AWS Lambda. One build, one config, deploy where you want.

02One config

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.

bionicjs
bionicjs.config.ts
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" }),
});
middleware.ts + lib/db.ts
// ── 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 worker