Architecture: - database-schema.sql: Future-proof SQLite schema with Postgres migration path - meilisearch-config.json: Search index config with boat terminology synonyms - hardened-production-guide.md: Security hardening (queues, file safety, tenant tokens) Roadmap: - v1.0-mvp.md: Feature roadmap and success criteria - 2-week-launch-plan.md: Day-by-day execution plan with deliverables Debates: - 01-schema-and-vertical-analysis.md: Expert panel consensus on architecture Key Decisions: - Hybrid SQLite + Meilisearch architecture - Search-first design (Meilisearch as query layer) - Multi-vertical support (boats, marinas, properties) - Offline-first PWA approach - Tenant token security (never expose master key) - Background queue for OCR processing - File safety pipeline (qpdf + ClamAV)
153 lines
3.8 KiB
Markdown
153 lines
3.8 KiB
Markdown
# NaviDocs v1.0 MVP Roadmap
|
|
|
|
**Goal:** Launch production-ready boat manual management platform
|
|
**Timeline:** 2 weeks intensive development
|
|
**Target:** Beta launch with 5-10 boat owners
|
|
|
|
---
|
|
|
|
## Phase 1: Foundation (Week 1)
|
|
|
|
### Day 1: Infrastructure Setup ✓
|
|
- [x] Create NaviDocs repository
|
|
- [x] Expert panel debates completed
|
|
- [x] Schema design finalized
|
|
- [ ] Set up development environment
|
|
- [ ] Install dependencies (Node.js, Meilisearch, SQLite)
|
|
|
|
### Day 2: Database & Queue System
|
|
- [ ] Implement SQLite schema (users, boats, documents, pages)
|
|
- [ ] Set up BullMQ or SQLite-based queue
|
|
- [ ] Create OCR job worker
|
|
- [ ] Test: Enqueue job → process → complete
|
|
|
|
### Day 3: File Safety Pipeline
|
|
- [ ] Install qpdf and ClamAV
|
|
- [ ] Implement multi-layer validation
|
|
- Extension check
|
|
- Magic byte verification
|
|
- qpdf sanitization
|
|
- ClamAV malware scan
|
|
- [ ] Test: Upload malicious PDF → rejected
|
|
|
|
### Day 4: Meilisearch Integration
|
|
- [ ] Configure Meilisearch index with settings
|
|
- Searchable attributes
|
|
- Filterable attributes
|
|
- Synonyms (boat terminology)
|
|
- [ ] Implement tenant token generation
|
|
- [ ] Create search service wrapper
|
|
|
|
### Day 5: OCR Pipeline
|
|
- [ ] Implement Tesseract.js OCR extraction
|
|
- [ ] Page-by-page processing
|
|
- [ ] Index extracted text in Meilisearch
|
|
- [ ] Test: Upload PDF → OCR → searchable in < 5 min
|
|
|
|
---
|
|
|
|
## Phase 2: Core Features (Week 2)
|
|
|
|
### Day 6: Backend API
|
|
- [ ] POST /api/upload - with safety pipeline
|
|
- [ ] GET /api/jobs/:id - job status
|
|
- [ ] POST /api/search - with tenant tokens
|
|
- [ ] GET /api/documents/:id - retrieve document
|
|
- [ ] Helmet security headers
|
|
- [ ] Rate limiting
|
|
|
|
### Day 7: Frontend Foundation
|
|
- [ ] Vue 3 + Vite setup
|
|
- [ ] Tailwind CSS configuration
|
|
- [ ] Meilisearch-inspired design system
|
|
- [ ] SVG icon library (clean, professional)
|
|
- [ ] Responsive layout
|
|
|
|
### Day 8: Upload & Job Tracking
|
|
- [ ] File upload component
|
|
- [ ] Drag-and-drop support
|
|
- [ ] Progress bar (polls job status)
|
|
- [ ] Error handling and validation feedback
|
|
- [ ] Success state with document preview
|
|
|
|
### Day 9: Search Interface
|
|
- [ ] Search bar with instant results
|
|
- [ ] Filters (system, category, boat)
|
|
- [ ] Result highlighting
|
|
- [ ] Pagination
|
|
- [ ] Sort options (relevance, date, page number)
|
|
|
|
### Day 10: Document Viewer
|
|
- [ ] PDF.js integration
|
|
- [ ] Page navigation
|
|
- [ ] Search within document
|
|
- [ ] Highlight search terms
|
|
- [ ] Bookmarks (future: v1.1)
|
|
|
|
---
|
|
|
|
## Phase 3: Polish & Launch (Weekend)
|
|
|
|
### Day 11: Testing & Debugging
|
|
- [ ] Playwright end-to-end tests
|
|
- Upload flow
|
|
- Search flow
|
|
- Document viewing
|
|
- [ ] Cross-browser testing
|
|
- [ ] Mobile responsiveness
|
|
- [ ] Performance profiling
|
|
|
|
### Day 12: Beta Launch
|
|
- [ ] Deploy to local environment
|
|
- [ ] Invite 5 beta testers
|
|
- [ ] Provide test manuals
|
|
- [ ] Monitor logs and usage
|
|
- [ ] Gather feedback
|
|
|
|
---
|
|
|
|
## Success Criteria
|
|
|
|
**Technical:**
|
|
- [ ] Upload PDF → searchable in < 5 minutes
|
|
- [ ] Search latency < 100ms
|
|
- [ ] Synonym search works ("bilge" finds "sump pump")
|
|
- [ ] All fields display correctly
|
|
- [ ] Offline mode functional (PWA)
|
|
|
|
**User Experience:**
|
|
- [ ] Upload success rate > 95%
|
|
- [ ] Zero malicious files accepted
|
|
- [ ] Search relevance rated 4/5+ by users
|
|
- [ ] Mobile usable without zooming
|
|
|
|
**Security:**
|
|
- [ ] No master keys in client code
|
|
- [ ] Tenant tokens expire after 1 hour
|
|
- [ ] Rate limits prevent abuse
|
|
- [ ] All PDFs sanitized with qpdf
|
|
|
|
---
|
|
|
|
## Post-MVP Roadmap (v1.1+)
|
|
|
|
### Planned Features
|
|
- [ ] Multi-boat support
|
|
- [ ] Share manuals with crew
|
|
- [ ] Bookmarks and annotations
|
|
- [ ] Service history tracking
|
|
- [ ] Maintenance reminders
|
|
- [ ] Shared component library
|
|
- [ ] Mobile apps (iOS/Android)
|
|
- [ ] Semantic search (embeddings)
|
|
|
|
### Future Verticals
|
|
- [ ] Marina/property management
|
|
- [ ] Waterfront HOA documentation
|
|
- [ ] Yacht club member resources
|
|
|
|
---
|
|
|
|
**Status:** In Development
|
|
**Last Updated:** 2025-01-19
|
|
**Next Review:** After beta launch
|