Resumen del Proyecto - 2026-03-22
Nombre
Recall - Sistema de gestión de notas personales
Descripción
Aplicación web para crear, editar, buscar y organizar notas personales con soporte para tags, tipos de notas, favoritos, pins, captura rápida, backlinks y relaciones entre notas.
Tech Stack
| Categoría |
Tecnología |
| Framework |
Next.js 16.2.1 (React 19.2.4) |
| Base UI |
@base-ui/react 1.3.0 |
| Database |
SQLite con Prisma ORM |
| Validation |
Zod 4.3.6 |
| Styling |
Tailwind CSS 4 + CSS Variables |
| Icons |
Lucide React |
| Markdown |
react-markdown + remark-gfm |
| Syntax Highlight |
react-syntax-highlighter |
| Toast |
sonner 2.0.7 |
| Testing |
Jest |
Estructura del Proyecto
Modelo de Datos (Prisma)
Note
| Campo |
Tipo |
Descripción |
| id |
String |
CUID único |
| title |
String |
Título |
| content |
String |
Contenido en Markdown |
| type |
String |
command, snippet, decision, recipe, procedure, inventory, note |
| isFavorite |
Boolean |
Favorita |
| isPinned |
Boolean |
Fijada |
| createdAt |
DateTime |
Creación |
| updatedAt |
DateTime |
Última modificación |
Tag
| Campo |
Tipo |
Descripción |
| id |
String |
CUID único |
| name |
String |
Nombre único (lowercase) |
Backlink
Relación bidireccional entre notas via [[nombre-nota]]
APIs
| Método |
Ruta |
Descripción |
| GET |
/api/notes |
Listar notas |
| POST |
/api/notes |
Crear nota |
| GET |
/api/notes/[id] |
Obtener nota |
| PUT |
/api/notes/[id] |
Actualizar nota |
| DELETE |
/api/notes/[id] |
Eliminar nota |
| GET |
/api/notes/[id]/backlinks |
Backlinks recibidos |
| POST |
/api/notes/quick |
Captura rápida |
| GET |
/api/notes/suggest |
Sugerencias de notas |
| GET |
/api/search |
Búsqueda con scoring |
| GET |
/api/tags |
Listar/sugerir tags |
| GET |
/api/tags/suggest |
Sugerencias por contenido |
| GET/POST |
/api/export-import |
Exportar/importar |
Funcionalidades Implementadas
1. Captura Rápida (Quick Add)
- Shortcut global
Ctrl+N
- Sintaxis:
[tipo:][título] #tag1 #tag2
- Tipos:
cmd:, snip:, dec:, rec:, proc:, inv:
- API:
POST /api/notes/quick
2. Búsqueda y Recuperación
- Scoring: título exacto > parcial > favoritos > pinned > recencia
- Búsqueda fuzzy (tolerante a errores de escritura)
- Resaltado de términos con excerpt
- Filtros por tipo y tags
3. Relaciones entre Notas
- Backlinks automáticos: detecta
[[nombre-nota]]
- Notas relacionadas: scoring por tags, tipo, palabras
- API:
GET /api/notes/[id]/backlinks
4. Campos Guiados por Tipo
- Command: comando, descripción, ejemplo
- Snippet: lenguaje, código, descripción
- Decision: contexto, decisión, alternativas, consecuencias
- Recipe: ingredientes, pasos, tiempo
- Procedure: objetivo, pasos, requisitos
- Inventory: item, cantidad, ubicación
5. UX por Tipo
- Command: botón copiar
- Snippet: syntax highlighting
- Procedure: checkboxes interactivos
6. Sistema de Tags
- Normalización automática (lowercase, trim)
- Autocomplete en formularios
- Sugerencias basadas en contenido
Tests
Comandos
Rutas de la Aplicación
| Ruta |
Descripción |
/ |
Dashboard |
/notes |
Lista de notas |
/notes/[id] |
Detalle de nota |
/new |
Crear nota |
/edit/[id] |
Editar nota |
/settings |
Exportar/importar |
Notas Técnicas
- App Router (Next.js 13+)
- Server Components para datos
- Client Components para interactividad
- Prisma con SQLite
- Zod para validación
- Errores API con formato
{ success, data, error, timestamp }