Plataforma moderna de remesas a Cuba
Onyx Transfer es una aplicación web que facilita y agiliza el envío de dinero hacia Cuba mediante diferentes métodos de transferencia. Proporciona una interfaz intuitiva para usuarios finales y un panel administrativo completo para gestionar transacciones, configuración y métricas.
- 💰 Cálculo en tiempo real de conversión de moneda (USD a CUP)
- 📍 Selector de ubicación visual con mapa interactivo (Leaflet)
- 🚀 Transferencia rápida y segura mediante Zelle y otros métodos
- 📱 Responsivo y optimizado para dispositivos móviles
- 🔍 Seguimiento de transacciones en tiempo real
- 🌍 Soporte para múltiples provincias de Cuba
- 📊 Gráficos y estadísticas de transacciones
- 📈 Métricas en tiempo real de uso de la plataforma
- ⚙️ Configuración centralizada del sistema
- 💾 Gestión de transacciones completa
- 👥 Auditoría y logs de operaciones
- 🔐 Control de acceso seguro
- HTML5 - Estructura semántica
- CSS3 - Estilos profesionales y responsivos
- JavaScript (ES6+) - Módulos y programación moderna
- Leaflet - Mapas interactivos
- SweetAlert2 - Modales y notificaciones elegantes
- Supabase - BDD PostgreSQL y autenticación
- API REST - Endpoints documentados
- Google Analytics - Seguimiento de eventos
- Git - Control de versiones
onyx-main/
├── index.html # Página principal de usuarios
├── panel.html # Panel administrativo
├── css/
│ ├── styles.css # Estilos principales
│ └── panel.css # Estilos del panel
├── data/
│ ├── constants.js # Constantes (URLs, claves API)
│ ├── regions.js # Datos de provincias de Cuba
│ └── sound/ # Efectos de sonido
├── js/
│ ├── main.js # Punto de entrada principal
│ ├── panelMain.js # Punto de entrada panel admin
│ ├── api/ # Clientes y servicios API
│ │ ├── supabaseClient.js
│ │ ├── configApi.js
│ │ ├── realtimeApi.js
│ │ ├── storageApi.js
│ │ └── transactionApi.js
│ ├── controllers/ # Lógica de aplicación
│ │ ├── initController.js
│ │ ├── locationController.js
│ │ ├── submitTransactionController.js
│ │ ├── trackingController.js
│ │ └── panelControllers/
│ ├── services/ # Servicios de negocio
│ │ ├── transactionService.js
│ │ ├── realtimeService.js
│ │ ├── locationService.js
│ │ └── panelServices/
│ ├── store/
│ │ └── appStore.js # Estado global de la aplicación
│ ├── ui/ # Componentes visuales
│ │ ├── components/ # Componentes reutilizables
│ │ └── utils/ # Utilidades de UI
│ └── validators/
│ └── formValidators.js
└── README.md # Este archivo
- Navegador web moderno (Chrome, Firefox, Safari, Edge)
- Acceso a internet
- Cuenta en Supabase configurada
-
Clonar el repositorio
git clone https://github.com/tu-usuario/onyx-main.git cd onyx-main -
Configurar variables de entorno
Edita
data/constants.jse ingresa tus credenciales:export const SUPABASE_URL = "tu_url_supabase"; export const SUPABASE_ANON_KEY = "tu_clave_anonima"; export const GOOGLE_ANALYTICS_ID = "G-07SFW672VY";
-
Servir la aplicación
Opción A - Con Python:
python -m http.server 8000
Opción B - Con Node.js:
npx http-server
Opción C - Con Live Server en VS Code
-
Acceder a la aplicación
- Usuarios:
http://localhost:8000 - Panel Admin:
http://localhost:8000/panel.html
- Usuarios:
- Calcular envío: Ingresa cantidad en USD
- Seleccionar destino: Elige provincia en el mapa de Cuba
- Confirmar transacción: Revisa los detalles
- Completar pago: Sigue instrucciones de Zelle o método seleccionado
- Seguimiento: Usa el código de transacción para rastrearla
- Acceder a
/panel.html - Autenticarse con credenciales Supabase
- Navegar entre secciones:
- Inicio: Resumen de métricas
- Transacciones: Listado y detalles
- Gráficos: Análisis visual de datos
- Configuración: Ajustes del sistema
La aplicación implementa una arquitectura en capas:
┌─────────────────────────────────────┐
│ UI Components (main.html) │
├─────────────────────────────────────┤
│ Controllers (Orquestación) │
├─────────────────────────────────────┤
│ Services (Lógica de Negocio) │
├─────────────────────────────────────┤
│ API Clients (Supabase) │
├─────────────────────────────────────┤
│ Backend (Supabase PostgreSQL) │
└─────────────────────────────────────┘
1. Usuario ingresa monto en form
↓
2. Calculator actualiza conversión (USD → CUP)
↓
3. Usuario selecciona ubicación en mapa
↓
4. submitTransactionController valida datos
↓
5. transactionService prepara payload
↓
6. transactionApi envía a Supabase
↓
7. Base de datos registra transacción
↓
8. Usuario recibe código de seguimiento
- id: UUID (PK)
- user_id: UUID (FK)
- amount_usd: DECIMAL
- amount_cup_final: DECIMAL
- origin_province: TEXT
- destination_province: TEXT
- status: ENUM ('pending', 'completed', 'failed')
- payment_method: TEXT
- created_at: TIMESTAMP
- updated_at: TIMESTAMP- id: UUID (PK)
- email: TEXT
- phone: TEXT
- kyc_verified: BOOLEAN
- created_at: TIMESTAMP- id: UUID (PK)
- rate: DECIMAL
- source_currency: TEXT
- target_currency: TEXT
- updated_at: TIMESTAMP- Autenticación: Supabase Auth integrado
- Validación: Validación de formularios en cliente y servidor
- Variables de entorno: Configuración sensible en
data/constants.js - HTTPS: Se recomienda usar solo en conexiones seguras
- Row Level Security: Implementado en Supabase
- appStore: Estado global reactivo
- executeOperation: Patrón consistente de manejo de errores con Supabase
- controllers: Orquestan la lógica de la aplicación
- services: Contienen la lógica de negocio
- Nombres en camelCase para variables y funciones
- Nombres en PascalCase para clases y componentes
- JSDoc para documentar funciones públicas
- Comentarios en español/inglés según estándar del proyecto
Abre la consola del navegador (F12) para ver:
- Logs de inicialización
- Errores de Supabase
- Eventos de usuario
- Métricas de rendimiento
Solución: Asegúrate de que el script de Supabase está antes de los módulos en HTML
Solución: Verifica que Leaflet CSS y JS estén cargados correctamente en HTML
Solución: Valida credenciales de Supabase y permisos RLS en base de datos
Las contribuciones son bienvenidas. Por favor:
- Fork el repositorio
- Crea una rama (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo licencia MIT. Ver archivo LICENSE para más detalles.
Para reportar bugs o solicitar features, crea un issue en GitHub.
Developed with ❤️ for Onyx Team
Versión: 1.4.0 | Última actualización: Marzo 2026