11# @objectstack/client Evaluation for Low-Code App UI Development
22
33> ** Date:** February 10, 2026
4- > ** Spec Version:** @objectstack/spec v2.0.1
5- > ** Client Version:** @objectstack/client v2.0.1
4+ > ** Spec Version:** @objectstack/spec v2.0.4
5+ > ** Client Version:** @objectstack/client v2.0.4
6+ > ** Auth Plugin Version:** @objectstack/plugin-auth v2.0.3
67> ** ObjectUI Version:** v0.5.x
78> ** Scope:** Evaluate whether @objectstack/client can fully support developing a complete low-code application UI based on the @objectstack/spec protocol
89
@@ -104,6 +105,7 @@ The @objectstack/spec defines `ActionSchema` with 5 action types:
104105
105106| Capability | Implementation | Client Dependency | Status |
106107| ------------| ---------------| -------------------| --------|
108+ | ** Server-Side Auth** | ` @objectstack/plugin-auth ` (AuthPlugin) | ObjectKernel plugin | ✅ Complete |
107109| ** Token Authentication** | ` ObjectStackAdapter({ token }) ` | Client constructor | ✅ Complete |
108110| ** Dynamic Token Injection** | ` ObjectStackAdapter({ fetch }) ` | Custom fetch wrapper | ✅ Complete |
109111| ** Session Management** | ` @object-ui/auth ` (AuthProvider) | better-auth integration | ✅ Complete |
@@ -114,7 +116,7 @@ The @objectstack/spec defines `ActionSchema` with 5 action types:
114116| ** OAuth/SSO** | better-auth plugins | External auth providers | ✅ Complete |
115117| ** Multi-Factor Auth** | better-auth 2FA plugin | External auth providers | ✅ Available |
116118
117- ** Auth Assessment: 100% — Full auth stack is implemented via @object-ui/auth + better-auth.**
119+ ** Auth Assessment: 100% — Full auth stack is implemented. Server-side via @ objectstack/plugin-auth (better-auth powered, ObjectQL persistence). Client-side via @object-ui/auth + better-auth.**
118120
119121### 2.6 Multi-Tenancy
120122
@@ -170,6 +172,19 @@ A complete low-code app built on @objectstack/spec follows this data flow:
170172│ │ │
171173│ ▼ │
172174│ ┌──────────────────────────────────────────────────────────────┐ │
175+ │ │ ObjectStack Server │ │
176+ │ │ │ │
177+ │ │ ObjectKernel │ │
178+ │ │ ├── ObjectQLPlugin (query engine) │ │
179+ │ │ ├── DriverPlugin (data storage) │ │
180+ │ │ ├── AuthPlugin (@objectstack/plugin-auth) │ │
181+ │ │ │ └── better-auth (session, OAuth, 2FA, passkeys) │ │
182+ │ │ ├── HonoServerPlugin (HTTP /api/v1/*) │ │
183+ │ │ └── AppPlugin (stack config) │ │
184+ │ └──────────────────────────────────────────────────────────────┘ │
185+ │ │ │
186+ │ ▼ │
187+ │ ┌──────────────────────────────────────────────────────────────┐ │
173188│ │ ObjectUI Runtime │ │
174189│ │ │ │
175190│ │ AuthProvider → PermissionProvider → TenantProvider │ │
@@ -208,7 +223,7 @@ A complete low-code app built on @objectstack/spec follows this data flow:
208223| ** Validation Rules** | ` Data.Validation ` | Server + client-side | ` @object-ui/core ` | ✅ Yes |
209224| ** Permissions/RBAC** | ` Security.RBAC ` | Role data from server | ` @object-ui/permissions ` | ✅ Yes |
210225| ** Multi-Tenancy** | ` System.Tenant ` | X-Tenant-ID header | ` @object-ui/tenant ` | ✅ Yes |
211- | ** Authentication** | ` Identity.Auth ` | Token via custom fetch | ` @object-ui/auth ` | ✅ Yes |
226+ | ** Authentication** | ` Identity.Auth ` | Token via custom fetch | ` @object-ui/auth ` + ` @objectstack/plugin-auth ` | ✅ Yes |
212227| ** i18n** | ` Shared.i18n ` | None (client-side) | ` @object-ui/i18n ` | ✅ Yes |
213228| ** Theming** | ` UI.Theme ` | None (client-side) | Theme Provider | ✅ Yes |
214229| ** AI Assistance** | ` AI.Config ` | AI API endpoints | ` plugin-ai ` | ✅ Yes |
@@ -291,7 +306,49 @@ export default defineStack({
291306});
292307```
293308
294- ### 5.2 Runtime Initialization
309+ ### 5.2 Server-Side Setup (with @objectstack/plugin-auth )
310+
311+ ``` typescript
312+ // server.ts — Bootstrap the ObjectStack server with authentication
313+ import { ObjectKernel } from ' @objectstack/core' ;
314+ import { ObjectQLPlugin } from ' @objectstack/objectql' ;
315+ import { AppPlugin , DriverPlugin } from ' @objectstack/runtime' ;
316+ import { HonoServerPlugin } from ' @objectstack/plugin-hono-server' ;
317+ import { InMemoryDriver } from ' @objectstack/driver-memory' ;
318+ import { AuthPlugin } from ' @objectstack/plugin-auth' ;
319+ import config from ' ./objectstack.config' ;
320+
321+ async function startServer() {
322+ const kernel = new ObjectKernel ();
323+
324+ // Core engine + data driver
325+ await kernel .use (new ObjectQLPlugin ());
326+ await kernel .use (new DriverPlugin (new InMemoryDriver ()));
327+
328+ // Application stack
329+ await kernel .use (new AppPlugin (config ));
330+
331+ // Authentication via @objectstack/plugin-auth
332+ // Provides /api/v1/auth/* endpoints (sign-in, sign-up, session, OAuth, 2FA, etc.)
333+ await kernel .use (new AuthPlugin ({
334+ secret: process .env .AUTH_SECRET || ' dev-secret' ,
335+ baseUrl: ' http://localhost:3000' ,
336+ providers: [
337+ // Optional: OAuth providers
338+ // { id: 'google', clientId: '...', clientSecret: '...' },
339+ ],
340+ }));
341+
342+ // HTTP server
343+ await kernel .use (new HonoServerPlugin ({ port: 3000 }));
344+
345+ await kernel .bootstrap ();
346+ }
347+
348+ startServer ();
349+ ```
350+
351+ ### 5.3 Runtime Initialization
295352
296353``` typescript
297354// App.tsx — Bootstrap the low-code runtime
@@ -312,7 +369,7 @@ function App() {
312369 });
313370
314371 return (
315- < AuthProvider authUrl = " /api/auth" >
372+ < AuthProvider authUrl = " /api/v1/ auth" >
316373 <TenantProvider >
317374 <PermissionProvider >
318375 < SchemaRenderer
@@ -326,7 +383,7 @@ function App() {
326383}
327384```
328385
329- ### 5.3 Object Definition
386+ ### 5.4 Object Definition
330387
331388``` typescript
332389// objects/task.object.ts — Spec-compliant object definition
@@ -382,7 +439,7 @@ export const TaskObject = ObjectSchema.create({
382439The combination provides:
383440- ** Data Layer** : Complete CRUD, bulk ops, metadata, and caching via ObjectStackAdapter
384441- ** UI Layer** : 35 packages, 91+ components, 13+ view types covering all spec requirements
385- - ** Security** : Auth , RBAC, field/row-level permissions, multi-tenancy
442+ - ** Security** : Server-side auth via @ objectstack/plugin-auth , client-side via @ object-ui/auth , RBAC, field/row-level permissions, multi-tenancy
386443- ** Developer Experience** : TypeScript-first, Shadcn design quality, expression engine
387444- ** Extensibility** : Plugin system, custom widgets, theme customization
388445
0 commit comments