215 lines
5.1 KiB
Markdown
215 lines
5.1 KiB
Markdown
|
|
|
|||
|
|
|
|||
|
|
# Unify Developer Manual
|
|||
|
|
|
|||
|
|
### Build full applications with a single, unified codebase.
|
|||
|
|
|
|||
|
|
Unify is a full-stack application framework designed to remove the accidental complexity of modern web development. Instead of hand-wiring HTTP requests, state management, SQL queries, UI updates, permissions, and caching — Unify turns each **domain object** into a **live application object** that exists simultaneously on the server and client.
|
|||
|
|
|
|||
|
|
You write your application *once*.
|
|||
|
|
Unify takes care of syncing it everywhere it needs to be.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Why Unify?
|
|||
|
|
|
|||
|
|
Most web apps are assembled from disconnected technologies:
|
|||
|
|
React + REST + ORM + SQL + State Manager + WebSockets + UI Framework + Access Control…
|
|||
|
|
|
|||
|
|
Each layer requires boilerplate to keep everything in sync:
|
|||
|
|
|
|||
|
|
* serialize → send → parse → update → re-render → validate permissions
|
|||
|
|
* write SQL + write endpoints + write frontend state logic for the same entity
|
|||
|
|
|
|||
|
|
Unify eliminates these seams.
|
|||
|
|
|
|||
|
|
> **One class = data + logic + UI + permissions + real-time behavior**
|
|||
|
|
|
|||
|
|
The framework:
|
|||
|
|
|
|||
|
|
* turns your class into a database table (server)
|
|||
|
|
* generates UI components from that class (client)
|
|||
|
|
* syncs all changes via a structured WebSocket protocol
|
|||
|
|
* applies permissions automatically based on user role
|
|||
|
|
* integrates filtering, joins, pagination at the SQL level
|
|||
|
|
* caches and updates only changed fields
|
|||
|
|
|
|||
|
|
You focus on the domain model.
|
|||
|
|
Unify handles the rest.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
|
|||
|
|
### Why Unify Is AI-Optimized
|
|||
|
|
|
|||
|
|
Unify applications are self-describing graphs.
|
|||
|
|
The object structure defines:
|
|||
|
|
|
|||
|
|
UI layout
|
|||
|
|
|
|||
|
|
Backend relationships
|
|||
|
|
|
|||
|
|
Permissions
|
|||
|
|
|
|||
|
|
Sync rules
|
|||
|
|
|
|||
|
|
Navigation
|
|||
|
|
|
|||
|
|
A human developer may lose track of where objects live in the graph.
|
|||
|
|
|
|||
|
|
But AI can:
|
|||
|
|
|
|||
|
|
infer full graph topology
|
|||
|
|
|
|||
|
|
find optimal traversal paths
|
|||
|
|
|
|||
|
|
safely modify relationships
|
|||
|
|
|
|||
|
|
rewrite UI interactions without breaking structure
|
|||
|
|
|
|||
|
|
This means Unify enables:
|
|||
|
|
|
|||
|
|
AI-generated UI actions
|
|||
|
|
|
|||
|
|
AI-guided refactoring
|
|||
|
|
|
|||
|
|
AI-assisted CRUD creation
|
|||
|
|
|
|||
|
|
Automated join discovery
|
|||
|
|
|
|||
|
|
Intelligent navigation handling
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
## What does development feel like?
|
|||
|
|
|
|||
|
|
Example: define a `News` class
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
export default class news extends table {
|
|||
|
|
title = new text("Title");
|
|||
|
|
body = new text("Message");
|
|||
|
|
price = new number("Price");
|
|||
|
|
|
|||
|
|
permission() {
|
|||
|
|
this.allow(groups.visitor, "READ");
|
|||
|
|
this.allow(groups.admin, "WRITE");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
And a list view:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
export default class newsListTable extends gridView {
|
|||
|
|
header = new newsListTableHeader();
|
|||
|
|
body = new newsListTableBody(newsListItem, new collection(news));
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
You don’t manually:
|
|||
|
|
|
|||
|
|
* write SQL queries
|
|||
|
|
* define REST endpoints
|
|||
|
|
* build WebSocket handlers
|
|||
|
|
* implement CRUD actions
|
|||
|
|
* code client state syncing
|
|||
|
|
* generate UI markup
|
|||
|
|
|
|||
|
|
Unify does all of that from your object graph.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Architecture: What’s inside
|
|||
|
|
|
|||
|
|
| Layer | Responsibility |
|
|||
|
|
| ---------------------- | ------------------------------------------ |
|
|||
|
|
| **Domain Objects** | Single class shared by server + client |
|
|||
|
|
| **Render Collections** | Auto-loaded lists with pagination + search |
|
|||
|
|
| **Table Controller** | Database operations + joins |
|
|||
|
|
| **Socket Controller** | Real-time communication layer |
|
|||
|
|
| **UI Runtime** | Live elements, animations, events |
|
|||
|
|
| **Permission Engine** | Automatic security per object/action |
|
|||
|
|
|
|||
|
|
This creates a **Behavioral ORM**:
|
|||
|
|
|
|||
|
|
* objects contain their own server logic
|
|||
|
|
* queries are automatically composed from UI actions
|
|||
|
|
* users see only what they are permitted to interact with
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Why does this matter?
|
|||
|
|
|
|||
|
|
Modern software complexity isn’t caused by features — it’s caused by **glue code**.
|
|||
|
|
For every feature, you implement it 3–6 times: backend models, database schema, API routes, frontend state, UI bindings…
|
|||
|
|
|
|||
|
|
Unify collapses those layers into **one source of truth**.
|
|||
|
|
|
|||
|
|
The result:
|
|||
|
|
|
|||
|
|
* drastically fewer bugs
|
|||
|
|
* ultra-fast iteration cycles
|
|||
|
|
* real-time UX without extra work
|
|||
|
|
* secure-by-construction access rules
|
|||
|
|
* smaller teams can ship full apps
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Current focus
|
|||
|
|
|
|||
|
|
The goal of this release is to give developers a working demonstration of:
|
|||
|
|
|
|||
|
|
* full-stack sync with no REST boilerplate
|
|||
|
|
* real-time UI updates
|
|||
|
|
* built-in permissions
|
|||
|
|
* SQL searching / joining from the UI
|
|||
|
|
* cross-platform dynamic UI rendering (Windows / Mac / Web)
|
|||
|
|
|
|||
|
|
The included **News Application** shows:
|
|||
|
|
|
|||
|
|
* search/filter with SQL operators (`LIKE`, `OR`, `>=`)
|
|||
|
|
* item detail transitions + CRUD dialogs
|
|||
|
|
* login + role-based access
|
|||
|
|
* pagination
|
|||
|
|
* dynamic view/layout behavior
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Who is Unify for?
|
|||
|
|
|
|||
|
|
✔ Full-stack developers
|
|||
|
|
✔ Product developers who hate glue code
|
|||
|
|
✔ Teams who want to ship faster
|
|||
|
|
✔ Anyone who believes software should be simpler
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Status
|
|||
|
|
|
|||
|
|
Unify is actively developed and evolving.
|
|||
|
|
Contributions, feedback, and architectural discussion are welcome.
|
|||
|
|
|
|||
|
|
> Help define the future of unified application development.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Get started
|
|||
|
|
|
|||
|
|
The source includes:
|
|||
|
|
|
|||
|
|
* `unify_source/` – the core framework
|
|||
|
|
* `unify_application/` – working reference application
|
|||
|
|
|
|||
|
|
Clone and run the app to see the architecture in motion:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
git clone https://.../unify
|
|||
|
|
cd unify_application
|
|||
|
|
npm install
|
|||
|
|
npm start
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Documentation and complete API references are coming.
|
|||
|
|
|