mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-05-02 01:34:56 +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>
67 lines
1.7 KiB
Docker
67 lines
1.7 KiB
Docker
# Multi-stage build for WorkflowUI
|
|
# Stage 1: Backend (Python Flask)
|
|
FROM python:3.9-slim as backend-builder
|
|
|
|
WORKDIR /app/backend
|
|
|
|
COPY backend/requirements.txt .
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
gcc \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& pip install --no-cache-dir -r requirements.txt
|
|
|
|
COPY backend/ .
|
|
|
|
# Stage 2: Frontend (Node.js + Next.js)
|
|
FROM node:18-alpine as frontend-builder
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci --legacy-peer-deps
|
|
|
|
COPY . .
|
|
|
|
# Build Next.js application
|
|
RUN npm run build
|
|
|
|
# Stage 3: Runtime (Combined)
|
|
FROM node:18-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# Install Python runtime for backend
|
|
RUN apk add --no-cache python3 py3-pip gcc musl-dev linux-headers
|
|
|
|
# Copy frontend from builder
|
|
COPY --from=frontend-builder /app/node_modules ./node_modules
|
|
COPY --from=frontend-builder /app/.next ./.next
|
|
COPY --from=frontend-builder /app/public ./public
|
|
COPY --from=frontend-builder /app/package.json ./package.json
|
|
COPY --from=frontend-builder /app/next.config.js ./next.config.js
|
|
|
|
# Copy backend from builder
|
|
COPY --from=backend-builder /app/backend ./backend
|
|
|
|
# Install Python backend dependencies
|
|
RUN pip install --no-cache-dir --break-system-packages -r backend/requirements.txt
|
|
|
|
# Create data directory for SQLite
|
|
RUN mkdir -p /app/data /app/logs
|
|
|
|
# Environment variables
|
|
ENV NODE_ENV=production
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV DATABASE_URL=file:/app/data/workflows.db
|
|
ENV FLASK_APP=backend/server_sqlalchemy.py
|
|
|
|
# Expose ports
|
|
EXPOSE 3000 5000
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
|
|
CMD wget --quiet --tries=1 --spider http://localhost:3000/api/health || exit 1
|
|
|
|
# Start both services
|
|
CMD ["sh", "-c", "python3 backend/server_sqlalchemy.py & npm start"]
|