Este proyecto utiliza una arquitectura modular diseñada para permitir que múltiples sitios web compartan la misma infraestructura de procesamiento de datos sin necesidad de modificar el sistema principal.
El objetivo es que cualquier desarrollador pueda crear una nueva interfaz simplemente cambiando la apariencia visual y, si es necesario, agregando nuevos campos de información sin romper la compatibilidad con el ecosistema.
La lógica de negocio, procesamiento y envío de datos se encuentra centralizada.
Cada sitio web actúa únicamente como una capa de presentación encargada de:
- Mostrar información al usuario.
- Capturar datos.
- Validar formularios.
- Enviar la información utilizando el formato definido por el sistema.
Esto permite mantener una única infraestructura mientras se despliegan múltiples sitios con diseños completamente distintos.
flowchart LR
A[Usuario] --> B[Interfaz Web]
B --> C[Validación]
C --> D[Payload JSON]
D --> E[Sistema de Envío]
E --> F[Servidor]
F --> G[Base de Datos]
F --> H[Integraciones]
F --> I[Automatizaciones]
/
│
├── index.html
│
├── assets/
│ ├── images/
│ ├── icons/
│ └── fonts/
│
├── css/
│ ├── style.css
│ └── responsive.css
│
├── js/
│ ├── app.js
│ ├── validator.js
│ └── sender.js
│
├── config/
│ └── config.json
│
└── README.md
Contiene la estructura visual.
Ejemplos:
- Formularios
- Botones
- Menús
- Tarjetas
- Tablas
- Ventanas emergentes
Puede modificarse libremente siempre que se respeten los identificadores utilizados por JavaScript.
Controla la apariencia.
Se puede modificar completamente:
- Colores
- Espaciado
- Tipografías
- Sombras
- Bordes
- Temas
- Animaciones
No afecta la compatibilidad del sistema.
Aquí se encuentra la comunicación con el backend.
Algunas partes pueden modificarse.
Otras son obligatorias.
Los siguientes componentes deben mantenerse.
sendData()submitForm()apiEndpointwebhookURL{
nombre,
correo,
telefono
}Ejemplo:
:root{
--primary:#3498db;
--secondary:#2ecc71;
}font-family:Arial,sans-serif;transition:0.3s;Se permite:
- Landing Pages
- Dashboards
- Paneles
- Formularios Multipaso
- Tiendas
- Blogs
- Catálogos
Si se requiere recopilar más información se pueden crear nuevos campos.
Agregar el campo visual.
<input
id="ciudad"
type="text"
placeholder="Ciudad"
/>Capturar el valor.
const ciudad =
document.getElementById("ciudad").value;Añadirlo al payload.
const data = {
nombre,
correo,
telefono,
ciudad
};{
"nombre":"Juan",
"correo":"juan@gmail.com",
"telefono":"3000000000",
"ciudad":"Bogotá"
}sequenceDiagram
Usuario->>Formulario: Completa datos
Formulario->>Validador: Verificación
Validador->>Payload: Construcción JSON
Payload->>Sistema: Envío
Sistema->>Servidor: Recepción
Servidor->>BaseDatos: Almacenamiento
Una web será considerada compatible cuando:
- Mantener la función de envío.
- Mantener el endpoint.
- Mantener la estructura base.
- Utilizar HTTPS.
- Enviar JSON válido.
- Cambiar rutas críticas.
- Alterar funciones internas.
- Modificar nombres requeridos.
- Romper el formato de envío.
Es posible implementar múltiples temas.
Ejemplo:
[data-theme="dark"][data-theme="light"][data-theme="red"][data-theme="blue"]Toda web nueva debe ser responsive.
Recomendado:
@media(max-width:768px)Recomendaciones:
- Comprimir imágenes.
- Minimizar CSS.
- Minimizar JavaScript.
- Utilizar lazy loading.
- Reducir solicitudes innecesarias.
Recomendado:
- Validar entradas.
- Sanitizar datos.
- Limitar longitud de campos.
- Utilizar HTTPS.
- Evitar ejecutar código enviado por usuarios.
La arquitectura permite:
- Múltiples diseños.
- Múltiples dominios.
- Múltiples formularios.
- Múltiples integraciones.
- Múltiples bases de datos.
Sin modificar la lógica principal.
Sitio A:
Diseño Azul
Sitio B:
Diseño Oscuro
Sitio C:
Diseño Corporativo
Todos pueden utilizar exactamente el mismo sistema de procesamiento de datos.
Si la web conserva:
- El sistema de envío.
- El formato JSON.
- La comunicación con el backend.
Puede modificarse cualquier elemento visual sin perder compatibilidad con Websites.