Files
metabuilder/docs/reference/PRIORITY_ACTION_PLAN.md
JohnDoe6345789 3537211368 feat(todos): Add comprehensive TODO lists for various project areas
- Created TODO files for Testing, DBAL, Frontend, Packages, Database, and Lua Scripting.
- Updated README with a quick reference table for all TODO files and their priorities.
- Added specific tasks for improving testing coverage, implementing DBAL features, enhancing frontend components, and refining package management.
- Included documentation tasks to ensure thorough coverage and clarity across all areas.
- Implemented initial unit tests for the useAuth hook and improved password generation logic.
- Enhanced package loader functionality to support modular package seed data retrieval.
- Updated page renderer to include public role in permission checks.
- Added comments for future unit tests in workflow engine and other critical areas.
2025-12-25 15:47:15 +00:00

784 lines
21 KiB
Markdown

# 🎯 MetaBuilder Priority Action Plan
## Comprehensive Improvement Roadmap for Components, State, & Packages
**Document Date:** December 25, 2025
**Status:** Active - Ready for Implementation
**Total Effort:** ~180 hours over 8-10 weeks
**Priority:** Critical path blocking production readiness
TODO: This file uses ./docs/... links which are broken from docs/reference/; update to correct relative paths.
---
## 📊 Executive Summary
MetaBuilder faces three critical improvement areas that impact maintainability, testability, and feature completeness:
| Area | Issue | Impact | Effort |
|------|-------|--------|--------|
| **Components** | 8 files exceeding 150 LOC (4,146 LOC over) | Code quality, testability, reuse | 65 hours |
| **State Management** | Scattered across React/Context/Database | Consistency, debugging, scalability | 45 hours |
| **Package System** | Incomplete asset handling & import/export | Feature delivery, user experience | 40 hours |
| **Documentation** | 4,935+ LOC scattered across 50+ files | Onboarding, team velocity, maintenance | 30 hours |
---
## 🔴 PHASE 1: CRITICAL PATH (Weeks 1-2, 35 hours)
### Priority 1A: Component Refactoring - Top 3 Violations
**Status:** Strategy complete, implementation ready
**Effort:** 28 hours | **Timeline:** 1.5 weeks | **Outcome:** 89% LOC reduction
#### 1. GitHubActionsFetcher.tsx (887 LOC → 95 LOC)
**Current Issues:**
- API integration + UI rendering + state management combined
- Polling logic mixed with component lifecycle
- Analysis features hardcoded
- No hook-based reusability
**Refactoring Plan:**
```
┌─ useGitHubFetcher.ts (65 LOC) [API & polling logic]
│ ├─ Fetch workflow runs
│ ├─ Handle auth/errors
│ └─ Auto-refresh management
├─ useAnalyzeWorkflows.ts (45 LOC) [Analysis logic]
│ ├─ Parse workflow structures
│ └─ Generate insights
├─ WorkflowRunCard.tsx (48 LOC) [Card display]
├─ WorkflowAnalysisPanel.tsx (52 LOC) [Analysis UI]
└─ GitHubActionsFetcher.tsx (85 LOC) [Container]
```
**Implementation Steps:**
1. Create `src/hooks/useGitHubFetcher.ts` (90 min)
- Extract API calls and polling logic
- Return: `{ runs, loading, error, refresh }`
2. Create `src/hooks/useAnalyzeWorkflows.ts` (60 min)
- Analysis functions from component
- Return: `{ insights, analyzeRun, analyzeLog }`
3. Create `src/components/WorkflowRunCard.tsx` (45 min)
- Pure UI component for single run
4. Create `src/components/WorkflowAnalysisPanel.tsx` (45 min)
- Analysis visualization
5. Refactor `GitHubActionsFetcher.tsx` to container (60 min)
- Wire hooks + components, maintain same API
6. Add unit tests (90 min)
- Hook: 8 test cases (auth, errors, retry)
- Components: 6 test cases (rendering, interactions)
**Dependencies:** None (can start immediately)
---
#### 2. NerdModeIDE.tsx (733 LOC → 110 LOC)
**Current Issues:**
- File tree + editor + console + git all in one component
- Complex state: expandedNodes, openFiles, activeTab, editorContent
- Hardcoded layout and styling
- No Lua script integration
**Refactoring Plan:**
```
┌─ useFileTree.ts (85 LOC) [File operations]
├─ useCodeEditor.ts (68 LOC) [Editor state]
├─ useConsoleOutput.ts (42 LOC) [Console management]
├─ FileTreePanel.tsx (72 LOC)
├─ EditorPanel.tsx (80 LOC)
├─ ConsoleOutput.tsx (55 LOC)
└─ NerdModeIDE.tsx (110 LOC) [Container]
```
**Implementation Steps:**
1. Create hooks (4 hours total)
- `useFileTree.ts`: tree navigation, expand/collapse
- `useCodeEditor.ts`: tabs, active file, content
- `useConsoleOutput.ts`: logs, clear, scroll
2. Create UI components (3 hours total)
- FileTreePanel, EditorPanel, ConsoleOutput
3. Refactor container (1.5 hours)
4. Add integration tests (1.5 hours)
**Dependencies:** None (can start after GitHubActionsFetcher)
---
#### 3. LuaEditor.tsx (686 LOC → 120 LOC)
**Current Issues:**
- Script editor + preview + console all combined
- State: editorContent, selectedScript, previewOutput, errors
- Syntax highlighting hardcoded
- No persistence or script library integration
**Refactoring Plan:**
```
┌─ useLuaScript.ts (55 LOC) [Script management]
├─ useLuaPreview.ts (48 LOC) [Preview/execution]
├─ ScriptEditor.tsx (65 LOC) [Edit UI]
├─ ScriptPreview.tsx (48 LOC) [Preview UI]
└─ LuaEditor.tsx (120 LOC) [Container]
```
**Implementation Steps:**
1. Create `useLuaScript.ts` (1.5 hours)
2. Create `useLuaPreview.ts` (1.5 hours)
3. Create UI components (2 hours)
4. Refactor container (1 hour)
5. Add tests (1 hour)
**Dependencies:** After GitHubActionsFetcher completion
---
### Priority 1B: Quick Wins - Medium Components
**Effort:** 7 hours | **Aim:** Remove 3 more violations while momentum is high
| Component | Current | Target | Effort | Notes |
|-----------|---------|--------|--------|-------|
| SchemaEditor | 520 LOC | 100 LOC | 2.5h | Extract form builder logic |
| ComponentConfigDialog | 450 LOC | 90 LOC | 2h | Break into config tabs |
| PropertyInspector | 380 LOC | 85 LOC | 1.5h | Split prop types |
| IRCWebchat | 290 LOC | 85 LOC | 1h | Move chat logic to hook |
---
## 🟡 PHASE 2: STATE MANAGEMENT (Weeks 3-4, 45 hours)
### Priority 2A: Audit Current State Patterns
**Effort:** 5 hours | **Deliverable:** State architecture document
**Scan all components for:**
1. useState usage patterns (30-50 likely candidates)
2. useContext usage (providers, themes, auth)
3. Prisma Database calls (create/read/update/delete)
4. Local vs. persistent data
**Create registry of:**
```typescript
interface StateAnalysis {
component: string;
useState: { [key: string]: 'local' | 'persistent' | 'cache' }
useContext: string[];
dbCalls: string[];
recommendations: string[];
}
```
**Output:** `/docs/STATE_MANAGEMENT_AUDIT.md`
---
### Priority 2B: Define Unified State Strategy
**Effort:** 8 hours | **Deliverable:** State management specification
**Key Decisions:**
1. **Local State** (useState)
- Ephemeral UI state (expanded, focused, hover)
- Form inputs before submission
- Modals/dialogs open/closed
- → Max 1-2 items per component
2. **Database State** (Prisma)
- Persistent user preferences
- Feature configurations
- Shared data across sessions
- → Via `Database` helper class
3. **React Context** (Context API)
- Auth/user context (global)
- Theme/settings (global)
- Notification system (global)
- → Max 3-4 providers
4. **Cache State** (React Query / SWR)
- API responses
- Database queries with automatic sync
- Optimistic updates
- → For high-frequency updates
**Create:**
- Decision matrix: when to use each pattern
- Code templates for each pattern
- Migration checklist for existing state
---
### Priority 2C: Implement State Consolidation
**Effort:** 32 hours | **Deliverable:** Migrated state patterns
**Target Components (by impact):**
1. `Level5.tsx` - Convert context to database + hooks (4h)
2. `ComponentHierarchyEditor.tsx` - Local state → DB + Context (3h)
3. `PackageManager.tsx` - useState consolidation (3h)
4. `WorkflowEditor.tsx` - Query state separation (3h)
5. Create shared context providers (4h)
6. Create database state wrappers (5h)
7. Migrate 10 remaining components (7h)
**Metrics:**
- [ ] Reduce useState instances by 60%
- [ ] Standardize all database reads to `Database` class
- [ ] Consolidate to 3-4 global context providers
- [ ] Add caching layer for expensive queries
---
## 🔵 PHASE 3: PACKAGE SYSTEM (Weeks 4-6, 40 hours)
### Priority 3A: Analyze Current Package System
**Effort:** 4 hours | **Deliverable:** Gap analysis
**Current State:**
- ✅ Basic package structure exists
- ✅ Seed data in packages
- ✅ Package loader (initializePackageSystem)
- ❌ Asset handling incomplete
- ❌ Import/export missing UI
- ❌ No pre-built packages
**Read:** `/dbal/AGENTS.md` for package architecture guidance
---
### Priority 3B: Complete Asset System
**Effort:** 12 hours | **Deliverable:** Asset management feature
**Features to Add:**
1. Asset storage in database
```prisma
model Asset {
id String @id @default(cuid())
packageId String
name String
type String // 'image' | 'icon' | 'font' | 'config'
mimeType String
content Bytes // Base64 encoded
metadata Json
tenantId String
createdAt DateTime @default(now())
}
```
2. Asset upload handler
- `/api/packages/[packageId]/assets` POST
- Max 10MB per asset
- Scan for malicious content
3. Asset reference system
- Component config: `{ icon: "@package/icon-name" }`
- Runtime resolution: lookup in Asset table
- Fallback to static_content/
4. Asset gallery UI component
- Browse package assets
- Upload/delete
- Tag and organize
**Implementation:**
- Add Prisma model (30 min)
- Create API handler (1.5h)
- Create asset resolver utility (1h)
- Create React component (2h)
- Add unit tests (1h)
- Documentation (1h)
---
### Priority 3C: Implement Import/Export UI
**Effort:** 14 hours | **Deliverable:** User-friendly package management
**Features:**
1. Export Package Dialog
```
┌─ Package Selection
├─ Include Components ☑️
├─ Include Scripts ☑️
├─ Include Assets ☑️
├─ Include Schema ☑️
└─ [Export as ZIP]
```
2. Import Package Dialog
```
┌─ [Upload .zip file]
├─ Preview Contents
│ ├─ 5 Components
│ ├─ 3 Scripts
│ ├─ 12 Assets
│ └─ 2 Schema Definitions
├─ Conflict Resolution ⚠️
└─ [Import]
```
3. Package Marketplace UI
- Browse pre-built packages
- One-click install
- Version management
- Ratings/reviews
**Components to Create:**
- `PackageExportDialog.tsx` (80 LOC)
- `PackageImportDialog.tsx` (85 LOC)
- `PackageMarketplace.tsx` (95 LOC)
- `usePackageExport.ts` (50 LOC)
- `usePackageImport.ts` (55 LOC)
**Implementation:**
- Create hooks (3h)
- Create components (3h)
- Create API handlers (2h)
- Add validation/error handling (1.5h)
- Add tests (1.5h)
- Integration testing (2h)
- Documentation (1h)
---
### Priority 3D: Pre-built Packages Library
**Effort:** 10 hours | **Deliverable:** 5 ready-to-use packages
**Packages to Create:**
1. **DataGrid Package** (analytics dashboard)
- Pre-built columns
- Sorting/filtering
- Export to CSV
2. **FormBuilder Package** (create forms)
- 10 field types
- Validation rules
- Conditional fields
3. **ChartPackage** (visualizations)
- Bar, line, pie charts
- Real-time data binding
- Themes
4. **AuthPackage** (login/signup)
- Login page
- Signup form
- Password reset
5. **NotificationPackage** (alerts)
- Toast notifications
- Notification center
- Email integration
**Each Package:** ~2 hours
- Define seed data structure
- Create components
- Add example scripts
- Package metadata
- Documentation
---
## 🟢 PHASE 4: DOCUMENTATION (Weeks 6-8, 30 hours)
### Priority 4A: Consolidate Scattered Documentation
**Effort:** 10 hours | **Deliverable:** Unified reference
**Current State:** 4,935+ LOC across 50+ files
- ✅ Architecture guides
- ✅ Implementation docs
- ✅ Quick references
- ❌ Fragmented and duplicated
- ❌ No clear hierarchy
- ❌ Hard to find information
**Create Master Index:**
```
/docs/INDEX.md (single entry point)
├── Quick Start (5 min)
├── Architecture (30 min)
│ ├── 5-Level System
│ ├── Packages
│ ├── State Management
│ └── DBAL
├── Implementation (2 hours)
│ ├── Component Refactoring
│ ├── State Management
│ ├── Package Development
│ └── Testing
├── Reference (lookup)
│ ├── API Documentation
│ ├── Component Library
│ ├── Lua Scripts
│ └── Configuration
└── Troubleshooting (FAQ)
```
**Steps:**
1. Audit all 50+ docs (2h)
2. Identify duplicates and gaps (1h)
3. Create master outline (1.5h)
4. Reorganize files (2h)
5. Create redirects/links (1.5h)
6. Update INDEX.md (2h)
---
### Priority 4B: Create Implementation Guide
**Effort:** 10 hours | **Deliverable:** Step-by-step execution manual
**Chapters:**
1. **Setup** (30 min)
- Dev environment
- Database initialization
- Running tests
2. **Component Refactoring** (2 hours)
- Checklist from Phase 1
- Code templates
- Common pitfalls
- Success metrics
3. **State Management** (2 hours)
- Decision tree
- Pattern templates
- Migration guide
- Examples
4. **Package Development** (1.5 hours)
- Package structure
- Seed data format
- Asset management
- Publishing
5. **Testing** (1 hour)
- Unit test templates
- Integration tests
- E2E tests
6. **Deployment** (1 hour)
- Build process
- Environment setup
- Health checks
---
### Priority 4C: Create Developer Playbooks
**Effort:** 5 hours | **Deliverable:** Quick decision guides
**Playbooks:**
1. "I'm adding a new feature" (2 pages)
- Checklist
- File locations
- Key files to modify
2. "I'm fixing a bug" (2 pages)
- Debug strategy
- Common issues
- Test approach
3. "I'm refactoring a component" (2 pages)
- Phase 1 checklist
- Hook extraction
- Testing
4. "I'm creating a package" (2 pages)
- Package structure
- Seed data format
- Publishing
---
## 📈 PHASE 5: QUALITY & LAUNCH (Weeks 8-10, 30 hours)
### Priority 5A: Comprehensive Testing
**Effort:** 15 hours
**Coverage Goals:**
- [ ] All refactored components: 90%+ coverage
- [ ] All new hooks: 100% coverage
- [ ] E2E workflows: 100% passing
- [ ] Package system: 85%+ coverage
**Testing Strategy:**
1. Unit tests for hooks (5h)
2. Component tests (4h)
3. Integration tests (3h)
4. E2E smoke tests (2h)
5. Performance tests (1h)
---
### Priority 5B: Code Quality Review
**Effort:** 8 hours
- [ ] ESLint: all violations fixed
- [ ] TypeScript: no `any` types
- [ ] Size limits: all files <150 LOC
- [ ] Naming conventions: consistent
- [ ] Documentation: JSDoc on all exports
- [ ] Accessibility: WCAG 2.1 AA compliance
---
### Priority 5C: Production Readiness
**Effort:** 7 hours
**Checklist:**
- [ ] Security audit: no secrets in code
- [ ] Performance: Lighthouse scores >90
- [ ] Accessibility: all interactive elements keyboard-accessible
- [ ] Multi-tenancy: all queries include tenantId
- [ ] Error handling: graceful fallbacks
- [ ] Monitoring: logging in critical paths
- [ ] Documentation: updated
---
## 🎯 Success Metrics & Milestones
### PHASE 1 Completion (End of Week 2)
```
✅ 6 components refactored to <150 LOC
✅ 2,200 LOC moved to hooks/components
✅ All 6 covered by unit tests (>90%)
✅ GitHubActionsFetcher.tsx verified in production
```
### PHASE 2 Completion (End of Week 4)
```
✅ State management audit documented
✅ Unified state strategy defined
✅ 10 components migrated to new patterns
✅ 60% reduction in useState instances
✅ All state operations tested
```
### PHASE 3 Completion (End of Week 6)
```
✅ Asset system fully implemented
✅ Import/export UI complete
✅ 5 pre-built packages available
✅ Package marketplace functional
✅ All package operations tested
```
### PHASE 4 Completion (End of Week 8)
```
✅ Documentation consolidated
✅ Implementation guide published
✅ Developer playbooks available
✅ All docs indexed and linkable
✅ New developers can onboard in <2 hours
```
### PHASE 5 Completion (End of Week 10)
```
✅ 90%+ test coverage across refactored code
✅ All size limits enforced
✅ Zero security issues
✅ Performance >90% Lighthouse
✅ Production ready for launch
```
---
## 📋 Dependencies & Sequencing
```
┌─ PHASE 1: Components (Week 1-2)
│ ├─ GitHubActionsFetcher
│ ├─ NerdModeIDE
│ └─ LuaEditor + Medium Components
├─ PHASE 2: State Management (Week 3-4)
│ ├─ Audit (requires Phase 1 complete)
│ └─ Implementation (depends on audit)
├─ PHASE 3: Package System (Week 4-6)
│ ├─ Asset system (independent)
│ ├─ Import/export UI (depends on assets)
│ └─ Pre-built packages (independent)
├─ PHASE 4: Documentation (Week 6-8)
│ └─ Can run in parallel with Phase 3
└─ PHASE 5: Quality (Week 8-10)
└─ Testing of all Phase 1-3 changes
```
---
## 💰 Resource Allocation
**Recommended Team:**
- **Developer 1 (60%):** Components + State Management
- **Developer 2 (40%):** Package System + Documentation
- **QA (50%):** Testing + Code Review
- **Tech Lead (20%):** Architecture + Planning + Review
**Alternative (Single Developer):**
- Phase 1: 2 weeks (components)
- Phase 2: 2 weeks (state)
- Phase 3: 2 weeks (packages)
- Phase 4: 1 week (docs)
- Phase 5: 1.5 weeks (testing)
- **Total:** 8.5 weeks at full-time
---
## ⚠️ Risk Mitigation
### Risk 1: Refactoring breaks existing features
**Mitigation:**
- Keep component API unchanged during refactoring
- Use feature flags for new state patterns
- Comprehensive E2E tests before/after
- Staged rollout to internal users first
### Risk 2: Team unfamiliar with new patterns
**Mitigation:**
- Early documentation (Phase 4B starts Week 1)
- Pairing/code review on first refactors
- Developer playbooks with clear examples
- Team training session (1 hour)
### Risk 3: Package system complexity
**Mitigation:**
- Start with simple pre-built packages
- Progressive enhancement (export first, then import)
- Fallback to manual package management
- Extensive testing of import/export
### Risk 4: Documentation becomes outdated
**Mitigation:**
- Single source of truth (INDEX.md)
- Automated doc generation where possible
- Monthly review cycle
- Version control for docs
---
## 📅 Week-by-Week Execution Plan
### Week 1: Foundation
- [ ] Day 1-2: GitHubActionsFetcher refactoring (hooks)
- [ ] Day 3-4: GitHubActionsFetcher refactoring (components)
- [ ] Day 5: NerdModeIDE planning + hook creation
### Week 2: Components Phase 1 Complete
- [ ] Day 1-2: NerdModeIDE refactoring
- [ ] Day 3-4: LuaEditor refactoring
- [ ] Day 5: Medium components + code review
### Week 3: State Audit & Strategy
- [ ] Day 1-2: Audit all components for state patterns
- [ ] Day 3-4: Define unified strategy
- [ ] Day 5: Team review + adjustments
### Week 4: State Migration Begins
- [ ] Days 1-5: Implement state consolidation for 5 components
### Week 5: Package System Assets
- [ ] Days 1-3: Asset system implementation
- [ ] Days 4-5: Asset tests + documentation
### Week 6: Package Import/Export
- [ ] Days 1-4: Import/export UI components
- [ ] Day 5: Integration testing
### Week 7: Pre-built Packages + Docs
- [ ] Days 1-3: Create 3 pre-built packages
- [ ] Days 4-5: Begin documentation consolidation
### Week 8: Docs + Packages Complete
- [ ] Days 1-3: Finish pre-built packages + docs
- [ ] Days 4-5: Complete documentation + playbooks
### Week 9: Quality & Testing
- [ ] Days 1-4: Comprehensive testing across all phases
- [ ] Day 5: Code quality review + fixes
### Week 10: Launch Prep
- [ ] Days 1-4: Final testing + bug fixes
- [ ] Day 5: Documentation review + launch checklist
---
## 🚀 Getting Started
### Immediate Actions (This Week)
1. [ ] Review this plan with team
2. [ ] Assign PHASE 1A components to developers
3. [ ] Set up test infrastructure if not done
4. [ ] Create branch for refactoring work
5. [ ] Schedule daily standup (15 min)
### First Sprint Tasks
```bash
# Create feature branch
git checkout -b refactor/phase1-components
# Start with GitHubActionsFetcher
cd src/hooks
# Create useGitHubFetcher.ts
# Run tests
npm test -- useGitHubFetcher.test.ts
# Check component size
npx tsx scripts/enforce-size-limits.ts
```
---
## 📞 Questions & Escalation
**During implementation, escalate if:**
1. Component doesn't fit into 150 LOC even after decomposition
2. State pattern doesn't fit one of 4 categories
3. Package system conflicts with existing data
4. Documentation gaps block development
**Contact:** Tech lead or architecture team
---
## ✅ Completion Checklist
### Before Declaring Phase Complete
- [ ] All acceptance criteria met
- [ ] Unit tests passing (>90% coverage)
- [ ] Code review approved
- [ ] No new bugs introduced
- [ ] Documentation updated
- [ ] Performance impact assessed
---
## 📎 Appendix: Reference Links
**Component Refactoring:**
- [REFACTORING_STRATEGY.md](./docs/refactoring/REFACTORING_STRATEGY.md)
- [REFACTORING_QUICK_REFERENCE.md](./REFACTORING_QUICK_START.md)
- [TEAM_CHECKLIST.md](./TEAM_CHECKLIST.md)
**State Management:**
- [NEXTJS_MIGRATION.md](./docs/implementation/NEXTJS_MIGRATION.md) - State section
**Package System:**
- [packages/README.md](./packages/README.md)
- [docs/architecture/packages.md](./docs/architecture/packages.md)
- [dbal/AGENTS.md](./dbal/AGENTS.md) - Package guidance
**DBAL:**
- [dbal/README.md](./dbal/README.md)
- [dbal/QUICK_START.md](./dbal/QUICK_START.md)
---
## 📝 Document History
| Date | Version | Changes | Author |
|------|---------|---------|--------|
| 2025-12-25 | 1.0 | Initial comprehensive action plan | Architecture Team |
---
**Generated:** 2025-12-25
**Next Review:** After PHASE 1 Completion
**Owner:** Tech Lead / Architecture Team