Surreal is an AI-powered presentation creation tool for VS Code that enables developers and content creators to generate beautiful slides from PDFs, topics, and markdown, with intelligent style suggestions and real-time editing capabilities.
┌─────────────────────┐ ┌──────────────────┐
│ VS Code Extension │ <-----> │ OpenCanvas API │
│ (TypeScript) │ REST/ │ (Python) │
│ │ WS │ │
└─────────────────────┘ └──────────────────┘
│ │
v v
[Webview UI] [AI Services]
- React Editor - Claude/GPT
- Live Preview - Evaluation
- Style Assistant - Evolution
Goal: Prepare OpenCanvas to serve as a robust backend for VS Code extension
# Core Generation
POST /api/v1/generate/topic
{
"topic": string,
"purpose": string,
"theme": string,
"options": {
"research": boolean,
"max_slides": number
}
}
POST /api/v1/generate/pdf
{
"pdf_base64": string,
"extraction_mode": "full" | "summary",
"theme": string
}
# Editing & Enhancement
POST /api/v1/slides/enhance
{
"html": string,
"mode": "style" | "content" | "both",
"target_audience": string
}
POST /api/v1/slides/evaluate
{
"html": string,
"criteria": ["visual", "content", "accessibility"]
}
# Export
POST /api/v1/export/{format}
{
"html": string,
"format": "pdf" | "pptx" | "html",
"options": {}
}
# Real-time Support
WS /api/v1/ws/session/{session_id}
- Progressive generation updates
- Style suggestions stream
- Evaluation feedback- Add CORS configuration for VS Code webview origins
- Implement session management for concurrent users
- Add WebSocket support for real-time updates
- Create response caching layer
- Add progress reporting for long operations
- Implement rate limiting per session
- Add health check endpoint
- Create API documentation (OpenAPI/Swagger)
// Minimum VS Code version: 1.74.0
// Node.js version: 16.x or highersurreal.newFromTopic- Create presentation from topicsurreal.newFromPDF- Create presentation from PDFsurreal.openEditor- Open Surreal editorsurreal.exportPresentation- Export to various formatssurreal.showStyleSuggestions- Toggle AI style assistantsurreal.runEvaluation- Evaluate current presentation
{
"surreal.apiEndpoint": {
"type": "string",
"default": "http://localhost:8000",
"description": "OpenCanvas API endpoint"
},
"surreal.apiKey": {
"type": "string",
"default": "",
"description": "API key for AI services"
},
"surreal.defaultTheme": {
"type": "string",
"enum": ["professional", "modern", "minimal", "colorful"],
"default": "professional"
},
"surreal.autoSave": {
"type": "boolean",
"default": true
},
"surreal.enableAISuggestions": {
"type": "boolean",
"default": true
}
}- Create Python service manager in extension
- Implement API client with retry logic
- Set up WebSocket connection manager
- Create file system provider for .surreal files
- Implement secure credential storage
- Add telemetry for usage tracking
-
PDF to Slides
- PDF upload interface
- Extraction options (full/summary)
- Progress indicator
- Error handling
-
Topic to Slides
- Topic input form
- Purpose/audience selection
- Theme picker
- Research toggle
-
Slide Editor
- WYSIWYG editing
- Markdown support
- Undo/redo functionality
- Auto-save
-
AI Style Assistant
- Real-time suggestions panel
- Apply/reject suggestions
- Suggestion history
- Custom style rules
-
Export Options
- PDF export
- HTML bundle
- PowerPoint (if available)
- Share link generation
- Unit tests (>80% coverage)
- Integration tests for API communication
- E2E tests for critical user paths
- Performance tests (generation < 30s)
- Accessibility testing (WCAG 2.1 AA)
- Target: 100 beta testers
- Duration: 1 week
- Channels:
- Internal team (10 users)
- Developer community (50 users)
- Content creators (40 users)
- In-app feedback widget
- Analytics dashboard
- Weekly user surveys
- Bug tracking system
- Feature request board
- <5% crash rate
- >4.0 average satisfaction score
- <30s average generation time
- >70% feature adoption rate
-
VS Code Marketplace listing
- Icon (128x128)
- Banner (1280x640)
- Screenshots (5+)
- Demo GIF
- Description (Markdown)
-
Documentation
- Getting started guide
- Video tutorials
- API reference
- Troubleshooting guide
- Sample presentations
-
Launch Content
- Blog post
- Product Hunt submission
- Social media kit
- Email announcement
- Press release
- Security audit completed
- Performance optimization done
- Error tracking configured (Sentry)
- Analytics configured (Mixpanel/Amplitude)
- Backup and recovery tested
- Load testing completed
- CDN configured for assets
- Terms of service updated
- Privacy policy updated
- Open source licenses verified
- API usage limits defined
- Data retention policy set
- Final testing on production
- Rollback plan confirmed
- Support team briefed
- Monitoring dashboards ready
- Social media scheduled
- Publish to VS Code Marketplace
- Enable production API
- Announce on all channels
- Monitor error rates
- Respond to early feedback
- Review metrics dashboard
- Address critical bugs
- Respond to reviews
- Plan hotfix if needed
- Send thank you to beta testers
- Installs: 500+
- Active Users: 200+
- Crash Rate: <2%
- API Uptime: >99.5%
- Average Rating: 4.0+
- Installs: 5,000+
- MAU: 2,000+
- Presentations Created: 10,000+
- Retention (Day 7): >40%
- NPS Score: >30
- Installs: 20,000+
- MAU: 8,000+
- Presentations Created: 50,000+
- Retention (Day 30): >25%
- Revenue (Pro): $10,000 MRR
| Risk | Impact | Mitigation |
|---|---|---|
| Python dependency issues | High | Provide cloud fallback option |
| API rate limits | Medium | Implement caching and queuing |
| Performance degradation | High | Auto-scaling and monitoring |
| Security vulnerabilities | Critical | Regular audits and updates |
| Risk | Impact | Mitigation |
|---|---|---|
| Low adoption | High | Focus on developer use cases |
| Negative reviews | Medium | Quick response and fixes |
| Competition | Medium | Unique AI features |
| API costs | High | Usage-based pricing tiers |
- Team collaboration features
- Custom template marketplace
- Advanced animations
- Voice narration
- GitHub integration
- Jupyter notebook import
- Real-time collaboration
- Mobile preview app
- Enterprise features
- SSO integration
- Custom AI models
- White-label options
- Product Owner: [Name]
- Tech Lead: [Name]
- API Documentation:
/docs/api - Support: support@surreal.ai
- Discord: [invite link]
- GitHub: [repo link]
// Success Response
{
"success": true,
"data": {},
"message": "Operation completed"
}
// Error Response
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human readable message",
"details": {}
}
}
// Progress Update (WebSocket)
{
"type": "progress",
"stage": "generation",
"progress": 0.75,
"message": "Creating slide 3 of 4"
}{
"version": "1.0.0",
"metadata": {
"title": "Presentation Title",
"created": "2024-01-01T00:00:00Z",
"modified": "2024-01-01T00:00:00Z",
"theme": "professional"
},
"slides": [
{
"id": "slide-1",
"html": "<div>...</div>",
"notes": "Speaker notes",
"metadata": {}
}
],
"settings": {
"autoSave": true,
"aiSuggestions": true
}
}extension.activatedpresentation.createdpresentation.exportedai.suggestionAcceptedai.suggestionRejectederror.occurredperformance.metric
Last Updated: [Current Date] Version: 1.0.0-alpha