Tu bitácora de trading, open source y bajo tu control.
Aplicación web para registrar operaciones, medir tu rendimiento con métricas reales y mejorar tu disciplina con análisis impulsado por IA. Pensada para traders que quieren claridad — y para developers que quieren contribuir a una herramienta seria.
Demo / producto en producción: cleveshubfx.com
Tutorial de uso: Ver en YouTube
Contacto / soporte: Telegram @PabloClevesFX
- Para traders — Funcionalidades
- Tutorial de uso
- Privacidad y seguridad
- Stack tecnológico
- Estructura del proyecto
- Requisitos
- Instalación en local
- Variables de entorno
- Ejemplo de
.env.local - Notas útiles
- Despliegue y pruebas
- Guía de contribución
- Redes sociales
- Links de referidos
- ☕ Invítame un café
- ¿Necesitas ayuda?
- Licencia
Bitácora Ultimate te ayuda a dejar de operar “a ciegas” y a construir un historial accionable:
| Área | Qué puedes hacer |
|---|---|
| Registro de operaciones | Anota entradas, salidas, SL/TP, confirmaciones y reflexiones por operación |
| Métricas clave | Win Rate, Risk/Reward Ratio (RRR), efectividad, efectividad vs eficiencia y más |
| Multi-mercado | Soporte para Forex, metales, índices y cripto (incl. calculadora de tamaño de lote) |
| Análisis con IA | Maestro Ultimate con Google Gemini: diagnóstico, próximos pasos y puntos a mantener |
| Dashboard | Visualiza rendimiento, capital y filtros para entender tu edge |
| Multi-bitácora | Separa cuentas, estrategias o etapas (demo / real / backtest) |
| Compartir | Genera enlaces de bitácora compartida cuando quieras mostrar tu process |
| Suscripción y planes | Flujo de trial / planes listo para auto-hospedar o adaptar a tu negocio |
Ideal si eres trader que quiere autogestionar su journal, o un equipo que busca un base sólida open source para personalizar.
¿Prefieres verlo en acción? Aquí tienes el tutorial completo: dashboard, registro de operaciones, métricas y flujo general de la bitácora.
Haz clic en la miniatura o en el enlace para abrir el video.
Al ejecutar el proyecto en tu máquina (o en tu propio hosting), tus datos financieros te pertenecen: viven en tu instancia de MongoDB (Atlas o local). No dependes de un tercero para el almacenamiento de tu journal.
Buenas prácticas incluidas / recomendadas:
- Secretos solo en
.env.local(nunca en el repositorio) - Contraseñas hasheadas (bcrypt) y sesiones firmadas con
JWT_SECRET - APIs de terceros (Gemini, tasas de cambio, email) se invocan desde el servidor, no desde el navegador con la key expuesta
Si despliegas en nube, eres responsable de proteger tu URI de Mongo, rotar keys y restringir el Network Access del cluster.
| Capa | Tecnología |
|---|---|
| Framework | Next.js 16 (App Router) + React 19 |
| Lenguaje | TypeScript |
| Estilos | Tailwind CSS 4 |
| Base de datos | MongoDB + Mongoose |
| Auth | JWT (jsonwebtoken) + bcrypt — no usamos NextAuth; fácil de adaptar si lo prefieres |
| IA | Google Gemini (@google/generative-ai) |
| Gráficos | Chart.js + react-chartjs-2 |
| Nodemailer (Gmail App Password) | |
| UI | Headless UI, Lucide, next-themes |
¿Quieres cambiar algo del stack? Edita esta tabla y sigue siendo bienvenido a proponer mejoras vía PR.
logbook-trading/
├── public/ # Assets estáticos (imágenes, robots.txt, etc.)
├── src/
│ ├── app/ # App Router (páginas + layouts)
│ │ └── api/ # Route Handlers (REST)
│ │ ├── auth/ # Login, register, reset password…
│ │ ├── logbooks/ # Bitácoras
│ │ ├── operations/ # Operaciones
│ │ ├── gemini/ # Análisis con IA
│ │ ├── admin/ # Panel administrativo
│ │ └── … # exchange-rate, share, sync, etc.
│ ├── components/ # UI (Dashboard, Operations, Maestro…)
│ ├── hooks/ # Hooks de React (auth, suscripción…)
│ ├── middleware/ # Auth JWT (requireAuth, generateJWT)
│ ├── models/ # Esquemas Mongoose
│ ├── services/ # Lógica de negocio / acceso a datos
│ ├── lib/ & libs/ # Utilidades (auth-check, mongodb…)
│ ├── constants/ # Constantes de dominio
│ ├── types/ # Tipos TypeScript
│ └── utils/ # Helpers
├── scripts/ # Scripts auxiliares
├── .env.local # Tus secretos (NO se sube a Git)
├── package.json
└── README.md
- Node.js 18 o superior (recomendado LTS)
- npm (incluido con Node.js)
- Cuenta en MongoDB Atlas (o MongoDB local)
- Las API keys descritas más abajo
git clone https://github.com/PabloClevesFX/logbook-trading.git
cd logbook-tradingnpm installCrea un archivo .env.local en la raíz del proyecto (al mismo nivel que package.json).
Importante: nunca subas
.env.locala Git. Ya está ignorado en.gitignore.
Copia esta plantilla y rellénala con tus valores:
MONGODB_URI=
APIKEY_CALCULATOR=
APIKEY_GEMINI=
NEXT_PUBLIC_APP_URL=http://localhost:3000
GMAIL_APP_PASSWORD=
NOTIFY_FROM_EMAIL=
JWT_SECRET=
NEXT_PUBLIC_GA_MEASUREMENT_ID=
NEXT_PUBLIC_GTM_ID=npm run devAbre http://localhost:3000 en el navegador.
npm run build # Compilar para producción
npm start # Servir el build de producción
npm run lint # Linter| Variable | Para qué sirve | Dónde y cómo obtenerla |
|---|---|---|
MONGODB_URI |
Conexión a la base de datos (usuarios, bitácoras, operaciones) | 1. Entra a MongoDB Atlas 2. Crea un cluster (gratis con el plan M0) 3. Database Access: crea un usuario y contraseña 4. Network Access: permite tu IP (o 0.0.0.0/0 solo para pruebas)5. Connect → Drivers y copia la URI: mongodb+srv://USER:PASS@cluster.../nombreDB?retryWrites=true&w=majority |
APIKEY_CALCULATOR |
Tasas de cambio (calculadora / divisas) vía exchangerate.host | 1. Regístrate en APILayer – Exchange Rates Data o el portal de exchangerate.host 2. Crea una API key gratuita 3. Pégala en esta variable |
APIKEY_GEMINI |
Análisis con IA (Google Gemini) | 1. Ve a Google AI Studio 2. Inicia sesión con tu cuenta de Google 3. Crea una API key 4. Pégala aquí |
NEXT_PUBLIC_APP_URL |
URL pública de la app (enlaces de verificación de email, reset de contraseña, etc.) | En local usa http://localhost:3000En producción: la URL de tu dominio (ej. https://tudominio.com) |
GMAIL_APP_PASSWORD |
Envío de emails (registro, verificación, recuperación de contraseña) con Nodemailer + Gmail | 1. Usa una cuenta Gmail 2. Activa la verificación en 2 pasos 3. En Contraseñas de aplicaciones crea una para “Correo” / “Otro” 4. Copia la contraseña de 16 caracteres (puedes quitar los espacios) 5. El email remitente debe ser el de esa cuenta Gmail (ver NOTIFY_FROM_EMAIL) |
NOTIFY_FROM_EMAIL |
Dirección “From” de los correos | El mismo Gmail con el que generaste GMAIL_APP_PASSWORD (ej. tunombre@gmail.com) |
JWT_SECRET |
Firma de tokens de sesión (login / auth) | Genera una cadena larga y aleatoria. Por ejemplo en terminal:node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"No la compartas ni la reutilices entre proyectos públicos. |
| Variable | Para qué sirve | Dónde y cómo obtenerla |
|---|---|---|
NEXT_PUBLIC_GA_MEASUREMENT_ID |
Google Analytics 4 | 1. Google Analytics 2. Crea una propiedad → flujo Web 3. Copia el Measurement ID ( G-XXXXXXXX)Si lo dejas vacío, la app funciona igual sin GA. |
NEXT_PUBLIC_GTM_ID |
Google Tag Manager | 1. Google Tag Manager 2. Crea un contenedor Web 3. Copia el ID ( GTM-XXXXXXX)Si lo dejas vacío, no se carga GTM. |
MONGODB_URI=mongodb+srv://usuario:contraseña@tu-cluster.mongodb.net/bitacora?retryWrites=true&w=majority
APIKEY_CALCULATOR=tu_access_key_de_exchangerate
APIKEY_GEMINI=tu_api_key_de_google_ai_studio
NEXT_PUBLIC_APP_URL=http://localhost:3000
GMAIL_APP_PASSWORD=xxxx xxxx xxxx xxxx
NOTIFY_FROM_EMAIL=tunombre@gmail.com
JWT_SECRET=pega_aqui_el_string_aleatorio_generado
NEXT_PUBLIC_GA_MEASUREMENT_ID=
NEXT_PUBLIC_GTM_ID=- Primera vez con MongoDB: tras conectar, la app crea las colecciones al usarse (registro, bitácoras, etc.).
- Emails en local: necesitan
GMAIL_APP_PASSWORD+NOTIFY_FROM_EMAIL+NEXT_PUBLIC_APP_URL. Sin eso, registro y recuperación de contraseña fallarán al enviar correo. - Gemini: sin
APIKEY_GEMINIfallará el endpoint de análisis con IA. - Variables
NEXT_PUBLIC_*: se exponen al navegador; no pongas secrets ahí. - Si cambias
.env.local, reinicianpm run dev.
npm run lint # ESLint (regla actual del proyecto)
npm run build # Verifica que el proyecto compileHoy no hay un script
testenpackage.json. Cuando se añadan tests (Jest / Vitest / Playwright, etc.), el comando típico será:
npm run testPRs que añadan una suite de tests básica son muy bienvenidos.
- Sube el repo a GitHub (si aún no está).
- Entra a Vercel → Import Project.
- Configura las mismas variables de
.env.localen Project Settings → Environment Variables. - En producción,
NEXT_PUBLIC_APP_URLdebe ser tu dominio real (HTTPS). - Deploy. Vercel detecta Next.js automáticamente.
También puedes desplegar en cualquier host que soporte Node (Railway, Render, VPS con Docker, etc.): npm run build + npm start.
¡Las contribuciones mejoran la herramienta para toda la comunidad!
-
Fork del repositorio en GitHub.
-
Clona tu fork y crea una rama descriptiva:
git checkout -b feature/mi-mejora # o git checkout -b fix/descripcion-del-bug -
Haz tus cambios, prueba en local (
npm run lint/npm run build). -
Commit con mensaje claro (qué y por qué).
-
Push a tu fork y abre un Pull Request hacia
main(o la rama por defecto). -
Describe el problema, la solución y cómo lo probaste.
Ideas de contribución: tests, i18n, mejoras de UX trader, hardening de seguridad, integraciones de brokers.
Sígueme para contenido de trading, disciplina y actualizaciones del proyecto:
| Red | Link |
|---|---|
| Telegram | t.me/PabloClevesFX |
| TikTok | @pabloclevesfx |
| YouTube | @pabloclevesfx |
Si vas a abrir cuenta con un broker, prop firm o exchange, usar estos links no te cuesta más y me ayuda a seguir desarrollando Bitácora Ultimate en open source. ¡Gracias!
| Plataforma | Descripción | Link |
|---|---|---|
| IC Markets | Broker | Abrir con mi referido |
| FTMO | Prop firm / challenge | Registrarse con mi afiliado |
| IC Funded | Funding / productos | Checkout con afiliado |
| Binance | Exchange (CPA referral) | Unirme con referido |
Este repo es gratis y open source. Si Bitácora Ultimate te está sirviendo para journalizar mejor, mantener la disciplina o construir tu propio setup…
invítame un café. ☕
Cada aporte — por pequeño que sea — paga servidores, APIs (Gemini, tasas de cambio), café de madrugada debuggeando y tiempo para seguir mejorando la herramienta para toda la comunidad.
| Método | Datos | Notas |
|---|---|---|
| USDT (TRC20) | TLe5PUizZ36MykPV9vBF8LVmP7oXmpfuWX |
Red TRC20 (Tron). Verifica siempre la red antes de enviar. |
| Bancolombia (Ahorros) | Llave: @cleves87402 |
Transferencia por llave Bancolombia |
Cualquier monto suma. No hay mínimo: un café, un almuerzo o lo que puedas. Si no puedes donar, compartir el repo o usar un link de referido también ayuda un montón.
¿Donaste? Mándame un mensaje por Telegram — me motiva saber que el proyecto le está sirviendo a alguien.
Si algo no te cuadra al montarlo en local (Mongo, Gmail, Gemini, deploy, etc.), escríbeme por Telegram:
Este proyecto se distribuye bajo la MIT License.
Puedes usarlo, modificarlo y redistribuirlo libremente — incluso en proyectos comerciales — siempre que incluyas el aviso de copyright y la licencia.
Hecho con disciplina de trader y código abierto.
¿Listo para journalizar mejor? → npm install · npm run dev · Telegram
¿Te gustó el repo? → Invítame un café · Redes · Referidos
