Tu segundo cerebro, potenciado con Inteligencia Artificial.
CiteMind es una aplicación web de Gestión de Conocimiento Personal (PKM) que te permite guardar notas y luego conversar con ellas mediante IA. En lugar de buscar entre cientos de notas manualmente, simplemente le preguntas a tu asistente y él responde basándose en tu propio conocimiento almacenado, citando siempre la fuente.
CiteMind combina un sistema de notas tradicional con un pipeline de IA semántica (RAG — Retrieval-Augmented Generation):
- Guardar (Notas) — Escribes y organizas tu conocimiento en notas de texto libre.
- Ingesta automática — Al guardar una nota, el sistema la divide en fragmentos (chunks), genera embeddings vectoriales con Google AI y los almacena en Supabase con
pgvector. - Chat con tus notas — Haces una pregunta en lenguaje natural. El sistema convierte tu pregunta en un vector, busca los fragmentos más relevantes de tus notas y se los entrega al modelo de lenguaje (Groq / Llama 3.3).
- Respuesta citada — El asistente responde usando únicamente tu información privada, sin inventar datos externos.
| Componente | Descripción |
|---|---|
| Autenticación | Registro e inicio de sesión con Supabase Auth |
| Notas CRUD | Crear, leer y eliminar notas con actualizaciones optimistas |
| Pipeline de Embeddings | Chunking → Google text-embedding-004 → pgvector |
| Chat RAG | Búsqueda semántica + respuesta en streaming con Llama 3.3 (Groq) |
- 📚 Estudiante — Guarda resúmenes de libros y pregunta "¿Qué aprendí sobre termodinámica?"
- 💻 Desarrollador — Almacena snippets y soluciones y consulta "¿Cómo resolví el error de CORS la semana pasada?"
- 💡 Emprendedor — Registra ideas de negocio y pregunta "¿Cuáles de mis ideas tienen modelo de suscripción?"
- 🍳 Uso personal — Guarda recetas, viajes, listas y pregunta "¿Qué ingredientes necesito para la lasaña navideña?"
| Capa | Tecnología |
|---|---|
| Framework | Next.js 16 (App Router) + TypeScript |
| Estilos | Tailwind CSS v4 + Shadcn/ui |
| Estado servidor | TanStack Query v5 |
| Formularios | TanStack Form v1 + Zod |
| Base de datos | Supabase (PostgreSQL + pgvector) |
| Autenticación | Supabase Auth |
| Embeddings | Google Generative AI (text-embedding-004) |
| Chat / LLM | Groq (llama-3.3-70b-versatile) vía AI SDK |
| Arquitectura | Vertical Slice Architecture |
- Node.js v18 o superior
- npm v9 o superior
- Cuenta en Supabase (plan gratuito disponible)
- API Key de Google AI Studio (gratuito)
- API Key de Groq (gratuito)
git clone https://github.com/tu-usuario/citemind.git
cd citemindnpm installCopia el archivo de ejemplo y rellena tus credenciales:
cp .env.example .env.localEdita .env.local con tus valores:
# Supabase — Proyecto en https://supabase.com/dashboard
NEXT_PUBLIC_SUPABASE_URL=https://tu-proyecto.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=tu-anon-key
SUPABASE_SERVICE_ROLE_KEY=tu-service-role-key
# Google AI Studio — https://aistudio.google.com/app/apikey
GOOGLE_AI_KEY=tu-google-ai-key
# Groq — https://console.groq.com/keys
GROQ_API_KEY=tu-groq-api-keyEn el SQL Editor de tu proyecto Supabase, ejecuta el esquema completo:
# Copia el contenido de supabase_schema.sql y ejecútalo en SupabaseEl esquema instala las extensiones necesarias (vector, pg_trgm, unaccent) y crea todas las tablas, índices, políticas de Row Level Security y la función match_documents para búsqueda vectorial.
npm run devAbre http://localhost:3000 en tu navegador.
npm run dev # Servidor de desarrollo con Turbopack
npm run build # Build de producción
npm run start # Servidor de producción
npm run lint # Análisis estático de códigosrc/
├── app/ # Routing (Next.js App Router)
│ ├── (auth)/ # Páginas de login y registro
│ ├── (dashboard)/ # Dashboard y chat (rutas protegidas)
│ └── api/chat/ # API Route para streaming de chat
├── features/ # Vertical Slices (dominio)
│ ├── auth/ # Autenticación
│ ├── chat/ # Chat con IA
│ ├── embeddings/ # Pipeline de vectorización
│ └── notes/ # CRUD de notas
├── lib/ # Shared Kernel
│ ├── ai/ # Configuración de modelos (Groq, Google)
│ └── supabase/ # Clientes de Supabase (browser/server)
└── providers/ # React context providers
