|
1 | 1 | # 🏦 Sistema de Cola de Turnos - React + Relay Gateway |
2 | 2 |
|
3 | | -Sistema de gestión de turnos tipo banco construido con **React** y [Relay Gateway](https://github.com/Coderic/Relay). |
| 3 | +Sistema de gestión de turnos tipo banco con múltiples operadores construido con **React** y **[Relay Gateway](https://github.com/Coderic/Relay)**. |
4 | 4 |
|
5 | 5 |  |
6 | 6 |  |
7 | 7 |  |
8 | 8 |
|
| 9 | +## 📖 Sobre este Ejemplo |
| 10 | + |
| 11 | +Este ejemplo funcional demuestra cómo construir un sistema de gestión de cola de turnos en tiempo real, similar a los sistemas usados en bancos, oficinas públicas o servicios al cliente. Este ejemplo muestra: |
| 12 | + |
| 13 | +- 🎫 **Solicitud de turnos** - Los clientes pueden solicitar un turno para ser atendidos |
| 14 | +- 👨💼 **Múltiples operadores** - Varios operadores pueden atender turnos simultáneamente |
| 15 | +- ⚡ **Actualización en tiempo real** - Los turnos se actualizan instantáneamente en todas las pantallas |
| 16 | +- 📊 **Pantalla de turnos** - Visualización pública de los turnos en curso |
| 17 | +- 🔔 **Notificaciones** - Alertas cuando es tu turno o cuando un operador está disponible |
| 18 | +- 📈 **Estadísticas** - Tiempo de espera, turnos atendidos, operadores activos |
| 19 | + |
| 20 | +Este ejemplo pertenece a la colección de ejemplos de **[Relay Gateway](https://github.com/Coderic/Relay)**, un gateway de comunicación en tiempo real diseñado para ser inmutable y agnóstico. |
| 21 | + |
9 | 22 | ## 🚀 Inicio Rápido |
10 | 23 |
|
11 | 24 | ### Prerrequisitos |
12 | 25 |
|
13 | | -Relay Gateway ejecutándose en `http://localhost:5000`: |
| 26 | +- Node.js 18+ o Docker |
| 27 | +- Relay Gateway ejecutándose (ver [documentación de Relay](https://relay.coderic.net)) |
| 28 | + |
| 29 | +### Instalación |
14 | 30 |
|
15 | 31 | ```bash |
16 | | -npx relay-gateway |
| 32 | +# Clonar el repositorio |
| 33 | +git clone https://github.com/Coderic/cola-turnos.git |
| 34 | +cd cola-turnos |
| 35 | + |
| 36 | +# Instalar dependencias |
| 37 | +npm install |
17 | 38 | ``` |
18 | 39 |
|
19 | | -### Usar este template |
| 40 | +### Configuración |
20 | 41 |
|
21 | | -1. Haz clic en **"Use this template"** en GitHub |
22 | | -2. Crea tu nuevo repositorio |
23 | | -3. Clona y ejecuta: |
| 42 | +Asegúrate de tener Relay Gateway ejecutándose. Puedes usar el endpoint público para pruebas: |
24 | 43 |
|
25 | | -```bash |
26 | | -git clone tu-repositorio |
27 | | -cd tu-repositorio |
28 | | -npm install |
29 | | -npm run dev |
| 44 | +```javascript |
| 45 | +// En tu código, el conector se conecta a: |
| 46 | +const relay = new RelayConector('http://demo.relay.coderic.net'); |
30 | 47 | ``` |
31 | 48 |
|
32 | | -## 📖 Características |
| 49 | +O ejecuta Relay localmente: |
33 | 50 |
|
34 | | -- **Vista Usuario**: Solicitar turno (Cajero o Ejecutivo) |
35 | | -- **Vista Administración**: Ver cola completa en tiempo real |
36 | | -- **Vista Operador**: Atender turnos (múltiples operadores simultáneos) |
37 | | -- **Notificaciones**: Alertas cuando es tu turno |
38 | | -- **Tiempo estimado**: Cálculo automático de espera |
| 51 | +```bash |
| 52 | +# Opción 1: Con npx (recomendado para pruebas) |
| 53 | +npx @coderic/relay |
39 | 54 |
|
40 | | -## 🎯 Casos de Uso |
| 55 | +# Opción 2: Con Docker Compose |
| 56 | +docker compose up -d |
| 57 | +``` |
| 58 | + |
| 59 | +### Desarrollo |
41 | 60 |
|
42 | | -- 🏦 Bancos y entidades financieras |
43 | | -- 🏥 Clínicas y hospitales |
44 | | -- 🏛️ Oficinas públicas |
45 | | -- 🛒 Atención al cliente |
46 | | -- 📞 Call centers |
| 61 | +```bash |
| 62 | +# Iniciar servidor de desarrollo |
| 63 | +npm run dev |
| 64 | +``` |
47 | 65 |
|
48 | | -## 💻 Uso del Hook |
| 66 | +Abre tu navegador en `http://localhost:5173` (o el puerto que Vite asigne). |
49 | 67 |
|
50 | | -```jsx |
51 | | -import { useRelay } from './hooks/useRelay'; |
| 68 | +### Producción |
52 | 69 |
|
53 | | -function MiComponente() { |
54 | | - const { connected, enviarATodos, onMensaje } = useRelay('mi-usuario-id'); |
| 70 | +```bash |
| 71 | +# Construir para producción |
| 72 | +npm run build |
55 | 73 |
|
56 | | - useEffect(() => { |
57 | | - const unsubscribe = onMensaje((data) => { |
58 | | - if (data.tipo === 'turno_llamando') { |
59 | | - // ¡Tu turno está siendo llamado! |
60 | | - } |
61 | | - }); |
62 | | - return unsubscribe; |
63 | | - }, [onMensaje]); |
64 | | -} |
| 74 | +# Los archivos estarán en la carpeta dist/ |
65 | 75 | ``` |
66 | 76 |
|
67 | | -## 📁 Estructura |
| 77 | +## 🎯 Uso |
68 | 78 |
|
69 | | -``` |
70 | | -src/ |
71 | | -├── hooks/ |
72 | | -│ └── useRelay.js # Hook React para Relay |
73 | | -├── App.jsx # Componente principal |
74 | | -├── App.css # Estilos |
75 | | -└── main.jsx # Entry point |
76 | | -``` |
| 79 | +1. **Abrir múltiples pestañas** para simular diferentes roles: |
| 80 | + - **Cliente**: Solicita turnos y espera ser atendido |
| 81 | + - **Operador**: Atiende turnos y los marca como completados |
| 82 | + - **Pantalla pública**: Muestra los turnos en curso |
| 83 | +2. **Solicitar un turno** como cliente |
| 84 | +3. **Atender turnos** como operador - Los turnos se asignan automáticamente |
| 85 | +4. **Observar** cómo los turnos se actualizan en tiempo real en todas las pantallas |
77 | 86 |
|
78 | 87 | ## 🔗 Enlaces |
79 | 88 |
|
80 | | -- [Relay Gateway](https://github.com/Coderic/Relay) |
81 | | -- [Documentación](https://coderic.github.io/Relay/) |
82 | | -- [Otros ejemplos](https://github.com/Coderic?q=relay-ejemplo) |
| 89 | +- 📦 [Repositorio](https://github.com/Coderic/cola-turnos) |
| 90 | +- 🐛 [Issues](https://github.com/Coderic/cola-turnos/issues) |
| 91 | +- 🌐 [Demo en línea](https://coderic.org/cola-turnos/) |
| 92 | +- 📚 [Documentación de Relay](https://relay.coderic.net) |
| 93 | +- ⚡ [Relay Gateway](https://github.com/Coderic/Relay) |
| 94 | + |
| 95 | +## 🛠️ Tecnologías |
| 96 | + |
| 97 | +- **React** - Biblioteca JavaScript para construir interfaces de usuario |
| 98 | +- **Vite** - Build tool y dev server |
| 99 | +- **Relay Gateway** - Gateway de comunicación en tiempo real |
| 100 | +- **Socket.io** - Comunicación WebSocket |
83 | 101 |
|
84 | | -## 📄 Licencia |
| 102 | +## 📝 Licencia |
85 | 103 |
|
86 | | -MIT © [Coderic](https://github.com/Coderic) |
| 104 | +MIT |
0 commit comments