# Framework Integration

Drop chunk-engine into any web handler — the same three-step recipe across Python, JavaScript, and Rust frameworks.

chunk-engine is a plain library call with no services, no global state, and no
warm-up. That makes web integration the same everywhere, in every language:

1. **Read the uploaded bytes** from the request.
2. **Pass them with a `filename`** so the engine can route by extension (a named
   `Blob`/`File` supplies its own name).
3. **Return the chunks** — or stream them as they're produced.

  Handlers below use the default mode for brevity. In practice pass
  `mode="semantic"` for LLM/RAG ingestion or `mode="section"` for search
  indexing — see [Chunking Modes](/docs/chunking-modes).

## By language

  - [Python](/docs/framework-integration/python) — FastAPI, Flask, Django, Litestar, aiohttp, Celery.
  - [JavaScript](/docs/framework-integration/javascript) — Express, Fastify, Hono, Next.js, NestJS, SvelteKit — Node, Bun, Deno.
  - [Rust](/docs/framework-integration/rust) — Axum, Actix Web, Rocket, Warp.

For streaming responses (forwarding chunks as NDJSON while the document is still
parsing), see [Streaming](/docs/streaming) — each language page includes a
streaming handler where the framework supports it.
