mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-05-01 17:24:57 +00:00
## Phase 1: Monolithic File Refactoring ✅ - Refactored 8 large files (300-500 LOC) into 40+ modular components/hooks - All files now <150 LOC per file (max 125 LOC) - CanvasSettings: 343 → 7 components - SecuritySettings: 273 → 6 components - NotificationSettings: 239 → 6 components - Editor/Toolbar: 258 → 7 components - InfiniteCanvas: 239 → 10 modules - WorkflowCard: 320 → 5 components + custom hook - useProjectCanvas: 322 → 8 hooks - projectSlice: 335 → 4 Redux slices ## Phase 2: Business Logic Extraction ✅ - Extracted logic from 5 components into 8 custom hooks - register/page.tsx: 235 → 167 LOC (-29%) - login/page.tsx: 137 → 100 LOC (-27%) - MainLayout.tsx: 216 → 185 LOC (-14%) - ProjectSidebar.tsx: 200 → 200 LOC (refactored) - page.tsx (Dashboard): 197 → 171 LOC (-13%) - New hooks: useAuthForm, usePasswordValidation, useLoginLogic, useRegisterLogic, useHeaderLogic, useResponsiveSidebar, useProjectSidebarLogic, useDashboardLogic ## Phase 3: Dead Code Analysis & Implementation ✅ - Identified and documented 3 unused hooks (244 LOC) - Removed useRealtimeService from exports - Cleaned 8 commented lines in useProject.ts - Documented useExecution stub methods - Removed 3 commented dispatch calls in useCanvasKeyboard - Fixed 3 'as any' type assertions ## Phase 4: Stub Code Implementation ✅ - Fully implemented useExecution methods: execute(), stop(), getDetails(), getStats(), getHistory() - Integrated useCanvasKeyboard into InfiniteCanvas with Redux dispatch - Verified useCanvasVirtualization for 100+ items - Enhanced useRealtimeService documentation for Phase 4 WebSocket integration ## Backend Updates - Added SQLAlchemy models: Workspace, Project, ProjectCanvasItem - Added Flask API endpoints for CRUD operations - Configured multi-tenant filtering for all queries - Added database migrations for new entities ## Build Verification ✅ - TypeScript strict mode: 0 errors - Production build: ✅ Successful (161 kB First Load JS) - No breaking changes - 100% backward compatibility maintained ## Documentation Generated - 6 comprehensive guides (70+ KB total) - Test templates for all new implementations - Quick reference for all 42 hooks - Implementation checklist and deployment guide Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
92 lines
2.1 KiB
YAML
92 lines
2.1 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# WorkflowUI Application (Next.js + Flask)
|
|
workflowui:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: metabuilder-workflowui
|
|
ports:
|
|
- "3000:3000"
|
|
- "5000:5000"
|
|
environment:
|
|
# Node.js
|
|
- NODE_ENV=production
|
|
- NEXTAUTH_URL=http://localhost:3000
|
|
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET:-change-me-in-production}
|
|
|
|
# Flask Backend
|
|
- FLASK_ENV=production
|
|
- FLASK_APP=backend/server_sqlalchemy.py
|
|
- DATABASE_URL=file:/app/data/workflows.db
|
|
- PYTHONUNBUFFERED=1
|
|
|
|
# SMTP Relay (optional)
|
|
- SMTP_RELAY_HOST=${SMTP_RELAY_HOST:-smtp-relay}
|
|
- SMTP_RELAY_PORT=${SMTP_RELAY_PORT:-2525}
|
|
- SMTP_FROM_ADDRESS=${SMTP_FROM_ADDRESS:-noreply@metabuilder.local}
|
|
|
|
volumes:
|
|
- workflowui-data:/app/data
|
|
- workflowui-logs:/app/logs
|
|
|
|
restart: unless-stopped
|
|
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/api/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
depends_on:
|
|
- smtp-relay
|
|
|
|
networks:
|
|
- metabuilder-network
|
|
|
|
# SMTP Relay Service (optional but recommended)
|
|
smtp-relay:
|
|
build:
|
|
context: ../smtprelay
|
|
dockerfile: Dockerfile
|
|
container_name: metabuilder-smtp-relay
|
|
ports:
|
|
- "2525:2525"
|
|
- "8081:8080"
|
|
|
|
environment:
|
|
- SMTP_LISTEN_HOST=0.0.0.0
|
|
- SMTP_LISTEN_PORT=2525
|
|
- HTTP_LISTEN_HOST=0.0.0.0
|
|
- HTTP_LISTEN_PORT=8080
|
|
- GMAIL_USERNAME=${GMAIL_USERNAME:-}
|
|
- GMAIL_APP_PASSWORD=${GMAIL_APP_PASSWORD:-}
|
|
- FORWARD_TO=${FORWARD_TO:-noreply@metabuilder.local}
|
|
- ALLOW_ANY_RCPT=true
|
|
- ADD_X_HEADERS=true
|
|
- MAX_STORE=500
|
|
|
|
restart: unless-stopped
|
|
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 20s
|
|
|
|
networks:
|
|
- metabuilder-network
|
|
|
|
volumes:
|
|
workflowui-data:
|
|
driver: local
|
|
workflowui-logs:
|
|
driver: local
|
|
|
|
networks:
|
|
metabuilder-network:
|
|
driver: bridge
|