Files
recall/resumen/2026-03-22-1652-resumen.md
Daniel Arroyo d5c418c84f fix: responsive header with hamburger menu for mobile
- Desktop: single row with logo, nav links, QuickAdd, New note button
- Mobile: logo + QuickAdd + hamburger icon → dropdown menu
- Improved QuickAdd sizing for small screens

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

6.1 KiB
Raw Blame History

Recall - Resumen del Proyecto

Fecha

2026-03-22

Descripción

Recall es una aplicación de gestión de conocimiento personal (PKM) para captura y recuperación de notas, comandos, snippets y conocimiento técnico.

Stack Tecnológico

  • Framework: Next.js 16.2.1 con App Router
  • Base de datos: SQLite via Prisma ORM
  • Lenguaje: TypeScript
  • UI: TailwindCSS + shadcn/ui components
  • Testing: Jest

Estructura del Proyecto

src/
├── app/                    # Next.js App Router
│   ├── api/               # API routes
│   │   ├── notes/         # CRUD de notas
│   │   ├── tags/          # Tags y sugerencias
│   │   ├── search/        # Búsqueda avanzada
│   │   ├── usage/          # Tracking de uso
│   │   ├── metrics/       # Métricas internas
│   │   ├── centrality/     # Notas centrales
│   │   └── export-import/  # Import/export JSON
│   ├── notes/[id]/        # Detalle de nota
│   ├── edit/[id]/         # Edición de nota
│   └── new/               # Nueva nota
├── components/             # Componentes React
│   ├── ui/               # shadcn/ui components
│   ├── dashboard.tsx      # Dashboard inteligente
│   ├── quick-add.tsx      # Captura rápida
│   ├── note-form.tsx      # Formulario de nota
│   ├── note-connections.tsx # Panel de conexiones
│   ├── related-notes.tsx   # Notas relacionadas
│   └── track-note-view.tsx # Tracking de vistas
└── lib/                   # Utilidades
    ├── prisma.ts          # Cliente Prisma
    ├── usage.ts           # Tracking de uso y co-uso
    ├── search.ts          # Búsqueda con scoring
    ├── related.ts         # Notas relacionadas
    ├── backlinks.ts        # Sistema de enlaces [[wiki]]
    ├── tags.ts            # Normalización y sugerencias
    ├── metrics.ts         # Métricas de dashboard
    ├── centrality.ts       # Cálculo de centralidad
    ├── type-inference.ts   # Detección automática de tipo
    ├── link-suggestions.ts # Sugerencias de enlaces
    ├── features.ts         # Feature flags
    └── validators.ts      # Zod schemas

Modelos de Datos

Note

model Note {
  id             String    @id @default(cuid())
  title          String
  content        String
  type           String    @default("note")  // command, snippet, decision, recipe, procedure, inventory, note
  isFavorite     Boolean   @default(false)
  isPinned       Boolean   @default(false)
  createdAt      DateTime  @default(now())
  updatedAt      DateTime  @updatedAt
  creationSource String    @default("form")  // form, quick, import
}

NoteUsage

model NoteUsage {
  id        String   @id @default(cuid())
  noteId    String
  eventType String   // view, search_click, related_click, link_click, copy_command, copy_snippet
  query     String?
  createdAt DateTime @default(now())
}

NoteCoUsage

model NoteCoUsage {
  id         String   @id @default(cuid())
  fromNoteId String
  toNoteId   String
  weight     Int      @default(1)
}
model Backlink {
  sourceNoteId String
  targetNoteId String
}

APIs Principales

Endpoint Método Descripción
/api/notes GET, POST Listar/crear notas
/api/notes/[id] GET, PUT, DELETE CRUD de nota
/api/notes/quick POST Creación rápida
/api/notes/links GET Sugerencias de enlaces
/api/search GET Búsqueda con scoring
/api/tags GET Listar/buscar tags
/api/tags/suggest GET Sugerencias automáticas
/api/usage GET Estadísticas de uso
/api/metrics GET Métricas de dashboard
/api/centrality GET Notas más centrales

Features Implementadas

MVP-1 (Completado)

  • CRUD completo de notas
  • Sistema de tags
  • Búsqueda básica

MVP-2 (Completado)

  • Búsqueda avanzada con scoring
  • Quick Add con prefijos (cmd:, snip:, etc.)
  • Backlinks con sintaxis wiki
  • Formularios guiados por tipo de nota

MVP-3 Sprint 1

  • Usage tracking (vistas, clics, copias)
  • Dashboard inteligente (Recientes, Más usadas, Por tipo)
  • Scoring boost basado en uso

MVP-3 Sprint 2

  • Sugerencias automáticas de tags
  • Panel "Conectado con" (backlinks, enlaces, relacionadas)

MVP-3 Sprint 3

  • Quick Add multilínea
  • Pegado inteligente con detección de tipo
  • Sugerencia automática de tipo de nota
  • Sugerencia de enlaces internos

MVP-3 Sprint 4

  • Registro de co-uso entre notas
  • Métricas internas (notas por tipo, más vistas, por origen)
  • Cálculo de notas centrales (centrality score)
  • Registro de origen de creación (form/quick/import)
  • Feature flags configurables

Mejoras UI Recientes

  • Header responsive con menú hamburguesa en móvil
  • Desktop: una fila con logo, nav links, QuickAdd y botón Nueva nota
  • Mobile: logo + QuickAdd + hamburguesa → dropdown con nav links y botón Nueva nota

Algoritmo de Scoring

// Search scoring
score = baseScore + favoriteBoost(+2) + pinnedBoost(+1) + usageBoost

// Related notes scoring
score = sameType(+3) + sharedTags(×3) + titleKeywords(max+3) + contentKeywords(max+2) + usageBoost

// Centrality score
centrality = backlinks(×3) + outboundLinks(×1) + usageViews(×0.5) + coUsageWeight(×2)

Tests

181 tests cubriendo:

  • API routes (CRUD, search, tags, etc.)
  • Search y scoring
  • Notas relacionadas
  • Backlinks
  • Type inference
  • Link suggestions
  • Usage tracking
  • Dashboard

Comandos

npm run dev      # Desarrollo
npm run build    # Build producción
npm run test     # Tests
npx prisma db push  # Sync schema
npx prisma studio   # UI de BD

Configuración de Feature Flags

FLAG_CENTRALITY=true
FLAG_PASSIVE_RECOMMENDATIONS=true
FLAG_TYPE_SUGGESTIONS=true
FLAG_LINK_SUGGESTIONS=true

Roadmap

  • Panel de métricas visible en UI
  • Configuración de feature flags en Settings
  • Visualización del grafo de conocimiento
  • Exportación mejorada (Markdown, HTML)
  • Tests de integración E2E