Files
recall/backlog/recall-mvp4-tickets.md
Daniel Arroyo 9af25927b7 feat: MVP-4 Sprint 1 - Query parser, real-time search, keyboard navigation
- Add query-parser.ts with AST for type:, tag:, is:favorite, is:pinned filters
- Integrate parser into search API
- Add real-time search with 300ms debounce in search-bar
- Add keyboard navigation (↑↓ Enter ESC) for Spotlight-like UX
- Add dropdown results display with loading state
- Add 22 tests for query parser

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:33:17 -03:00

4.1 KiB

Recall — Tickets técnicos MVP-4 (Camino Producto)

🎯 Objetivo

Convertir Recall en una herramienta confiable, rápida y diaria, enfocada en:

  • búsqueda tipo Google personal
  • navegación instantánea
  • confianza (historial + backup)
  • contexto activo

🧩 EPIC 1 — Búsqueda avanzada (Google personal)

[P1] Ticket 01 — Parser de query avanzada

Objetivo
Permitir búsquedas expresivas tipo: docker tag:backend type:command

Alcance

  • Crear src/lib/query-parser.ts
  • Soportar:
    • texto libre
    • type:
    • tag:
    • is:favorite, is:pinned
  • Devolver AST simple

Criterios

  • Queries válidas parsean correctamente
  • Soporta combinación de filtros + texto
  • Tests unitarios incluidos

Objetivo
Aplicar parser en /api/search

Alcance

  • Filtrar por AST antes de scoring
  • Mantener scoring existente

Criterios

  • type:command docker filtra correctamente
  • tag:api error funciona
  • No rompe búsqueda actual

[P1] Ticket 03 — Búsqueda en tiempo real

Objetivo
Actualizar resultados mientras el usuario escribe

Alcance

  • Debounce en search-bar.tsx
  • Fetch automático
  • Estado loading ligero

Criterios

  • Resultados cambian en <300ms
  • No bloquea UI

[P1] Ticket 04 — Navegación por teclado en búsqueda

Objetivo
UX tipo Spotlight

Alcance

  • ↑ ↓ para moverse
  • Enter para abrir
  • ESC para cerrar

Criterios

  • Navegación sin mouse
  • Estado seleccionado visible

🧠 EPIC 2 — Contexto activo

[P1] Ticket 05 — Sidebar contextual inteligente

Objetivo
Mostrar contexto dinámico mientras navegas

Alcance

  • Crear note-context-sidebar.tsx
  • Mostrar:
    • relacionadas
    • co-uso
    • backlinks
    • recientes

Criterios

  • Siempre muestra contenido relevante
  • No rompe layout responsive

[P2] Ticket 06 — Sugerencias dinámicas en lectura

Objetivo
Recomendar contenido mientras lees

Alcance

  • Hook en notes/[id]/page.tsx
  • Actualizar sugerencias según scroll/uso

Criterios

  • Sugerencias cambian según contexto
  • No afecta performance

🔐 EPIC 3 — Confianza total

[P1] Ticket 07 — Historial de versiones

Objetivo
Permitir ver y revertir cambios

Alcance

  • Modelo NoteVersion
  • Guardar snapshot en cada update
  • Endpoint /api/notes/[id]/versions

Criterios

  • Se pueden listar versiones
  • Se puede restaurar versión
  • No rompe edición actual

[P1] Ticket 08 — UI historial de versiones

Objetivo
Visualizar cambios

Alcance

  • Vista en notes/[id]
  • Mostrar lista de versiones
  • Botón restaurar

Criterios

  • UX clara
  • Confirmación antes de revertir

[P2] Ticket 09 — Backup automático

Objetivo
Evitar pérdida de datos

Alcance

  • Export JSON automático
  • Guardar en local (descarga o storage)

Criterios

  • Backup se genera periódicamente
  • No bloquea app

EPIC 4 — Rendimiento y UX

[P1] Ticket 10 — Cache de resultados de búsqueda

Objetivo
Reducir latencia

Alcance

  • Cache en cliente por query
  • Invalidación simple

Criterios

  • Queries repetidas son instantáneas
  • No datos stale críticos

[P2] Ticket 11 — Preload de notas frecuentes

Objetivo
Abrir notas más rápido

Alcance

  • Prefetch en hover/listado
  • Usar Next.js prefetch

Criterios

  • Navegación instantánea en notas frecuentes

🧪 EPIC 5 — Calidad

[P1] Ticket 12 — Tests query avanzada

  • parser
  • integración search

[P1] Ticket 13 — Tests historial versiones

  • creación
  • restore
  • edge cases

[P2] Ticket 14 — Tests navegación teclado

  • selección
  • acciones

🗺️ Orden sugerido

Sprint 1

  • Query parser
  • Integración search
  • Real-time search
  • Tests base

Sprint 2

  • Navegación teclado
  • Sidebar contextual
  • Cache búsqueda

Sprint 3

  • Historial versiones (API + UI)

Sprint 4

  • Backup automático
  • Preload notas
  • Tests finales

Definition of Done

  • Feature usable sin bugs críticos
  • Tests pasando
  • No regresiones
  • UX fluida (<300ms interacción)