@treenity/core
v3.0.1
Published
Composable typed tree engine — three primitives, everything else composes. Nodes, components, contexts.
Readme
@treenity/core
A spatial protocol for typed data. Three primitives. Everything else composes.
A single business concept — say, an Order — lives in five places: database schema, ORM, API DTO, frontend state, validation rules. Each copy drifts. Each sync layer adds bugs. Meanwhile, AI agents drown in infinite code grammar with no structural guardrails.
Treenity solves this with three primitives:
Node = { $path, $type, ...components }
Component = { $type, ...data }
Context = (Type, Context) → HandlerInstall
npm install @treenity/coreOr scaffold a full project:
npx create-treenity my-appQuick Example
import { registerType } from '@treenity/core/comp';
class TodoItem {
title = '';
done = false;
toggle() {
this.done = !this.done;
}
}
registerType('todo.item', TodoItem);Fields = data schema. Methods = server-side actions. toggle() runs inside an Immer draft — mutate this freely, patches are generated and broadcast to subscribers.
// React — one hook, fully typed
const item = usePath('/todo/list/1', TodoItem);
item.title; // reactive read
await item.toggle(); // tRPC mutation → Immer patch → SSE broadcastWhat You Get for Free
| Feature | How | |---|---| | Persistence | Memory, filesystem, or MongoDB — composable store wrappers | | Real-time sync | SSE subscriptions, open two tabs and changes sync | | Type validation | JSON schemas auto-generated from classes | | ACL | Per-node bitmask permissions inherited down the tree | | AI access | Every node readable via MCP — Claude can query and mutate your data | | Multi-surface | Same type renders in React, Telegram, CLI — register context handlers | | Mounts | Mount MongoDB, REST APIs, other Treenity instances into one namespace |
Packages
- @treenity/core — primitives, store, server, schema, actions
- @treenity/react — hooks, admin UI, reactive cache
Links
License
AGPL-3.0
