AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Write the domain: one TypeScript entity class becomes your validation, SQL tables, GraphQL/REST API and forms — no codegen. Moving it to its own process is one line of config.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Write the domain. Everything else is a projection of it — including the wire.
One class declares the business object. From it come the TypeScript type, the validator,
the SQL table, the form contract and the API surface — and because the declaration is
JSON on the wire, the domain can move to its own process, or to another language, while
the code calling it does not change.
readOnly is not a note about intent: it removes the field from what a client may ever
send, so publishing cannot be a field write — it has to be an operation.檢視完整 README ↗Fougere is focused on your business only. Build it. Decide later which infrastructure topology you want, And which technology you want in front of it (GraphQL, REST…).
With one entity class, everything is derived (validation, table, API…). No DTOs to write. It's the same class derived for your needs! You split your app into fronds, one per business area, and each one can run inside it or on its own.
[!IMPORTANT] Fougere is in alpha, so use it with caution: APIs and conventions may still change. There are also many known issues.
A picture (or an animation!) is worth a thousand words!
So first, add a field to an entity and everything derives from it (form, validation, APIs, SQL):
Secondly, move a frond to its own process. One line of config, and the code stays the same.
Everything your handler receives is validated against your schema, and it is served over JSON-RPC by default. You can enable REST or GraphQL as well.
[!TIP] If you need full control over routes, for example, you can set them in config.
For now, only pnpm is fully supported:
pnpm create fougere
With no arguments, it walks you through creating a new app in an interactive terminal UI.
[!NOTE] It runs
fougere newfrom the CLI.
Fougere is heavily inspired by DDD and hexagonal architecture, but doesn't follow them strictly. Think of Fougere as a core around your business logic. Primary adapters, like REST or GraphQL, can be attached to your business logic, but Fougere doesn't know about them. In the same way, the core handles storage without knowing what it is. Implementations are provided for these adapters, but you can write your own to support any kind of input or output.
The one primitive to know is the Frond, the fractal leaf of a fern (fougère in French). It is like a bounded context: you can't call another frond's services directly, only the public code its handlers expose. In return, calling that code is made simple, with several ways to reach a frond's code.
Emit<PostPublished> to announce a fact, and accept a Fact<PostPublished> to subscribe to it. Across processes, it goes over HTTP by default, or through a broker you plug in (Kafka, NATS…).fougere freeze saves each version of your schema as extended JSON Schema. Migrations are deduced from that chain of versions: no SQL to write, and the whole history of changes is kept.