These are the foundational principles that underpin every data model, API, and UI pattern in PageSpace.
Everything in PageSpace is a page: documents, folders, AI chats, channels, task lists, sheets, canvases, code files, and uploaded files. This single recursive content model enables:
π Project/ β FOLDER page
βββ π Requirements β DOCUMENT page
βββ π Sprint Board β TASK_LIST page
βββ π¬ Team Chat β CHANNEL page
βββ π€ Project AI β AI_CHAT page
βββ π Assets/ β FOLDER page
βββ π brief.pdf β FILE page
The tree hierarchy isn't just organization β it's semantics. Moving a page to a new parent changes its meaning, just like moving a word in a sentence changes the sentence's meaning.
This spatial-semantic model drives three systems:
Permissions flow downward. If you own a drive, you own every page in it. Page-level permissions grant specific access to specific users on specific pages.
AI context flows upward. An AI agent nested inside a folder can reference its sibling and parent pages. This means:
π Marketing Campaign/
βββ π Brand Guidelines
βββ π Target Audience
βββ π€ Campaign AI β Can reference Brand Guidelines and Target Audience
The Campaign AI inherits context from its location. It knows about Brand Guidelines and Target Audience because they're siblings in the same folder. This context awareness is automatic β no configuration required.
A drive is a top-level workspace. Every drive has a single owner with irrevocable full access.
OWNER, ADMIN, or MEMBERAI conversations aren't bolted on β they're pages in the tree. This means:
ask_agent toolEvery message, every edit, every tool call is persisted to PostgreSQL immediately. This is not client-side state management β it's durable, queryable storage.
Benefits:
While the tree encodes structural meaning (this document belongs to this project), tags encode cross-cutting context (this document is a draft, high priority, or tagged "Q1").
Tags are additive metadata β they never override structural meaning. Pages can be filtered, grouped, or surfaced across the tree using tags.
The frontend isn't a set of disjoint apps β it's a recursive viewer of a recursive model. The same page tree powers:
One data model powers every interface, making the system both extensible and predictable.
Search docs, blog posts, and more.