Restored from origin/main (b4663fb): - .github/ workflows and issue templates - .gitignore (proper exclusions) - .opencode/agent/web_developer.md - AGENTS.md, BUILD.md, PROGRESS.md - dev-docs/ (9 architecture/implementation docs) - docs/screenshots/ (4 UI screenshots) - images/ (CodeNomad icons) - package-lock.json (dependency lockfile) - tasks/ (25+ project task files) Also restored original source files that were modified: - packages/ui/src/App.tsx - packages/ui/src/lib/logger.ts - packages/ui/src/stores/instances.ts - packages/server/src/server/routes/workspaces.ts - packages/server/src/workspaces/manager.ts - packages/server/src/workspaces/runtime.ts - packages/server/package.json Kept new additions: - Install-*.bat/.sh (enhanced installers) - Launch-*.bat/.sh (new launchers) - README.md (SEO optimized with GLM 4.7)
327 lines
6.2 KiB
Markdown
327 lines
6.2 KiB
Markdown
# MVP Development Principles
|
|
|
|
## Core Philosophy
|
|
|
|
**Focus on functionality, NOT performance.**
|
|
|
|
The MVP (Minimum Viable Product) is about proving the concept and getting feedback. Performance optimization comes later, after we validate the product with real users.
|
|
|
|
---
|
|
|
|
## What We Care About in MVP
|
|
|
|
### ✅ DO Focus On:
|
|
|
|
1. **Functionality**
|
|
- Does it work?
|
|
- Can users complete their tasks?
|
|
- Are all core features present?
|
|
|
|
2. **Correctness**
|
|
- Does it produce correct results?
|
|
- Does error handling work?
|
|
- Is data persisted properly?
|
|
|
|
3. **User Experience**
|
|
- Is the UI intuitive?
|
|
- Are loading states clear?
|
|
- Are error messages helpful?
|
|
|
|
4. **Stability**
|
|
- Does it crash?
|
|
- Can users recover from errors?
|
|
- Does it lose data?
|
|
|
|
5. **Code Quality**
|
|
- Is code readable?
|
|
- Are types correct?
|
|
- Is it maintainable?
|
|
|
|
### ❌ DON'T Focus On:
|
|
|
|
1. **Performance Optimization**
|
|
- Virtual scrolling
|
|
- Message batching
|
|
- Lazy loading
|
|
- Memory optimization
|
|
- Render optimization
|
|
|
|
2. **Scalability**
|
|
- Handling 1000+ messages
|
|
- Multiple instances with 100+ sessions
|
|
- Large file attachments
|
|
- Massive search indexes
|
|
|
|
3. **Advanced Features**
|
|
- Plugins
|
|
- Advanced search
|
|
- Custom themes
|
|
- Workspace management
|
|
|
|
---
|
|
|
|
## Specific MVP Guidelines
|
|
|
|
### Messages & Rendering
|
|
|
|
**Simple approach:**
|
|
|
|
```typescript
|
|
// Just render everything - no virtual scrolling
|
|
<For each={messages()}>
|
|
{(message) => <MessageItem message={message} />}
|
|
</For>
|
|
```
|
|
|
|
**Don't worry about:**
|
|
|
|
- Sessions with 500+ messages
|
|
- Re-render performance
|
|
- Memory usage
|
|
- Scroll performance
|
|
|
|
**When to optimize:**
|
|
|
|
- Post-MVP (Phase 8)
|
|
- Only if users report issues
|
|
- Based on real-world usage data
|
|
|
|
### State Management
|
|
|
|
**Simple approach:**
|
|
|
|
- Use SolidJS signals directly
|
|
- No batching
|
|
- No debouncing
|
|
- No caching layers
|
|
|
|
**Don't worry about:**
|
|
|
|
- Update frequency
|
|
- Number of reactive dependencies
|
|
- State structure optimization
|
|
|
|
### Process Management
|
|
|
|
**Simple approach:**
|
|
|
|
- Spawn servers as needed
|
|
- Kill on close
|
|
- Basic error handling
|
|
|
|
**Don't worry about:**
|
|
|
|
- Resource limits (max processes)
|
|
- CPU/memory monitoring
|
|
- Restart optimization
|
|
- Process pooling
|
|
|
|
### API Communication
|
|
|
|
**Simple approach:**
|
|
|
|
- Direct SDK calls
|
|
- Basic error handling
|
|
- Simple retry (if at all)
|
|
|
|
**Don't worry about:**
|
|
|
|
- Request batching
|
|
- Response caching
|
|
- Optimistic updates
|
|
- Request deduplication
|
|
|
|
---
|
|
|
|
## Decision Framework
|
|
|
|
When implementing any feature, ask:
|
|
|
|
### Is this optimization needed for MVP?
|
|
|
|
**NO if:**
|
|
|
|
- It only helps with large datasets
|
|
- It only helps with many instances
|
|
- It's about speed, not correctness
|
|
- Users won't notice the difference
|
|
- It adds significant complexity
|
|
|
|
**YES if:**
|
|
|
|
- Users can't complete basic tasks without it
|
|
- App is completely unusable without it
|
|
- It prevents data loss
|
|
- It's a security requirement
|
|
|
|
### Examples
|
|
|
|
**Virtual Scrolling:** ❌ NO for MVP
|
|
|
|
- MVP users won't have 1000+ message sessions
|
|
- Simple list rendering works fine for <100 messages
|
|
- Add in Phase 8 if needed
|
|
|
|
**Error Handling:** ✅ YES for MVP
|
|
|
|
- Users need clear feedback when things fail
|
|
- Prevents frustration and data loss
|
|
- Core to usability
|
|
|
|
**Message Batching:** ❌ NO for MVP
|
|
|
|
- SolidJS handles updates efficiently
|
|
- Only matters at very high frequency
|
|
- Add later if users report lag
|
|
|
|
**Session Persistence:** ✅ YES for MVP
|
|
|
|
- Users expect sessions to persist
|
|
- Losing work is unacceptable
|
|
- Core functionality
|
|
|
|
---
|
|
|
|
## Testing Approach
|
|
|
|
### MVP Testing Focus
|
|
|
|
**Test for:**
|
|
|
|
- ✅ Correctness (does it work?)
|
|
- ✅ Error handling (does it fail gracefully?)
|
|
- ✅ Data integrity (is data saved?)
|
|
- ✅ User flows (can users complete tasks?)
|
|
|
|
**Don't test for:**
|
|
|
|
- ❌ Performance benchmarks
|
|
- ❌ Load testing
|
|
- ❌ Stress testing
|
|
- ❌ Scalability limits
|
|
|
|
### Acceptable Performance
|
|
|
|
For MVP, these are **acceptable:**
|
|
|
|
- 100 messages render in 1 second
|
|
- UI slightly laggy during heavy streaming
|
|
- Memory usage grows with message count
|
|
- Multiple instances slow down app
|
|
|
|
These become **unacceptable** only if:
|
|
|
|
- Users complain
|
|
- App becomes unusable
|
|
- Basic tasks can't be completed
|
|
|
|
---
|
|
|
|
## When to Optimize
|
|
|
|
### Post-MVP Triggers
|
|
|
|
Add optimization when:
|
|
|
|
1. **User Feedback**
|
|
- Multiple users report slowness
|
|
- Users abandon due to performance
|
|
- Performance prevents usage
|
|
|
|
2. **Measurable Issues**
|
|
- App freezes for >2 seconds
|
|
- Memory usage causes crashes
|
|
- UI becomes unresponsive
|
|
|
|
3. **Phase 8 Reached**
|
|
- MVP complete and validated
|
|
- User base established
|
|
- Performance becomes focus
|
|
|
|
### How to Optimize
|
|
|
|
When the time comes:
|
|
|
|
1. **Measure First**
|
|
- Profile actual bottlenecks
|
|
- Use real user data
|
|
- Identify specific problems
|
|
|
|
2. **Target Fixes**
|
|
- Fix the specific bottleneck
|
|
- Don't over-engineer
|
|
- Measure improvement
|
|
|
|
3. **Iterate**
|
|
- Optimize one thing at a time
|
|
- Verify with users
|
|
- Stop when "fast enough"
|
|
|
|
---
|
|
|
|
## Communication with Users
|
|
|
|
### During Alpha/Beta
|
|
|
|
**Be honest about performance:**
|
|
|
|
- "This is an MVP - expect some slowness with large sessions"
|
|
- "We're focused on functionality first"
|
|
- "Performance optimization is planned for v1.x"
|
|
|
|
**Set expectations:**
|
|
|
|
- Works best with <200 messages per session
|
|
- Multiple instances may slow things down
|
|
- We'll optimize based on your feedback
|
|
|
|
### Collecting Feedback
|
|
|
|
**Ask about:**
|
|
|
|
- ✅ What features are missing?
|
|
- ✅ What's confusing?
|
|
- ✅ What doesn't work?
|
|
- ✅ Is it too slow to use?
|
|
|
|
**Don't ask about:**
|
|
|
|
- ❌ How many milliseconds for X?
|
|
- ❌ Memory usage specifics
|
|
- ❌ Benchmark comparisons
|
|
|
|
---
|
|
|
|
## Summary
|
|
|
|
### The MVP Mantra
|
|
|
|
> **Make it work, then make it better, then make it fast.**
|
|
|
|
For CodeNomad MVP:
|
|
|
|
- **Phase 1-7:** Make it work, make it better
|
|
- **Phase 8+:** Make it fast
|
|
|
|
### Remember
|
|
|
|
- Premature optimization is the root of all evil
|
|
- Real users provide better optimization guidance than assumptions
|
|
- Functionality > Performance for MVP
|
|
- You can't optimize what users don't use
|
|
|
|
---
|
|
|
|
## Quick Reference
|
|
|
|
**When in doubt, ask:**
|
|
|
|
1. Is this feature essential for users to do their job? → Build it
|
|
2. Is this optimization essential for the feature to work? → Build it
|
|
3. Is this just making it faster/more efficient? → Defer to Phase 8
|
|
|
|
**MVP = Minimum _Viable_ Product**
|
|
|
|
- Viable = works and is useful
|
|
- Viable ≠ optimized and fast
|