Agentic Trading Lab
Talk to agents, and test trading ideas. Try AI trading agents on real market data with no code required.
AI translation
Análisis financiero, noticias y un asistente con IA para decidir con más información antes de invertir.
Translation pending
FinanceTypeScript · CSSGitHub @Daniel050665OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Vesor: plataforma para analizar riesgos e inversiones con IA, noticias financieras y paneles personalizados
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Plataforma web para aprender a invertir, analizar oportunidades del mercado y decidir con más información. Incluye registro con perfil inversor, panel personalizado, mercado con indicadores, un asistente de análisis financiero con IA, noticias de fuentes externas, historial de actividad y un panel de administración.
Stack: Next.js 14 (App Router, TypeScript) · PostgreSQL (Supabase en producción, PGlite embebido en desarrollo) · API de Claude (Anthropic) · Vercel.
Vesor es una herramienta informativa y educativa. Sus análisis no garantizan rendimientos ni sustituyen la evaluación personal del riesgo.
| Módulo | Ruta | Descripción |
|---|---|---|
| Portada | / | Se conserva el diseño y las animaciones originales. El llamado a la acción ahora dice «Comienza tu análisis inteligente». |
| Registro / acceso | /registro, /login, /recuperar, /restablecer | Registro con nombre, correo, contraseña segura, fecha de nacimiento (mayoría de edad), nivel de experiencia, intereses y, opcionalmente, objetivo, horizonte y tolerancia al riesgo. Recuperación de contraseña con enlace de un solo uso (30 min). |
| Panel de usuario | /panel | Resumen del mercado, lista de seguimiento, ideas personalizadas con riesgos y pérdidas posibles, activos de sus intereses, noticias filtradas, actividad reciente y acceso al asistente. |
| Mercado | /mercado, /activo/[símbolo] | Catálogo de 39 activos (acciones, ETF y criptomonedas) con filtros; ficha con gráfico, rendimiento 30/90 días, medias móviles, RSI, volatilidad, caída máxima, ventajas y riesgos. |
| Análisis de riesgo | /analizar | El simulador existente (antes «Simulador»), ahora guarda cada análisis en el historial. |
| Asistente IA | /chat | Chatbot que analiza activos, compara, explica conceptos y sugiere ideas según el perfil. Conversaciones persistentes. |
| Noticias | /noticias | Titulares de Yahoo Finance, CNBC, MarketWatch, CoinDesk, Cointelegraph, Reserva Federal, TechCrunch y OilPrice vía RSS oficial; filtros por categoría e intereses; guardar noticias. |
| Historial | /historial | Inicio/cierre de sesión, consultas al chatbot, análisis, simulaciones, activos consultados y seguidos, noticias visitadas/guardadas y cambios de perfil, en orden cronológico, con filtros y detalle. |
| Perfil | /perfil | Edición de intereses, nivel, objetivos y tolerancia al riesgo; cambio de contraseña. |
| Administración | /admin | Estadísticas de uso, estado de la plataforma, usuarios (suspender/reactivar, rol), registros de actividad de todos los usuarios y gestión de fuentes de noticias. |
Requisitos: Node.js 18.17+ (probado con Node 20).
npm install
cp .env.example .env.local
Define en .env.local al menos las contraseñas de las cuentas de prueba (SEED_ADMIN_PASSWORD, SEED_USER_PASSWORD, entre comillas simples). Todo lo demás es opcional.
npm run dev
Abrir http://localhost:3000. Sin DATABASE_URL la app crea automáticamente una base PostgreSQL embebida (PGlite) en ./.data/pglite, aplica el esquema y crea las cuentas de prueba. Para empezar de cero basta con borrar la carpeta .data/.
Con el servidor en marcha:
npm test
Ejecuta tests/api.test.mjs (9 pruebas de extremo a extremo: rutas protegidas, registro y validaciones, CSRF, inicio de sesión, permisos de administrador, seguimiento, chatbot, simulaciones, noticias, perfil, historial, aislamiento entre usuarios, recuperación de contraseña y suspensión de cuentas). Las pruebas crean usuarios *@vesor.test en la base local. También hay verificación de tipos con npm run typecheck.
| Variable | Obligatoria | Uso |
|---|---|---|
DATABASE_URL | En producción | PostgreSQL. En Supabase: Project Settings → Database → Connection string → Transaction pooler. Sin ella se usa PGlite local (no persiste en Vercel, por eso allí es obligatoria). |
APP_URL | Recomendada | URL pública para los enlaces de recuperación de contraseña. |
ANTHROPIC_API_KEY | No | Activa el asistente con IA (Claude). Sin clave funciona en «modo local» con reglas y datos, indicado en cada respuesta. |
ANTHROPIC_MODEL | No | Por defecto claude-opus-5-5. |
ALPHA_VANTAGE_API_KEY, MARKET_DATA_PROVIDER | No | Cotizaciones e históricos de acciones/ETF. Sin clave se usan datos de demostración marcados como tales. |
RESEND_API_KEY, MAIL_FROM | No | Envío del correo de recuperación. Sin proveedor, en desarrollo el enlace aparece en la consola y en pantalla; en producción no se muestra. |
SEED_ADMIN_EMAIL, SEED_ADMIN_PASSWORD, SEED_USER_EMAIL, SEED_USER_PASSWORD | No | Cuentas de prueba creadas al iniciar (ver abajo). |
ALLOW_PRODUCTION_SEED | No | Debe ser true para que el seed corra con NODE_ENV=production. |
SEED_RESET_PASSWORDS | No | true para volver a fijar la contraseña de las cuentas de prueba existentes. |
PGLITE_DATA_DIR | No | Carpeta de la base local (por defecto ./.data/pglite). |
Ninguna clave se usa en el navegador: todas se leen solo en el servidor. .env* está en .gitignore (salvo .env.example).
Se crean mediante un mecanismo de inicialización controlado (src/lib/db/seed.ts), no con credenciales fijas en el código:
[email protected] (rol administrador) y [email protected] (rol usuario, principiante, intereses tecnología/IA/cripto).SEED_ADMIN_PASSWORD / SEED_USER_PASSWORD. El seed rechaza contraseñas débiles, no sobrescribe contraseñas de cuentas existentes y no se ejecuta en producción salvo con ALLOW_PRODUCTION_SEED=true..env.local y en cuentas-prueba.local.md (ambos ignorados por git)./admin/noticias. Revisa las condiciones de uso de cada medio antes de un uso comercial.src/app/ Páginas (App Router) y rutas API
src/app/api/auth/* Registro, login, logout, recuperación y restablecimiento
src/app/api/chat/* Chatbot y conversaciones
src/app/api/admin/* APIs exclusivas de administración (rol verificado en el servidor)
src/lib/db/ Conexión (Postgres o PGlite), esquema y seed
src/lib/auth.ts Sesiones, guardas de usuario/admin, CSRF y límite de intentos
src/lib/password.ts Hash scrypt con sal por usuario
src/lib/validation.ts Validaciones compartidas navegador/servidor
src/lib/market-data.ts Cotizaciones, históricos e indicadores técnicos
src/lib/assets.ts Catálogo de activos con volatilidad y riesgos
src/lib/personalization.ts Recomendaciones según intereses, experiencia, tolerancia y horizonte
src/lib/chat.ts Motor del asistente (Claude + modo local)
src/lib/news.ts Lectura RSS, deduplicación y caché de noticias
src/lib/activity.ts Registro del historial (con deduplicación)
src/lib/simulation.ts Lógica del simulador de riesgo
supabase/schema.sql Copia del esquema para ejecutarlo manualmente en Supabase
tests/api.test.mjs Pruebas de extremo a extremo
httpOnly, SameSite=Lax y Secure en producción; en la base solo se guarda el hash SHA-256 del token. Al cambiar o restablecer la contraseña y al suspender una cuenta se cierran sus sesiones.admin. Las consultas de datos personales filtran por user_id en SQL. El middleware es solo una primera barrera.Origin en todas las peticiones que modifican datos.anon) no puede leerlas; solo el servidor, con DATABASE_URL.DATABASE_URL.supabase/schema.sql en el SQL Editor; si no, la app lo aplica al primer acceso.DATABASE_URL y APP_URL).SEED_ADMIN_EMAIL, una contraseña fuerte en SEED_ADMIN_PASSWORD y ALLOW_PRODUCTION_SEED=true en un despliegue; luego quitar esas variables.ALPHA_VANTAGE_API_KEY las acciones/ETF usan datos de demostración; con el plan gratuito solo se consultan pocas cotizaciones por minuto.Más detalle de las pruebas realizadas y los errores corregidos en docs/PRUEBAS.md.