AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Node 없이 컴포넌트를 제공하고, BarefootJS는 TSX를 Go·Rails·Django·Perl·PHP·Rust 템플릿으로 컴파일합니다
Components without the Node server. BarefootJS compiles TSX components into your backend's native templates — Go, Rails, Django, Perl, PHP, Rust. No Node in production.
개발 도구TypeScript · GoGitHub @piconic-ai온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
TSX in. Your stack out.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
TSX in. Your stack out.
Barefoot compiles signal-based TSX into Hono, Echo, or whatever stack you ship on.
No virtual DOM. No SPA required.
Stability. Pre-1.0, so a minor release is still the breaking-change slot. On a beta
surface a breaking change ships with a migration note in the changelog; an alpha surface
may change without notice, so pin exact versions if you depend on it. Each row below links to
that surface's section of the API Reference, which lists every API with the release it
first shipped in, its tier and an example — generated from the JSDoc on the exports.README 전문 보기 ↗[!NOTE] Stability. Pre-1.0, so a minor release is still the breaking-change slot. On a beta surface a breaking change ships with a migration note in the changelog; an alpha surface may change without notice, so pin exact versions if you depend on it. Each row below links to that surface's section of the API Reference, which lists every API with the release it first shipped in, its tier and an example — generated from the JSDoc on the exports.
Surface Status Covers Runtime Beta The @barefootjs/clientAPIs a component author writes:createSignal,createEffect,createMemo,onMount,onCleanup,untrack,batch, context, portals,<Async>/<Region>,queryHref. The rest of the package is alpha or compiler-internalDirectives Beta "use client"and/* @client */Browser mount Beta The two APIs an app calls itself on the browser-only @barefootjs/client/runtimeentry:render()for CSR andsetupStreaming()for a streaming page or the client routerVite plugin Beta What configuring a build takes: @barefootjs/vite'sbarefoot(), its four options, theafterEmitcontext, and the files it writesAdapter builders Alpha Each adapter's /vitesubpath and the helpers re-exported for themAdapters Alpha The adapter classes, everything @barefootjs/jsxexports, and the language-side runtimes
Requires Node 22+.
npm create barefootjs@latest
You'll be prompted for a target directory (defaults to my-app). After scaffolding:
cd my-app # or whatever name you entered at the prompt
npm install
npm run dev
Then open the URL the dev server prints (defaults to http://localhost:8787). The starter app ships a Counter component you can edit at components/Counter.tsx.
The full walkthrough — adapter / CSS choices, generated layout, and editing the Counter — lives in docs/core/quick-start.mdx.
BarefootJS ships an agent skill that gives AI deep knowledge of the compiler, IR, CLI, and component system — so it can build, test, and debug BarefootJS components autonomously. Works with both Claude Code and Codex.
Claude Code:
/plugin marketplace add piconic-ai/barefootjs
/plugin install barefootjs@barefootjs
Codex:
install the barefootjs skill from piconic-ai/barefootjs
Once installed, the agent can use the bf CLI, write IR tests, trace signal graphs, and scaffold components — all without reading source files. See Testing & CLI for the full workflow.
BarefootJS compiles JSX into your backend's native template format — no Node.js required at serving time for non-TypeScript backends. The compiler produces a backend-agnostic IR; an adapter converts it into the target language's templates plus a small runtime.
| Language | Backend | Package |
|---|---|---|
| TypeScript | Hono | @barefootjs/hono |
| Go | html/template | @barefootjs/go-template |
| Perl | Mojolicious | @barefootjs/mojolicious |
| Perl | Text::Xslate | @barefootjs/xslate |
| Ruby | ERB | @barefootjs/erb |
| Python | Jinja2 | @barefootjs/jinja |
| PHP | Twig | @barefootjs/twig |
| PHP | Laravel Blade | @barefootjs/blade |
| Rust | minijinja | @barefootjs/rust |
| Java | Pebble |
The IR contract is stable — see Adapters and write a custom adapter for any backend not listed here.
Tracked patterns the compiler / adapters / runtime don't yet handle live in the known-limitation registry, one file per entry under packages/adapter-tests/limitations/. Each entry states the input shape (given), what the Hono reference renders for it (expected), what the affected adapters do instead (actual), and the minimal conformance fixtures that reproduce it; which adapters are affected is derived from the pins that cite the entry. kind classifies the behaviour: silent is a divergence to fix, refusal is a capability gap behind a loud, escapable compile-time refusal, and by-design is an accepted permanent position with its reason stated. The registry is rendered on the docs compatibility matrix page.
Run bun run compat for a live component × adapter compile-compatibility matrix, generated by compiling every ui/ component against every workspace adapter in-process. The committed snapshot lives at ui/compat.lock.json (regenerated with bun run compat:lock; CI fails on drift). The matrix measures compile compatibility only, not render identity — rendered-output parity is verified separately by the adapter conformance suite. This tooling is repo-internal (packages/compat, never published) — the published CLI does not ship it.
This project is inspired by and built with:
Distributed under the MIT License. See LICENSE for more information.
@barefootjs/pebble |
| — | CSR (browser only) | @barefootjs/client |