Files
taskplaner/.planning/research/FEATURES.md
Thomas Richter 4e7c20b3ad docs: complete project research
Files:
- STACK.md - SvelteKit + SQLite + TypeScript stack recommendation
- FEATURES.md - Feature landscape with MVP definition
- ARCHITECTURE.md - Modular monolith architecture with repository pattern
- PITFALLS.md - Critical pitfalls and prevention strategies
- SUMMARY.md - Executive synthesis with roadmap implications

Key findings:
- Stack: SvelteKit 2.50.x + Svelte 5.49.x with SQLite and better-sqlite3 for single-user simplicity
- Architecture: Modular monolith with content-addressable image storage, FTS5 for search
- Critical pitfall: Store images on filesystem (not DB) from Phase 1 to avoid painful migration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 03:38:41 +01:00

10 KiB

Feature Research

Domain: Personal Task/Notes Web App (self-hosted, single-user) Researched: 2026-01-29 Confidence: MEDIUM (based on competitor analysis via WebFetch + domain knowledge)

Feature Landscape

Table Stakes (Users Expect These)

Features users assume exist. Missing these = product feels incomplete.

Feature Why Expected Complexity Notes
Create/Edit/Delete items Basic CRUD is fundamental LOW Text input with persistence
Distinguish tasks vs thoughts Project requirement; users expect to filter by type LOW Boolean or enum field
Mark tasks complete Core task management; every competitor has this LOW Status toggle
Cross-device access Project requirement; web app enables this inherently LOW Responsive design
Search Users expect to find content quickly; all competitors offer this MEDIUM Full-text search on title + content
Tags/labels Standard organization pattern (Todoist, Bear, Simplenote all have) MEDIUM Many-to-many relationship
Image attachments Project requirement for digitizing paper notes MEDIUM File upload, storage, display
Mobile-friendly UI "Any device" access means mobile must work MEDIUM Responsive design, touch targets
Data persistence Notes must survive restart LOW Database storage
Quick capture Fast entry is table stakes (Todoist: "Capture...the moment they come to you") LOW Minimal friction input

Differentiators (Competitive Advantage)

Features that set the product apart. Not required, but valuable.

Feature Value Proposition Complexity Notes
OCR on images Search text within uploaded images (Evernote, Bear Pro have this) HIGH Requires OCR library/service
Image annotation Mark up photos of paper notes HIGH Canvas drawing, save state
Natural language dates "tomorrow", "next Monday" (Todoist signature feature) MEDIUM Date parsing library
Recurring tasks Habits and repeated items (Todoist core feature) MEDIUM RRULE or simple patterns
Offline support Work without internet, sync later HIGH Service worker, conflict resolution
Keyboard shortcuts Power user efficiency LOW Event handlers
Dark mode User preference, reduces eye strain LOW CSS variables, theme toggle
Markdown support Rich formatting without WYSIWYG complexity (Simplenote, Bear, Obsidian) MEDIUM Markdown parser + preview
Note linking Connect related items (Obsidian's core feature) MEDIUM Internal link syntax, backlinks
Document scanning Camera capture with perspective correction (Evernote) HIGH Camera API, image processing
Export/backup Data portability, user owns data (Obsidian philosophy) LOW JSON/Markdown export
Drag-and-drop reorder Intuitive organization (Todoist Upcoming view) MEDIUM Sortable library, persist order
Pin/favorite items Quick access to important items (Bear) LOW Boolean field, UI section
Due dates with reminders Time-sensitive tasks (all task apps have this) MEDIUM Date field + notification system

Anti-Features (Commonly Requested, Often Problematic)

Features that seem good but create problems for a personal, single-user app.

Feature Why Requested Why Problematic Alternative
Real-time collaboration "Maybe I'll share with family" Massive complexity (OT/CRDT), scope creep, conflicts with "personal" app Export/share single notes manually
AI-powered categorization Trendy, seems smart Over-engineering for personal use; manual tags are clearer Good tag UX + search
Complex folder hierarchies "I want to organize everything" Deep nesting causes friction; flat + tags is more flexible Tags with hierarchy (nested tags)
Kanban boards Looks nice, seems productive Overhead for personal tasks; simple list often better Optional board view later
Multiple note types "Journals, wikis, tasks, etc." Complicates data model, UI; blur the simple task/thought distinction Two types (task/thought) with tags
Social features Share achievements, collaborate Out of scope for self-hosted personal app None
Heavy WYSIWYG editor "I want formatting" Bloated, complex, mobile-unfriendly Markdown with preview
Notifications/alerts on web Keep me on track Browser notifications are annoying, unreliable Focus on capture, not nagging
Version history "I might want to undo" Storage overhead, complexity for personal use Simple edit; consider soft-delete
Multi-user/auth "Maybe I'll share the server" Security complexity, out of scope Single-user by design

Feature Dependencies

[Search]
    └──requires──> [Data persistence]

[Tags]
    └──requires──> [Data persistence]
    └──enhances──> [Search] (filter by tag)

[Image attachments]
    └──requires──> [Data persistence]
    └──requires──> [File storage]

[OCR on images]
    └──requires──> [Image attachments]

[Image annotation]
    └──requires──> [Image attachments]

[Markdown support]
    └──enhances──> [Create/Edit items]

[Note linking]
    └──requires──> [Data persistence]
    └──enhances──> [Search] (backlink discovery)

[Recurring tasks]
    └──requires──> [Mark tasks complete]

[Due dates with reminders]
    └──requires──> [Distinguish tasks vs thoughts]

[Offline support]
    └──conflicts──> [Real-time collaboration] (sync conflicts)
    └──requires──> [Data persistence]

[Export/backup]
    └──requires──> [Data persistence]

Dependency Notes

  • OCR requires Image attachments: Cannot search images if they don't exist
  • Tags enhance Search: Tag filtering is a search feature
  • Offline conflicts with Real-time collab: Sync conflict resolution is hard; single-user sidesteps this
  • Recurring tasks require completion status: Need to know when to regenerate

MVP Definition

Launch With (v1)

Minimum viable product based on project requirements:

  • Create/Edit/Delete items (task or thought) -- core CRUD
  • Distinguish tasks vs thoughts -- project requirement
  • Mark tasks complete -- essential task management
  • Image attachments -- project requirement for digitizing paper notes
  • Tags for organization -- project requirement
  • Search -- project requirement
  • Mobile-responsive UI -- "any device" requirement
  • Containerized deployment -- project requirement

Add After Validation (v1.x)

Features to add once core is working:

  • Dark mode -- low complexity, high user satisfaction
  • Keyboard shortcuts -- power user efficiency
  • Pin/favorite items -- quick access to important items
  • Export to JSON/Markdown -- data portability
  • Due dates on tasks -- natural extension of task type
  • Drag-and-drop reorder -- better organization UX

Future Consideration (v2+)

Features to defer until product-market fit is established:

  • Markdown support -- adds complexity to editing
  • Natural language dates -- requires parsing library
  • Recurring tasks -- adds state machine complexity
  • OCR on images -- requires external service/library
  • Note linking -- changes how users think about the app
  • Offline support -- significant complexity (service worker, sync)

Feature Prioritization Matrix

Feature User Value Implementation Cost Priority
Create/Edit/Delete HIGH LOW P1
Task vs Thought distinction HIGH LOW P1
Mark complete HIGH LOW P1
Image attachments HIGH MEDIUM P1
Tags HIGH MEDIUM P1
Search HIGH MEDIUM P1
Mobile-responsive HIGH MEDIUM P1
Dark mode MEDIUM LOW P2
Keyboard shortcuts MEDIUM LOW P2
Pin/favorite MEDIUM LOW P2
Export MEDIUM LOW P2
Due dates MEDIUM MEDIUM P2
Drag-and-drop MEDIUM MEDIUM P2
Markdown MEDIUM MEDIUM P3
Natural language dates LOW MEDIUM P3
Recurring tasks MEDIUM HIGH P3
OCR LOW HIGH P3
Note linking LOW MEDIUM P3
Offline support LOW HIGH P3

Priority key:

  • P1: Must have for launch (MVP)
  • P2: Should have, add when possible (v1.x)
  • P3: Nice to have, future consideration (v2+)

Competitor Feature Analysis

Feature Todoist Bear Simplenote Obsidian Our Approach
Task management Core focus Checkbox in notes Basic lists Plugin First-class task type
Notes/thoughts Via descriptions Core focus Core focus Core focus First-class thought type
Image attachments Yes Yes (with sketching) No Yes Yes, for paper note capture
Tags Yes (labels) Yes (with icons) Yes Yes Yes, simple tags
Search Advanced filters OCR search (Pro) Instant search Full-text Full-text + tag filter
Sync Cloud (their servers) iCloud Cloud (their servers) Local-first, optional sync Self-hosted, cross-device via web
Markdown Limited Yes Yes Yes (core) Defer to v2
Offline Yes Yes Yes Yes (local-first) Defer to v2
Mobile Native apps Native (Apple only) Native apps Native apps Responsive web

Our differentiation: Self-hosted, single-user simplicity with explicit task/thought distinction and image attachment for digitizing paper notes. No account required, no cloud dependency, you own your data.

Confidence Notes

Section Confidence Rationale
Table Stakes HIGH Verified against Todoist, Bear, Simplenote, Evernote via WebFetch
Differentiators MEDIUM Based on competitor features; value proposition is hypothesis
Anti-Features MEDIUM Based on domain experience; specific to single-user context
Dependencies HIGH Logical dependencies from requirements
MVP Definition HIGH Derived directly from project requirements

Sources

  • Todoist features page (verified via WebFetch)
  • Obsidian home page (verified via WebFetch)
  • Bear app home page (verified via WebFetch)
  • Simplenote home page (verified via WebFetch)
  • Evernote features page (verified via WebFetch)

Feature research for: Personal Task/Notes Web App Researched: 2026-01-29