diff --git a/ROADMAP.md b/ROADMAP.md
index db107704..fdc5d361 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -1,11 +1,11 @@
# ObjectUI Development Roadmap
-> **Last Updated:** March 23, 2026
+> **Last Updated:** April 1, 2026
> **Current Version:** v0.5.x
> **Spec Version:** @objectstack/spec v3.3.0
> **Client Version:** @objectstack/client v3.3.0
> **Target UX Benchmark:** ๐ฏ Airtable parity
-> **Current Priority:** AppShell Navigation ยท Designer Interaction ยท **View Config Live Preview Sync โ ** ยท Dashboard Config Panel ยท Airtable UX Polish ยท **Flow Designer โ ** ยท **App Creation & Editing Flow โ ** ยท **System Settings & App Management โ ** ยท **Right-Side Visual Editor Drawer โ ** ยท **Object Manager & Field Designer โ ** ยท **AI SDUI Chatbot (service-ai + vercel/ai) โ **
+> **Current Priority:** AppShell Navigation ยท Designer Interaction ยท **View Config Live Preview Sync โ ** ยท Dashboard Config Panel ยท Airtable UX Polish ยท **Flow Designer โ ** ยท **App Creation & Editing Flow โ ** ยท **System Settings & App Management โ ** ยท **Right-Side Visual Editor Drawer โ ** ยท **Object Manager & Field Designer โ ** ยท **AI SDUI Chatbot (service-ai + vercel/ai) โ ** ยท **Unified Home Dashboard โ **
---
@@ -13,7 +13,7 @@
ObjectUI is a universal Server-Driven UI (SDUI) engine built on React + Tailwind + Shadcn. It renders JSON metadata from the @objectstack/spec protocol into pixel-perfect, accessible, and interactive enterprise interfaces.
-**Where We Are:** Foundation is **solid and shipping** โ 35 packages, 99+ components, 6,700+ tests, 80 Storybook stories, 43/43 builds passing, ~85% protocol alignment. SpecBridge, Expression Engine, Action Engine, data binding, all view plugins (Grid/Kanban/Calendar/Gantt/Timeline/Map/Gallery), Record components, Report engine, Dashboard BI features, mobile UX, i18n (11 locales), WCAG AA accessibility, Console through Phase 20 (L3), **AppShell Navigation Renderer** (P0.1), **Flow Designer** (P2.4), **Feed/Chatter UI** (P1.5), **App Creation & Editing Flow** (P1.11), **System Settings & App Management** (P1.12), **Page/Dashboard Editor Console Integration** (P1.11), **Right-Side Visual Editor Drawer** (P1.11), and **Console Engine Schema Integration** (P1.14) โ all โ complete. **ViewDesigner** has been removed โ its capabilities (drag-to-reorder, undo/redo) are now provided by the ViewConfigPanel (right-side config panel).
+**Where We Are:** Foundation is **solid and shipping** โ 35 packages, 99+ components, 6,700+ tests, 80 Storybook stories, 43/43 builds passing, ~85% protocol alignment. SpecBridge, Expression Engine, Action Engine, data binding, all view plugins (Grid/Kanban/Calendar/Gantt/Timeline/Map/Gallery), Record components, Report engine, Dashboard BI features, mobile UX, i18n (11 locales), WCAG AA accessibility, Console through Phase 20 (L3), **AppShell Navigation Renderer** (P0.1), **Flow Designer** (P2.4), **Feed/Chatter UI** (P1.5), **App Creation & Editing Flow** (P1.11), **System Settings & App Management** (P1.12), **Page/Dashboard Editor Console Integration** (P1.11), **Right-Side Visual Editor Drawer** (P1.11), **Console Engine Schema Integration** (P1.14), and **Unified Home Dashboard** (P1.7.1) โ all โ complete. **ViewDesigner** has been removed โ its capabilities (drag-to-reorder, undo/redo) are now provided by the ViewConfigPanel (right-side config panel).
**What Remains:** The gap to **Airtable-level UX** is primarily in:
1. ~~**AppShell** โ No dynamic navigation renderer from spec JSON (last P0 blocker)~~ โ Complete
@@ -222,6 +222,22 @@ ObjectUI is a universal Server-Driven UI (SDUI) engine built on React + Tailwind
- โ `useNavigationOverlay` hook delegates `new_window` to `onNavigate` when available for app-specific URL control
- โ plugin-view `handleRowClick` supports `split` and `popover` branches
+### P1.7.1 Console โ Unified Home Dashboard (Workspace) โ
+
+- [x] **HomePage component** โ Unified landing page displaying all available applications
+- [x] **Route integration** โ `/home` route added with proper authentication guards
+- [x] **App cards grid** โ Responsive grid layout showing all active apps with icons, descriptions, and branding colors
+- [x] **QuickActions section** โ Quick access cards for creating apps, managing objects, and system settings
+- [x] **Recent items** โ Display recently accessed objects, dashboards, and pages using `useRecentItems` hook
+- [x] **Starred items** โ Display user-favorited items using `useFavorites` hook with star/unstar toggle
+- [x] **Empty state** โ Helpful guidance for new users with "Create First App" and "System Settings" CTAs
+- [x] **i18n support** โ All labels support internationalization via `useObjectTranslation`
+- [x] **RootRedirect update** โ Root path (`/`) now redirects to `/home` instead of first app
+- [x] **Responsive design** โ Mobile-friendly grid layouts that adapt to screen size
+- [x] **Airtable/Notion UX pattern** โ Inspired by industry-leading workspace home pages
+
+**Impact:** Users now have a unified workspace dashboard that provides overview of all applications, quick actions, and recent activity. This eliminates the previous behavior of auto-redirecting to the first app, giving users better control and visibility.
+
### P1.8 Console โ View Config Panel (Phase 20)
- [x] Inline ViewConfigPanel for all view types (Airtable-style right sidebar)
diff --git a/apps/console/src/App.tsx b/apps/console/src/App.tsx
index e317f38d..88c6396c 100644
--- a/apps/console/src/App.tsx
+++ b/apps/console/src/App.tsx
@@ -55,6 +55,9 @@ const PermissionManagementPage = lazy(() => import('./pages/system/PermissionMan
const AuditLogPage = lazy(() => import('./pages/system/AuditLogPage').then(m => ({ default: m.AuditLogPage })));
const ProfilePage = lazy(() => import('./pages/system/ProfilePage').then(m => ({ default: m.ProfilePage })));
+// Home Page (lazy โ landing page)
+const HomePage = lazy(() => import('./pages/home/HomePage').then(m => ({ default: m.HomePage })));
+
import { useParams } from 'react-router-dom';
import { ThemeProvider } from './components/theme-provider';
import { ConsoleToaster } from './components/ConsoleToaster';
@@ -456,44 +459,14 @@ function findFirstRoute(items: any[]): string {
return '';
}
-// Redirect root to default app
+// Redirect root to home page
function RootRedirect() {
- const { apps, loading, error } = useMetadata();
- const navigate = useNavigate();
- const activeApps = apps.filter((a: any) => a.active !== false);
- const defaultApp = activeApps.find((a: any) => a.isDefault === true) || activeApps[0];
-
+ const { loading } = useMetadata();
+
if (loading) return ;
- if (defaultApp) {
- return ;
- }
- return (
-
-
- {error ? 'Failed to Load Configuration' : 'No Apps Configured'}
-
- {error
- ? 'There was an error loading the configuration. You can still create an app or access System Settings.'
- : 'No applications have been registered. Create your first app or configure your system.'}
-
-