Sistema completo de gestión financiera desarrollado en Python con Flask, que incluye API REST, dashboard web interactivo y módulos de automatización. El proyecto implementa gestión de clientes, transacciones, portafolios de inversión y análisis de mercado de valores.
Linux/macOS:
./start.shWindows PowerShell:
.\start_dashboard.ps1Manual (dos terminales):
Terminal 1 - Servidor de API:
cd api
python3 app.pyTerminal 2 - Servidor web del dashboard:
python3 -m http.server 8080- Dashboard: http://localhost:8080
- API: http://localhost:5000
- Verificación de estado: http://localhost:5000/api/health
En la sección Settings, configurar:
- URL base de la API: http://localhost:5000/api
- Clave de autenticación: api_key_demo_12345
Utilizar "Test Connection" para validar la conectividad.
- 40 clientes en 11 países
- 368 transacciones financieras
- 160 posiciones de portafolio
- 15 acciones del mercado con datos actualizados
El proyecto consiste en una solución integral para la gestión de datos financieros que incluye:
- API REST: Interfaz de programación para gestión de clientes, transacciones, acciones y portfolios
- Base de datos: Sistema de almacenamiento con 40 clientes, 368 transacciones y 160 posiciones de portfolio
- Dashboard web: Interfaz gráfica responsive con visualización de datos en tiempo real
- Módulos de automatización: Integración con n8n, Make y Zapier
El sistema se encuentra completamente funcional con las siguientes características:
Base de datos poblada:
- 40 clientes distribuidos en 11 países (España, México, Estados Unidos, Francia, Alemania, Italia, Argentina, Colombia, Brasil, Reino Unido, Canadá)
- 368 transacciones con múltiples tipos (pago, reembolso, transferencia, suscripción, compra)
- 15 acciones del mercado con datos actualizados (AAPL, MSFT, GOOGL, AMZN, TSLA, META, NVDA, JPM, V, WMT, NFLX, DIS, PYPL, INTC, AMD)
- 160 posiciones activas de portfolio (100% de cobertura de clientes)
Endpoints disponibles: 21 endpoints RESTful completamente funcionales
El sistema sigue una arquitectura de tres capas:
- Capa de presentación: Dashboard HTML/CSS/JavaScript con diseño responsive
- Capa de lógica de negocio: API REST desarrollada en Flask
- Capa de datos: Base de datos SQLite (desarrollo) / PostgreSQL (producción)
Usuario → Dashboard web → API REST → Base de datos
Interfaz gráfica moderna con las siguientes características:
Diseño responsive:
- Adaptable a dispositivos móviles (< 768px)
- Optimizado para tablets (768px - 1024px)
- Diseño completo para escritorio (> 1024px)
Secciones principales:
- Resumen general (Overview): Estadísticas clave y métricas del sistema
- Gestión de clientes (Customers): Visualización y administración de clientes
- Transacciones (Transactions): Historial de operaciones financieras
- Portfolio: Gestión de carteras de inversión
- Estadísticas globales (Stats): Análisis de datos agregados
- Workflows: Estado de integraciones y automatizaciones
- Configuración (Settings): Parámetros de conexión y autenticación
Navegación:
- Sistema de navegación suave entre secciones
- Indicador visual de sección activa
- Menú adaptativo para dispositivos móviles
Sistema backend con los siguientes grupos de endpoints:
Gestión de clientes (4 endpoints):
- GET /api/customers: Listado con filtros y paginación
- POST /api/customers: Creación de nuevos clientes
- PUT /api/customers/: Actualización de datos
- DELETE /api/customers/: Eliminación lógica
Gestión de transacciones (2 endpoints):
- GET /api/transactions: Consulta con filtros múltiples
- POST /api/transactions: Registro de nuevas transacciones
Gestión de acciones (5 endpoints):
- GET /api/stocks: Listado completo de acciones
- GET /api/stocks/: Detalles específicos
- GET /api/stocks//historico: Datos históricos
- GET /api/stocks/populares: Ranking de popularidad
- POST /api/stocks/actualizar-multiples: Actualización masiva
Gestión de portfolio (5 endpoints):
- GET /api/portfolio: Todas las posiciones
- GET /api/portfolio/customer/: Portfolio por cliente
- POST /api/portfolio: Creación de posiciones
- DELETE /api/portfolio/: Eliminación de posiciones
- PATCH /api/portfolio/: Actualización de cantidades
Estadísticas y sistema (4 endpoints):
- GET /api/stats/global: Métricas globales del sistema
- GET /api/workflows: Estado de automatizaciones
- GET /api/health: Verificación de estado del sistema
- OPTIONS /api/*: Soporte CORS
El sistema requiere las siguientes dependencias:
- Python 3.9 o superior
- pip (gestor de paquetes de Python)
- Git (control de versiones)
- Navegador web moderno (Chrome, Firefox, Safari, Edge)
Paso 1: Clonar el repositorio
git clone https://github.com/Jomucon21muri/API.git
cd APIPaso 2: Crear entorno virtual
Windows:
python -m venv venv
.\venv\Scripts\Activate.ps1Linux/Mac:
python3 -m venv venv
source venv/bin/activatePaso 3: Instalar dependencias
cd api
pip install -r requirements.txtLas dependencias principales incluyen:
- Flask: Framework web
- SQLAlchemy: ORM para base de datos
- Flask-CORS: Soporte para CORS
- python-dotenv: Gestión de variables de entorno
Paso 4: configurar variables de entorno
Crear archivo .env en la carpeta api/:
FLASK_ENV=development
SECRET_KEY=clave_secreta_personalizada
DATABASE_URL=sqlite:///financial.db
API_KEY=api_key_demo_12345
Paso 5: inicializar base de datos
cd ..
python scripts/populate_db.pyEste comando ejecuta:
- Creación de esquema de base de datos
- Población con datos de ejemplo
- Verificación de integridad
Paso 6: iniciar el sistema
Opción recomendada (dos terminales):
Terminal 1 - Iniciar la API:
cd api
python3 app.pyLa API estará disponible en http://localhost:5000
Terminal 2 - Iniciar servidor web para el dashboard:
python3 -m http.server 8080El dashboard estará disponible en http://localhost:8080
Opción alternativa (Windows con PowerShell):
.\start_dashboard.ps1Para verificar que el sistema funciona correctamente:
-
Verificar que la API responde:
curl http://localhost:5000/api/health
Debe responder con estado "ok" y "database: connected"
-
Abrir el dashboard en el navegador:
- Navegar a http://localhost:8080
- O abrir directamente index.html (puede presentar problemas con CORS)
-
En el dashboard, ir a la sección "Settings" (Configuración):
- Verificar que la URL de API sea: http://localhost:5000/api
- Verificar que la API Key sea: api_key_demo_12345
- Hacer clic en "Test Connection"
- Debe mostrar "Conexión exitosa"
-
Explorar las diferentes secciones del dashboard:
- Overview: estadísticas generales
- Customers: listado de clientes (40 registros)
- Transactions: transacciones (368 registros)
- Portfolio: carteras de inversión
Sección de inicio: Presenta un resumen general del sistema con:
- Título y descripción del proyecto
- Botones de acceso rápido
- Enlaces a la web principal
Gestión de clientes:
- Tabla completa de clientes registrados
- Filtros por país y estado
- Exportación de datos
Gestión de transacciones:
- Visualización de todas las transacciones
- Filtros por estado, tipo y cliente
- Detalles de montos y fechas
Gestión de portfolio:
- Selector de cliente para visualización individual
- Métricas de valor total, ganancia o pérdida y rendimiento
- Lista detallada de posiciones en acciones
Los datos del dashboard se cargan mediante llamadas a la API REST. Para actualizar la información, utilizar el botón "Recargar" disponible en cada sección.
Diagnóstico: Este error indica que el dashboard no puede conectarse a la API.
Soluciones:
-
Verificar que la API esté ejecutándose:
curl http://localhost:5000/api/health
Si no responde, iniciar la API:
cd api python3 app.py -
Verificar acceso al dashboard desde servidor HTTP:
- Correcto: http://localhost:8080 (usando python3 -m http.server 8080)
- Incorrecto: file:///ruta/al/index.html (causará errores CORS)
-
Verificar configuración en el dashboard:
- Ir a Settings (Configuración)
- URL de API: http://localhost:5000/api
- API Key: api_key_demo_12345
- Hacer clic en "Test Connection"
-
Revisar consola del navegador (F12):
- Errores CORS: no se está usando un servidor HTTP
- Errores de red: la API no está en ejecución
- Error 401: API Key incorrecta
-
Si se trabaja en un Codespace o entorno remoto:
- El dashboard detecta automáticamente la URL correcta
- Asegurar que los puertos 5000 y 8080 estén públicamente accesibles
- Verificar que los puertos estén reenviados correctamente
Solución:
- Verificar que la base de datos esté inicializada:
ls -lh api/instance/financial.db
- Si no existe, inicializar con:
python scripts/populate_db.py
- Verificar logs de la API en la terminal donde se ejecuta
Solución:
cd api
pip install -r requirements.txtSolución:
- Identificar el proceso:
lsof -i :5000
- Detener el proceso o cambiar el puerto en api/app.py
Sistema de gestión financiera - Versión 1.0
Última actualización: mayo de 2026
Este repositorio es de uso educativo como apoyo a clases. No se aceptan contribuciones externas.
Material educativo desarrollado con fines académicos.