El panel del organizador
Lo que hace la gestión interna del organizador: las páginas de la barra lateral y quién las ve, el resumen, los informes y las exportaciones CSV, los ajustes del espacio de trabajo, las notificaciones y el inicio de sesión.
Para el paquete Full Stack
Páginas
Cada página existe en inglés en /en y en árabe en /ar. El panel se abre en /en/dashboard, tras el inicio de sesión en /en/auth/login. Cada elemento de la barra lateral aparece solo cuando el rol del miembro con sesión iniciada tiene su permiso.
| Elemento de la barra lateral | Ruta | Permiso | Qué hace |
|---|---|---|---|
| Resumen | /en/dashboard | overview.view | Las ventas del periodo elegido, la puerta en vivo y los próximos eventos. |
| Eventos | /en/dashboard/events | events.view | Pestañas All, Published, Draft y Ended, búsqueda y filtros, el editor de eventos y los asistentes de cada evento. |
| Pedidos | /en/dashboard/orders | orders.view | Pedidos con totales por estado y filtros, el detalle de cada pedido, reembolsos y exportación a CSV. |
| Control de acceso | /en/dashboard/check-in | checkin.scan | La puerta: cámara o código escrito, escaneos recientes y alertas. |
| Recintos | /en/dashboard/venues | venues.view | Recintos en un mapa, el editor de recintos y el editor de planos de asientos. |
| Informes | /en/dashboard/reports | reports.view | Ventas pagadas por periodo, evento, proveedor de pago y categoría, con exportación a CSV. |
| Equipo | /en/dashboard/team | admins.view | Miembros del espacio de trabajo, invitaciones, roles y sesiones de control de acceso. |
| Asistente de IA | /en/dashboard/ai-assistant | ai_chat.use | Responde sobre ventas y puertas, dibuja gráficos y redacta recordatorios para su aprobación. |
| Estudio de recintos | /en/dashboard/studio | studio.use | Convierte la foto de un recinto vacío en un concepto de evento con IA. |
| Ajustes | /en/dashboard/settings | settings.view | General, Payments, Team y Notifications para el espacio de trabajo; Profile y Security para cada miembro. |
Roles se abre desde la página Team, e Inquiries (/en/dashboard/leads, leads.view) y Notifications se abren desde el menú de la cuenta, que también contiene el propio Profile del miembro y "Ver sitio web" (NEXT_PUBLIC_SITE_URL). Una paleta de búsqueda en la barra superior encuentra páginas. Una página abierta por su dirección sin el permiso muestra que no forma parte del rol del miembro, el mismo rechazo que da la API. Cada miembro llega a la primera página que su rol abre: el resumen para la mayoría, la puerta para el rol de Control de acceso.
El resumen
- El subtotal de entradas, las entradas pagadas, los controles de acceso y las comisiones de los últimos 7 días, los últimos 30 días, este mes o todo el tiempo, con un gráfico de ventas de entradas que tiene un punto por cada día del periodo.
- La puerta en vivo: la sesión con las puertas abiertas, cuántos han entrado, cuántos se esperan y cuántos faltan, con un enlace a su control de acceso.
- Los cinco próximos eventos publicados con lo vendido frente al aforo y los controles de acceso, y cuántos controles de acceso necesitan atención (alertas de la puerta aún sin ver, más los pedidos en revisión).
- Los días son los del espacio de trabajo, en su zona horaria. Solo cuentan los pedidos pagados, el día en que se pagaron; los pedidos gratuitos cuentan como pedidos y no suman a ningún importe.
Informes y exportaciones
Reports muestra el subtotal de entradas, las comisiones, lo cobrado y lo reembolsado de un periodo (los mismos cuatro, o dos fechas a tu elección) y de un evento o de todos, y luego las ventas por evento con la parte de cada uno, por proveedor de pago (Stripe, PayPal, pago de prueba y gratuito) y por categoría.
- Export CSV en Reports y en Orders pone en cola un archivo en segundo plano y ofrece Download the file cuando está listo. Contiene los pedidos que muestran los filtros actuales, con referencia, fecha, estado, evento, cliente, correo, entradas, subtotal, comisión, total, reembolsado, moneda y proveedor.
- El enlace de descarga es el permiso, funciona durante una hora y solo para el miembro que lo pidió. Los archivos contienen nombres y correos de compradores y se guardan en
EXPORT_DIR(./exportssin Docker, el volumen de datos con Docker). - Exportar necesita
reports.export. Los roles de ejemplo Propietario, Gerente y Finanzas lo tienen.
Ajustes
Settings tiene seis pestañas. Las cuatro del espacio de trabajo necesitan settings.view para verse y settings.edit para guardar; Profile y Security pertenecen al miembro con sesión iniciada, sea cual sea su rol.
| Pestaña | Qué define |
|---|---|
| General | El nombre del espacio de trabajo, el correo de soporte, la moneda (USD, EUR, GBP, SAR o AED), la zona horaria y la comisión de reserva en porcentaje (de 0 a 20, hasta dos decimales; 3 en los datos de ejemplo), que el asistente paga al pagar. La moneda se bloquea cuando se paga la primera entrada. El tiempo de reserva de asientos y el límite por pedido no están aquí: son columnas del espacio de trabajo cargadas desde el settings.json de la API. |
| Pagos | Muestra si Stripe, PayPal y el pago de prueba están conectados, en modo de prueba o sin configurar, con las variables que definir en el .env de la API y la dirección de webhook de cada proveedor. Las claves nunca se escriben ni se muestran aquí. |
| Equipo | Lo que cada rol puede hacer con eventos, reembolsos, escaneo e informes, con enlaces al equipo y a los roles. |
| Notificaciones | Tres interruptores para la campana de notificaciones del equipo: pedidos pagados, solicitudes de reembolso y alertas de control de acceso. Cambian solo lo que se avisa al equipo: los correos de entradas, recibos y reembolsos a los compradores siempre se envían. |
| Perfil | La foto, el nombre, el correo y el teléfono del miembro. |
| Seguridad | La contraseña del miembro. |
Quien guardó los ajustes después de que la página cargara gana: la página muestra entonces su versión y pide revisar y guardar de nuevo. El logotipo de la marca no se sube aquí: viene de los archivos de marca del proyecto.
Notificaciones
| Notificación | Quién la recibe |
|---|---|
| Se paga un pedido | Todos los miembros que pueden ver pedidos, mientras el interruptor de pedidos pagados esté activado |
| Se solicita un reembolso | Todos los demás miembros que pueden reembolsar, mientras el interruptor de solicitudes de reembolso esté activado |
| Se rechaza una entrada en la puerta (mostrada dos veces, en el evento equivocado, o anulada) | Todos los miembros que pueden publicar eventos, mientras el interruptor de alertas de control de acceso esté activado |
| Llega un mensaje por el formulario de contacto del sitio web | Todos los miembros que pueden leer consultas |
| Un concepto del estudio de recintos termina o falla | El miembro que lo inició |
- Llegan en vivo, y la campana lista las 30 más recientes. Cada una se conserva 30 días.
- La conexión en vivo usa
NEXT_PUBLIC_WEBSOCKET_BASE_URL, la dirección de la API sin/api, y elFRONTEND_URLde la API debe ser la dirección del panel. Una recarga siempre muestra las filas más recientes; solo las actualizaciones en vivo dependen de la conexión.
Inicio de sesión
- Los miembros del equipo inician sesión aquí; los asistentes inician sesión en el sitio web, nunca aquí. Las cuentas de personal de ejemplo están en la guía de instalación.
- Remember me mantiene la sesión tras cerrar el navegador, hasta que caduca el token de la API (siete días por defecto,
JWT_EXPIRATION); desmárcalo y la sesión termina con el navegador o la pestaña. - Un correo incorrecto y una contraseña incorrecta se leen igual, así que el formulario nunca dice a nadie qué direcciones tienen una cuenta. Tras diez intentos fallidos en quince minutos desde una misma dirección, la API rechaza durante un tiempo.
- Cuando la API rechaza una sesión (un token caducado o revocado), el panel cierra la sesión y abre la página de inicio de sesión. Un cambio en los roles de un miembro le llega mientras tiene la sesión iniciada.
Cómo encaja el código del panel
Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.
La estructura del código, y las recetas para añadir una página, una traducción y un servicio de API.