Bloom is a TypeScript full-stack framework built for agentic coding. UIKit (React) + AppKit (Node) + Bloom CLI — cover web, desktop (Electron) and mobile (Capacitor) from one codebase. Every package ships llms.txt + AGENTS.md so an AI coding agent has the real API in front of it rather than a guess.
AppKit handles your backend. UIKit handles your frontend. Bloom CLI wires them together and scaffolds any platform in one command. They compose, but work standalone.
14 backend modules. One pattern. Auth, database, cache, queue, storage, email, events — plus an MCP server and a tenant-isolation verifier. All auto-scaling from local to production.
30 React components and a locked semantic-token palette — bg-blue-600 compiles to nothing. A library, not a framework: your app owns its chrome.
Scaffold web, desktop (Electron), or mobile (Capacitor) apps in one command with Feature-Based Component Architecture.
npm install -g @bloomneo/bloom
bloom create my-app # web app
bloom create my-app userapp # auth + user management
bloom create my-app adminapp # admin console (audit, settings, dashboard)
bloom create my-app desktop-basicapp # Electron desktop
bloom create my-app mobile-basicapp # iOS + Android via Capacitor
No routing config. No manual registration. File-based auto-discovery on both frontend and backend.
src/api/features/invoice/
├── invoice.route.ts # auto-mounts at /api/invoice
└── invoice.service.ts
src/web/features/invoice/pages/
├── index.tsx # → /invoice
└── [id].tsx # → /invoice/:id
bloom create my-app
bloom create my-app userapp
bloom create my-app adminapp
bloom create my-app desktop-basicapp
bloom create my-app mobile-basicapp
Closest in scope to T3 Stack or RedwoodJS — not Laravel or NestJS directly. Bloom's differentiator is agentic-first design and cross-platform coverage in one stack. Honest comparison:
| Capability | Bloom | Laravel | NestJS | T3 Stack | Next.js |
|---|---|---|---|---|---|
| Backend toolkit | ✓ AppKit | ✓ (PHP) | ✓ core | Next API | Partial |
| Frontend component library | ✓ UIKit | Blade | — | ✓ Next | ✓ |
| Desktop (Electron) template | ✓ | — | — | — | — |
| Mobile native (Capacitor) | ✓ | — | — | — | — |
Ships llms.txt | ✓ | — | — | — | — |
Ships AGENTS.md | ✓ | — | — | — | — |
| Agent skills bundled | ✓ | — | — | — | — |
| Drift-checked docs (CI) | ✓ | — | — | — | — |
Auto-hydrated docs/ in scaffold | ✓ | — | — | — | — |
Best fit today: solo developers and small teams (≤10) shipping with heavy Claude Code / Cursor / Copilot usage, and anyone building cross-platform products without stitching three stacks. Not yet the right fit: large enterprise teams where ecosystem age and hiring pool matter more than agentic ergonomics — use Laravel or NestJS for those.
Where a file lives is what it does. A call under src/api/ runs on the server — there is no second reading, and no directive to trace.
The frontend calls the backend over HTTP, like any other client. Either side ships, scales and gets rewritten without the other.
Browser, desktop and phone from one source tree, against one API — not four projects that drift apart.
Conventions remove the choices. A wrong path is a compile error, an ungated route warns at boot.
LLMs hallucinate APIs for undocumented packages. Every Bloom package ships llms.txt and AGENTS.md inside the npm tarball — copied into your project's docs/ folder automatically on every npm install.
llms.txtComplete API reference regenerated on every build. Every method, every signature — never drifts from source.
AGENTS.mdRules for AI agents: always-do, never-do, canonical patterns. A wrong method name fails at the compiler, not at runtime.
docs/Postinstall copies the latest docs from node_modules/ into your project on every install.
llms.txt + AGENTS.md machine-readable specs so an AI agent has the real API in front of it rather than a guess.
llms.txt, AGENTS.md, agent skills and per-component @llm-rule JSDoc, docs are drift-checked in CI, and scaffolded projects get them in docs/ automatically. In scope Bloom is closest to T3 Stack or RedwoodJS — but extends to cross-platform (web + desktop + mobile) from one stack.
bloom create, then run npm install. The postinstall hook copies appkit + uikit llms.txt + AGENTS.md into docs/, and every Claude Code skill into .claude/skills/. Point your agent at the project root — it reads AGENTS.md first, then the package-specific docs. Agents generate correct code without guessing API shapes.
package.json — so agents never read stale guidance.