Files
NomadArch/dev-docs/MVP-PRINCIPLES.md
Gemini AI 157449a9ad restore: recover deleted documentation, CI/CD, and infrastructure files
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)
2025-12-23 13:03:48 +04:00

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