mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-03-07 17:43:28 +01:00
Phase 5 BYOB now at 43% (3/7 tasks complete): - TASK-007A: LocalSQL Adapter ✅ - TASK-007B: Local Backend Server ✅ - TASK-007C: WorkflowRunner ✅ - TASK-007D: Launcher UI ✅ Schema viewer/editor will be developed separately.
7.7 KiB
7.7 KiB
TASK-007 Progress: Integrated Local Backend
Last Updated: January 15, 2026 Status: Core Infrastructure Complete ✅
Summary
The BYOB (Bring Your Own Backend) local SQLite implementation is now functionally complete at the infrastructure level. Users can create, start, stop, and manage local backends from the editor. The remaining work (schema viewer/editor, data browser) will be handled separately.
Completed Subtasks
✅ TASK-007A: LocalSQL Adapter
Files created:
packages/noodl-runtime/src/api/adapters/local-sql/QueryBuilder.jspackages/noodl-runtime/src/api/adapters/local-sql/SchemaManager.jspackages/noodl-runtime/src/api/adapters/local-sql/LocalSQLAdapter.jspackages/noodl-runtime/src/api/adapters/local-sql/index.jspackages/noodl-runtime/src/api/adapters/types.jspackages/noodl-runtime/src/api/adapters/index.jspackages/noodl-runtime/test/adapters/QueryBuilder.test.js
Features:
- Parse Server compatible API on SQLite
- Auto-schema management (auto-create tables and columns)
- All CRUD operations supported
- Query operators: $eq, $ne, $lt, $lte, $gt, $gte, $in, $nin, $exists, $regex
- In-memory fallback when better-sqlite3 unavailable
✅ TASK-007B: Local Backend Server
Files created:
packages/noodl-editor/src/main/src/local-backend/LocalBackendServer.jspackages/noodl-editor/src/main/src/local-backend/BackendManager.jspackages/noodl-editor/src/main/src/local-backend/index.js
Features:
- Express server with REST API
- IPC handlers for create/start/stop/delete/status
- Multi-backend support with config persistence
- Per-project backend isolation
✅ TASK-007C: WorkflowRunner Implementation
Files created:
packages/noodl-editor/src/main/src/local-backend/WorkflowRunner.js
Features:
- Component graph execution engine
- Signal-based flow control
- Error handling and propagation
- Async operation support
✅ TASK-007D: Launcher Integration (UI)
Files created:
packages/noodl-editor/src/editor/src/views/panels/BackendServicesPanel/hooks/useLocalBackends.tspackages/noodl-editor/src/editor/src/views/panels/BackendServicesPanel/LocalBackendCard/LocalBackendCard.tsxpackages/noodl-editor/src/editor/src/views/panels/BackendServicesPanel/LocalBackendCard/LocalBackendCard.module.scss
Features:
- useLocalBackends hook for IPC communication
- LocalBackendCard component with start/stop/delete controls
- Status display (Running/Stopped)
- Endpoint URL display with copy-to-clipboard
- Integration with existing BackendServicesPanel
- Proper React dialogs (replaced prompt/confirm which don't work in Electron)
Bug Fixes Applied
- prompt()/confirm() not supported in Electron - Replaced with inline TextInput form and useConfirmationDialog hook
- IPC transport not available - Fixed to use
window.require('electron').ipcRenderer.invoke()pattern
Future Work (Separate Tasks)
📋 Schema Viewer/Editor Panel
To be developed separately - a visual interface for:
- Viewing tables and columns
- Adding/modifying schema
- Browsing/editing data
- Sample data generation
📋 TASK-007E: Migration & Export Tools (Optional)
- Schema export to PostgreSQL format
- Data migration wizard
- Environment configuration export
📋 TASK-007F: Standalone Deployment (Optional)
- Docker container generation
- Self-hosted deployment scripts
- Production configuration
Git Commits
dac5330 fix(editor): use correct IPC transport pattern in useLocalBackends
9181d5d fix(editor): replace prompt/confirm with proper dialogs in BackendServicesPanel
1c40f45 docs: update TASK-007 progress (4/6 subtasks complete)
[merge] Merge feature/task-007d-launcher-ui into cline-dev
5f61317 feat(editor): add local backends UI to BackendServicesPanel
[merge] Merge feature/task-007-integrated-backend into cline-dev
Architecture Summary
┌─────────────────────────────────────────────────────────┐
│ Electron Main Process │
│ ┌─────────────────────────────────────────────────────┐│
│ │ BackendManager ││
│ │ - Manages multiple backend instances ││
│ │ - Config persistence ││
│ │ - IPC handler registration ││
│ └─────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────┐│
│ │ LocalBackendServer (per backend) ││
│ │ - Express HTTP server ││
│ │ - REST API endpoints ││
│ │ - LocalSQLAdapter for DB operations ││
│ │ - WorkflowRunner for cloud functions ││
│ └─────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────┘
↕ IPC
┌─────────────────────────────────────────────────────────┐
│ Electron Renderer │
│ ┌─────────────────────────────────────────────────────┐│
│ │ BackendServicesPanel ││
│ │ ├─ Local Backends Section ││
│ │ │ └─ LocalBackendCard (per backend) ││
│ │ └─ External Backends Section ││
│ │ └─ BackendCard (per backend) ││
│ └─────────────────────────────────────────────────────┘│
│ ┌─────────────────────────────────────────────────────┐│
│ │ useLocalBackends hook ││
│ │ - IPC communication ││
│ │ - State management ││
│ │ - Actions: create/start/stop/delete ││
│ └─────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────┘
Testing Instructions
- Run
npm run dev - Open Backend Services panel (database icon in sidebar)
- Click
+next to "Local Backends" - Enter a name and click "Create"
- Backend appears in list with Start/Stop/Delete options
- Click "Start" to launch the local server
- Check terminal for server startup logs
- Endpoint URL displays when running (e.g.,
http://localhost:3001)