CtrlMP es una aplicación web que permite monitorear pagos en tiempo real utilizando Firebase como backend. El sistema incluye autenticación de usuarios y un dashboard para visualizar transacciones.
- 🔐 Autenticación de usuarios con Firebase Auth
- 📊 Dashboard de pagos en tiempo real
- 🔄 Actualización automática de datos
- 📱 Interfaz responsive
- ⚡ Despliegue automático con GitHub Actions
- Frontend: HTML, CSS, JavaScript
- Backend: Firebase (Firestore, Authentication)
- Hosting: Firebase Hosting
- CI/CD: GitHub Actions
CtrlMP/
├── functions/ # Cloud Functions
│ ├── public/ # Archivos públicos
│ │ └── pagos.html # Dashboard de pagos
│ └── index.js # Funciones principales
├── firebase.json # Configuración de Firebase
├── firestore.rules # Reglas de seguridad
└── .github/ # Configuración de GitHub Actions
La estructura que implementamos se llama comúnmente "estructura por capas" o "arquitectura en capas", y más específicamente sigue el patrón de "arquitectura MVC (Modelo-Vista-Controlador)" extendido con componentes adicionales. En el contexto de aplicaciones de servidor como esta, también se le conoce como:
-
Arquitectura por capas (Layered Architecture) - Separa la aplicación en capas lógicas: servicios, controladores, rutas, middleware, etc.
-
Arquitectura basada en servicios (Service-based Architecture) - Donde la lógica de negocio se encapsula en servicios reutilizables.
-
Arquitectura RESTful - Con rutas claramente definidas que siguen principios REST.
-
Patrón MVC (Modelo-Vista-Controlador) extendido - Aunque no tenemos un componente de vista tradicional en una API, sí tenemos controladores y modelos (en este caso, servicios que actúan como modelos lógicos).
Esta estructura también incorpora principios de separación de responsabilidades (SRP) del conjunto de principios SOLID, ya que cada archivo y directorio tiene una única responsabilidad bien definida.
En el contexto de Node.js y Express, esta organización se considera una estructura modular o estructura por módulos, ya que cada componente (rutas, controladores, servicios) está encapsulado en módulos independientes que se importan y utilizan en el archivo principal.
- Node.js (versión 16 o superior)
- Firebase CLI
- Cuenta de GitHub
- Proyecto de Firebase
- Clona el repositorio:
git clone https://github.com/tu-usuario/CtrlMP.git
cd CtrlMP- Instala las dependencias:
cd functions
npm install- Configura Firebase:
firebase login
firebase use ctrlmp-d13a1El proyecto se despliega automáticamente cada vez que se hace push a la rama principal. También puedes desplegar manualmente:
firebase deployAsegúrate de configurar las siguientes variables en GitHub Secrets:
FIREBASE_SERVICE_ACCOUNT_CTRLMP: Contenido del archivofunctions/config/credCtrlMp.json
Nota: El proyecto ya incluye el archivo de credenciales credCtrlMp.json que está protegido en .gitignore.
- Fork el proyecto
- Crea una rama para tu feature (
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 la Licencia MIT. Ver el archivo LICENSE para más detalles.
- Proyecto: https://github.com/tu-usuario/CtrlMP