diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md new file mode 100644 index 0000000..2151387 --- /dev/null +++ b/.planning/REQUIREMENTS.md @@ -0,0 +1,148 @@ +# Requirements: TaskPlanner + +**Defined:** 2026-01-29 +**Core Value:** Capture and find anything from any device — especially laptop. If cross-device capture with images doesn't work, nothing else matters. + +## v1 Requirements + +Requirements for initial release. Each maps to roadmap phases. + +### Core + +- [ ] **CORE-01**: User can create a new entry (task or thought) +- [ ] **CORE-02**: User can edit an existing entry +- [ ] **CORE-03**: User can delete an entry +- [ ] **CORE-04**: User can mark entry as task or thought when creating +- [ ] **CORE-05**: User can mark a task as complete +- [ ] **CORE-06**: User can add notes to an existing entry + +### Images + +- [ ] **IMG-01**: User can attach images to an entry via file upload +- [ ] **IMG-02**: User can attach images via camera capture (mobile) +- [ ] **IMG-03**: User can view attached images on an entry +- [ ] **IMG-04**: User can remove an image attachment + +### Tags + +- [ ] **TAG-01**: User can add tags to an entry +- [ ] **TAG-02**: User can remove tags from an entry +- [ ] **TAG-03**: User sees autocomplete suggestions from existing tags +- [ ] **TAG-04**: Tags are case-insensitive ("work" = "Work" = "WORK") + +### Organization + +- [ ] **ORG-01**: User can pin/favorite an entry for quick access +- [ ] **ORG-02**: User can set a due date on a task +- [ ] **ORG-03**: Pinned entries appear in a dedicated section + +### Search + +- [ ] **SRCH-01**: User can search entries by text (title and content) +- [ ] **SRCH-02**: User can filter entries by tag +- [ ] **SRCH-03**: User can filter entries by date range +- [ ] **SRCH-04**: User can filter to show only tasks or only thoughts + +### Capture + +- [ ] **CAPT-01**: User can quickly capture a new entry with minimal friction +- [ ] **CAPT-02**: Quick capture defaults to thought (less friction than choosing) +- [ ] **CAPT-03**: Quick capture is accessible from main view + +### UX + +- [ ] **UX-01**: UI works well on mobile devices (touch targets, layout) +- [ ] **UX-02**: Font sizes are readable for older eyes (configurable or large default) +- [ ] **UX-03**: UI works in any modern browser (Chrome, Firefox, Safari, Edge) + +### Deployment + +- [ ] **DEPLOY-01**: App runs in a Docker container +- [ ] **DEPLOY-02**: Configuration via environment variables +- [ ] **DEPLOY-03**: Data persists via named Docker volumes +- [ ] **DEPLOY-04**: Single docker-compose.yml for easy deployment + +## v2 Requirements + +Deferred to future release. Tracked but not in current roadmap. + +### Polish + +- **POL-01**: Dark mode with theme toggle +- **POL-02**: Keyboard shortcuts for common actions +- **POL-03**: Export entries to JSON/Markdown +- **POL-04**: Drag-and-drop reorder of entries + +### Advanced + +- **ADV-01**: Markdown support in entry content +- **ADV-02**: Natural language date parsing ("tomorrow", "next Monday") +- **ADV-03**: Recurring tasks +- **ADV-04**: OCR text extraction from images +- **ADV-05**: Note linking with backlinks +- **ADV-06**: Offline support with sync + +## Out of Scope + +Explicitly excluded. Documented to prevent scope creep. + +| Feature | Reason | +|---------|--------| +| Real-time collaboration | Personal tool, single user — massive complexity for no value | +| Multi-user authentication | Single-user by design, no need for user management | +| AI-powered categorization | Over-engineering; manual tags are clearer and simpler | +| Complex folder hierarchies | Flat + tags is more flexible; nesting creates friction | +| Kanban boards | Overhead for personal tasks; simple list is enough | +| Multiple note types | Task/thought distinction is enough; more types complicate model | +| Social features | Out of scope for self-hosted personal app | +| Heavy WYSIWYG editor | Bloated and complex; plain text or defer to Markdown | +| Push notifications | Browser notifications are unreliable and annoying | +| Version history | Storage overhead; simple edit is fine for personal use | +| Mobile native app | Web-first; browser works on all devices | + +## Traceability + +Which phases cover which requirements. Updated during roadmap creation. + +| Requirement | Phase | Status | +|-------------|-------|--------| +| CORE-01 | TBD | Pending | +| CORE-02 | TBD | Pending | +| CORE-03 | TBD | Pending | +| CORE-04 | TBD | Pending | +| CORE-05 | TBD | Pending | +| CORE-06 | TBD | Pending | +| IMG-01 | TBD | Pending | +| IMG-02 | TBD | Pending | +| IMG-03 | TBD | Pending | +| IMG-04 | TBD | Pending | +| TAG-01 | TBD | Pending | +| TAG-02 | TBD | Pending | +| TAG-03 | TBD | Pending | +| TAG-04 | TBD | Pending | +| ORG-01 | TBD | Pending | +| ORG-02 | TBD | Pending | +| ORG-03 | TBD | Pending | +| SRCH-01 | TBD | Pending | +| SRCH-02 | TBD | Pending | +| SRCH-03 | TBD | Pending | +| SRCH-04 | TBD | Pending | +| CAPT-01 | TBD | Pending | +| CAPT-02 | TBD | Pending | +| CAPT-03 | TBD | Pending | +| UX-01 | TBD | Pending | +| UX-02 | TBD | Pending | +| UX-03 | TBD | Pending | +| DEPLOY-01 | TBD | Pending | +| DEPLOY-02 | TBD | Pending | +| DEPLOY-03 | TBD | Pending | +| DEPLOY-04 | TBD | Pending | + +**Coverage:** +- v1 requirements: 31 total +- Mapped to phases: 0 +- Unmapped: 31 (will be mapped during roadmap creation) + +--- +*Requirements defined: 2026-01-29* +*Last updated: 2026-01-29 after initial definition*