Files
OpenNoodl/dev-docs/tasks/phase-5-multi-target-deployment/01-byob-backend/TASK-007-integrated-backend/TASK-007A-PROGRESS.md
2026-01-15 18:31:40 +01:00

6.4 KiB

TASK-007 Progress: Integrated Local Backend

Last Updated: January 15, 2026

Current Status: 4/6 Subtasks Complete

Completed

TASK-007A: LocalSQL Adapter

Files created:

  • packages/noodl-runtime/src/api/adapters/local-sql/QueryBuilder.js
  • packages/noodl-runtime/src/api/adapters/local-sql/SchemaManager.js
  • packages/noodl-runtime/src/api/adapters/local-sql/LocalSQLAdapter.js
  • packages/noodl-runtime/src/api/adapters/local-sql/index.js
  • packages/noodl-runtime/src/api/adapters/types.js
  • packages/noodl-runtime/src/api/adapters/index.js
  • packages/noodl-runtime/test/adapters/QueryBuilder.test.js

Features:

  • Parse Server compatible API on SQLite
  • Auto-schema management (auto-create tables)
  • 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.js
  • packages/noodl-editor/src/main/src/local-backend/BackendManager.js
  • packages/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.ts
  • packages/noodl-editor/src/editor/src/views/panels/BackendServicesPanel/LocalBackendCard/LocalBackendCard.tsx
  • packages/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

Remaining Tasks

📋 TASK-007E: Migration & Export Tools

  • Schema export to PostgreSQL format
  • Data migration wizard
  • Environment configuration export

📋 TASK-007F: Standalone Deployment

  • Docker container generation
  • Self-hosted deployment scripts
  • Production configuration

Git History

# TASK-007A/B/C merged to cline-dev from feature/task-007-integrated-backend
# TASK-007D merged to cline-dev from feature/task-007d-launcher-ui

Testing Notes

The UI components use IPC handlers registered in main.js. To test:

  1. Run npm run dev
  2. Open Backend Services panel
  3. Create a local backend (name it)
  4. Start/Stop the backend
  5. Check the displayed endpoint when running

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                 ││
│  └─────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────┘