Dashboard interactivo para análisis estratégico de ventas de tu negocio gastronómico utilizando la API de Fudo.
- Análisis de ventas por día: Evolución diaria de ventas con gráficos interactivos
- Análisis de ventas por hora: Identificación de horas pico y patrones horarios
- Análisis de ventas por mes: Tendencias mensuales y comparativas
- Métricas clave: Total de ventas, transacciones, mejor día/hora, ticket promedio
- Dashboard interactivo: Visualizaciones dinámicas con Plotly y Streamlit
- Python 3.8 o superior
- Acceso a la API de Fudo (https://dev.fu.do/api/)
- Credenciales de API (API Key y Secret, si son requeridas)
-
Clonar o descargar el proyecto
-
Crear un entorno virtual (recomendado)
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate- Instalar dependencias
pip install -r requirements.txt-
Configurar variables de entorno
Copia el archivo
.env.examplea.env:
cp .env.example .envEdita el archivo .env y configura tus credenciales:
FUDO_ENVIRONMENT=production
FUDO_API_KEY=tu_api_key_aqui
FUDO_API_SECRET=tu_api_secret_aqui
apiKey y apiSecret),
debes contactar a soporte@fu.do indicando:
- El nombre de la cuenta en Fudo
- El usuario al que quieres dar acceso a la API
Se recomienda crear un usuario especialmente para acceso API (ej: api@turestaurante.com).
- Activa el entorno virtual (si aún no está activado):
source venv/bin/activate # En macOS/Linux
# O en Windows: venv\Scripts\activate- Ejecuta el dashboard:
streamlit run app.pyEl dashboard se abrirá automáticamente en tu navegador en http://localhost:8501
Alternativa rápida: Puedes usar el script incluido (solo macOS/Linux):
./run.sh- Sidebar: Configura el período de análisis (7-365 días) y selecciona la vista
- Resumen General: Métricas clave y gráficos combinados
- Por Día: Análisis detallado de ventas diarias
- Por Hora: Análisis de patrones horarios y horas pico
- Por Mes: Tendencias mensuales y comparativas
oye-api/
├── app.py # Dashboard principal con Streamlit
├── fudo_client.py # Cliente para la API de Fudo
├── analytics.py # Funciones de análisis de ventas
├── requirements.txt # Dependencias del proyecto
├── .env.example # Ejemplo de configuración
├── .gitignore # Archivos ignorados por git
└── README.md # Este archivo
El cliente de API está configurado para usar la API oficial de Fudo:
- URL Base:
https://api.fu.do/v1alpha1(producción) - Autenticación: Token Bearer obtenido mediante
apiKeyyapiSecret - Endpoint de Ventas:
/sales - Filtros: Usa el formato
filter[createdAt]=and(gte.FECHA,lte.FECHA) - Paginación: Maneja automáticamente paginación de hasta 500 items por página
El cliente maneja automáticamente:
- ✅ Obtención del token de autenticación
- ✅ Renovación automática del token (expira cada 24 horas)
- ✅ Reintentos cuando el token expira
El cliente mapea automáticamente los campos de la API de Fudo:
createdAt→datetimetotalAmount→amount- Manejo de diferentes formatos de respuesta
Nota: Si no hay conexión a la API o faltan credenciales, el sistema usará datos de ejemplo para desarrollo y testing.
- Ventas Totales: Suma de todas las ventas en el período
- Número de Transacciones: Cantidad total de ventas
- Ticket Promedio: Promedio por transacción
- Mediana de Transacciones: Valor mediano
- Mejor Día: Día con mayores ventas
- Peor Día: Día con menores ventas
- Mejor Hora: Hora del día con mayores ventas
Si la API de Fudo retorna datos en un formato diferente, ajusta la función _process_data() en analytics.py para mapear correctamente los campos.
Puedes agregar nuevas vistas en app.py siguiendo el mismo patrón de las vistas existentes.
El cache de datos se actualiza cada 5 minutos por defecto. Puedes modificarlo en app.py cambiando el parámetro ttl en @st.cache_data(ttl=300).
- Verifica que las credenciales en
.envsean correctas - Revisa que la URL de la API sea correcta
- Consulta la documentación de la API de Fudo para endpoints específicos
- Asegúrate de que el período seleccionado tenga datos disponibles
- Revisa el formato de los datos retornados por la API
# Asegúrate de activar el entorno virtual primero
source venv/bin/activate # En macOS/Linux
pip install --upgrade -r requirements.txtEste error ocurre cuando intentas ejecutar streamlit sin activar el entorno virtual.
Solución:
- Activa el entorno virtual:
source venv/bin/activate - Verifica que streamlit esté instalado:
pip list | grep streamlit - Si no está instalado, ejecuta:
pip install -r requirements.txt - Luego ejecuta:
streamlit run app.py
- Los datos se cachean durante 5 minutos para mejorar el rendimiento
- El dashboard usa datos de ejemplo si no hay conexión a la API (útil para desarrollo)
- Las visualizaciones son completamente interactivas (zoom, pan, hover, etc.)
Las contribuciones son bienvenidas. Por favor, abre un issue o pull request.
Este proyecto es de uso interno para análisis de ventas.
Desarrollado con ❤️ para análisis estratégico de ventas gastronómicas