Ir al artículo
Aniq-UI

NorthstackEjecutar un frontend con sus datos de ejemplo integrados

Ejecutar un frontend con sus datos de ejemplo integrados

Cómo funcionan el sitio web y el panel sin ninguna API, qué funciona allí, qué dice el aviso de datos de ejemplo, qué pasa cuando una API conectada deja de responder, y cómo pasar a tu API o quitar los datos de ejemplo.

Para el paquete Full Stack

Qué es

El sitio web y el panel llevan cada uno las respuestas de una API de Northstack con datos de ejemplo, exportadas de ella, así que cada uno funciona por sí solo sin back-end: todas las pantallas del panel, y el formulario de contacto y el pago de licencias del sitio web, funcionan como con la API. Es con lo que funciona un paquete de un solo frontend nada más instalarlo, y un aviso "Sample data" al final de cada página lo indica, para que nadie lo confunda con un back-end conectado.

Cómo activarla y desactivarla

No hay ningún indicador. Lo decide un solo ajuste, NEXT_PUBLIC_API_BASE_URL, compilado al construir la aplicación:

.env
# empty or missing: the built-in sample data, no API needed
NEXT_PUBLIC_API_BASE_URL=

# set: your API, with the /api suffix
NEXT_PUBLIC_API_BASE_URL=http://localhost:8000/api
  • Sin Docker, yarn install y yarn dev en la carpeta de la aplicación sin archivo .env funcionan con los datos de ejemplo. Un .env copiado de .env.example apunta en cambio a la API en http://localhost:8000/api.
  • Con Docker, construye la imagen con --build-arg NEXT_PUBLIC_API_BASE_URL= para los datos de ejemplo. Sin ese argumento la imagen se construye para la API en http://localhost:8000/api.
  • El docker compose up --build del Full Stack siempre construye ambos frontends con la dirección de la API.
  • Tras cambiar el valor, reinicia yarn dev, o ejecuta yarn build de nuevo, o construye la imagen de nuevo.

El panel con datos de ejemplo

ÁreaCon los datos de ejemplo
Inicio de sesiónEntra cualquier contraseña. owner@, admin@, member@, billing@, platform@ y support@northstack.example abren cada uno esa cuenta de ejemplo y su rol, una cuenta creada en la página de registro inicia sesión como ella misma, y cualquier otro correo abre el del propietario. Los campos vacíos o mal formados se rechazan como los rechaza la API.
DatosForma Studio y Monogram completos, con sus proyectos, tableros, archivos, equipo, invitaciones, matriz de roles, facturación y facturas, claves de API, actividad y las conversaciones pasadas del asistente, y las organizaciones, usuarios, personal, roles y ajustes de la plataforma. Cada fecha se adelanta, así que la actividad de esta semana sigue siendo de esta semana.
CambiosReal: crear un proyecto, mover una tarjeta, invitar a alguien, editar la matriz de roles, comprar un plan con el pago de prueba o suspender una organización cambia los datos, y sobrevive a una recarga, solo en ese navegador.
PermisosSe comprueba como lo comprueba la API, desde la matriz de roles de cada espacio de trabajo, así que cada rol ve exactamente lo que vería con la API.
FacturaciónComo en una API sin claves de Stripe: un cambio a un plan superior pasa por el pago de prueba integrado, un cambio a uno inferior se programa para la renovación y Keep lo deshace. Las facturas se descargan en PDF.
CorreoNo se envía ninguno. Un enlace de invitación o de restablecimiento de contraseña se escribe en cambio en la consola del navegador, y funciona allí.
Actualizaciones en vivoNinguna: la campana muestra la actividad que ya está en los datos de ejemplo.
Claves de APICreadas y revocadas, con el secreto mostrado una vez, pero una clave no autentica nada, ya que no hay API.
Asistente de IASe muestran sus conversaciones pasadas y la tarjeta de tareas de ejemplo. Una pregunta nueva pide primero una clave de proveedor y luego responde que el asistente necesita la API; no se llama a ningún modelo.

Cada respuesta se retrasa una fracción de segundo a propósito, para que se vean los estados de carga con los que se entrega el panel.

El sitio web con datos de ejemplo

La página de inicio y todas las páginas de contenido nunca llaman a la API, así que se ven igual en ambos casos. Las dos partes que sí la llaman responden en el navegador, y en el servidor para el primer pintado, desde los datos de ejemplo:

ÁreaCon los datos de ejemplo
Pago de licenciasSe comprueba como lo comprueba la API. Tanto la tarjeta como PayPal van al propio Test checkout del sitio en /checkout/test: Pay marca el pedido como pagado y el recibo muestra una clave de licencia; Cancel payment lo cancela. El importe es el precio de la licencia, sea lo que sea que envíe el navegador.
Formulario de contactoSe comprueba campo por campo como lo comprueba la API, y se responde con un éxito. No se envía nada a ninguna parte.
Lo que envían los visitantesLos pedidos y los mensajes se guardan solo en ese navegador, así que un recibo sigue mostrando su clave tras una recarga.
Correo y límitesNo se envía por correo ningún recibo ni mensaje, y los límites por dirección de la API en los dos formularios no se aplican.

El aviso de datos de ejemplo

Mientras responden los datos de ejemplo, un aviso "Sample data" queda al final de cada página, al final de la página y no encima de ella, así que desplazado hasta el final no tapa nada. Dismiss lo oculta hasta la siguiente carga completa de la página.

AplicaciónSin API definidaCon una API definida que no responde
Panel (todas las páginas, incluida la de inicio de sesión)"No API is connected, so this dashboard runs on built-in sample data and your changes stay in this browser. Any password signs in: owner@, admin@, member@, billing@, platform@ or support@northstack.example opens that role.""The API at http://localhost:8000/api is not answering, so this dashboard is showing built-in sample data, not your workspace's. Changes made now stay in this browser. Start the API, then reload this page."
Sitio web"No API is connected (NEXT_PUBLIC_API_BASE_URL is empty), so the site runs on built-in sample data: the contact form and the license checkout answer in this browser and send nothing. Set NEXT_PUBLIC_API_BASE_URL in .env to use your API.""The API at http://localhost:8000/api is not answering, so this site is showing built-in sample data. Orders and messages sent now stay in this browser. Start the API, then reload this page."

La dirección de la segunda columna es con la que se construyó la aplicación. Mientras el panel funciona con los datos de ejemplo, el pie de su espacio de trabajo también dice "Sample data for demonstration."; con su propia API nunca lo dice.

Cuando una API conectada deja de responder

Con NEXT_PUBLIC_API_BASE_URL definido, los datos de ejemplo también la sustituyen cuando no se puede llegar a la API en absoluto: no está en marcha, un tiempo de espera agotado, o bloqueada porque su CORS_ORIGIN no incluye la aplicación. Una respuesta que dio la API, incluso un 404 o un 500, se muestra siempre tal cual.

  • Tras un fallo se vuelve a preguntar a la API como máximo cada 30 segundos, y la aplicación vuelve a ella en cuanto responde.
  • El panel muestra su aviso siempre que la sustituye.
  • El sitio web la sustituye solo en el navegador: una página que renderiza su servidor nunca muestra datos de ejemplo. Su aviso se muestra en yarn dev, y en una versión de producción solo si se construyó con NEXT_PUBLIC_SAMPLE_DATA_NOTICE=always (en .env antes de yarn build, o --build-arg NEXT_PUBLIC_SAMPLE_DATA_NOTICE=always con Docker).
  • Esto cubre una API que se detuvo, no una aplicación sin API: el navegador sigue probando la dirección y registra cada petición rechazada en su consola. Sin ninguna API, deja la dirección vacía.

Pasar a tu API

Define NEXT_PUBLIC_API_BASE_URL con la dirección de la API con el sufijo /api, y reinicia yarn dev o construye de nuevo. La API debe incluir la dirección de la aplicación en su CORS_ORIGIN. Lo que se cambió con los datos de ejemplo se queda en ese navegador y no se envía a la API.

Terminal
cp .env.example .env
yarn dev

Empezar de nuevo

Borra los datos del sitio para la dirección de la aplicación en los ajustes del navegador, o ejecuta uno de estos en la consola del navegador, y los ejemplos vuelven como se entregaron:

Consola del navegador, panel
localStorage.removeItem("northstack_mock_db_v1"); location.reload();
Consola del navegador, sitio web
localStorage.removeItem("northstack_site_mock_db_v1"); location.reload();

Quitarlo

Cuando una aplicación funcione definitivamente con tu propia API, elimina los datos de ejemplo de su código, en la carpeta de la aplicación:

Terminal
yarn remove:mock
  • Elimina src/lib/mock/ y el aviso (src/components/SampleDataNotice/) con sus mensajes, quita cada bloque marcado mock-api en el código, en .env.example, en el Dockerfile y en las guías de la propia aplicación, y en el Full Stack los pasajes marcados del QUICKSTART.md y el README.md de la raíz, y deja remove:mock como una nota de una línea que indica que los datos de ejemplo ya se eliminaron. En el sitio web también elimina las líneas de documentación etiquetadas {mock}. Cada archivo queda como estaría si los datos de ejemplo nunca se hubieran añadido.
  • yarn remove:mock --dry-run lista los cambios sin hacerlos, y una segunda ejecución informa de que no queda nada por hacer. Funciona antes o después de yarn remove:demo.
  • La aplicación necesita entonces NEXT_PUBLIC_API_BASE_URL definido. Ejecuta después yarn typecheck y yarn build.
  • Elimina código y no se puede deshacer sin control de versiones, así que haz un commit antes.

Exportarlos de nuevo desde la API

Los datos de ejemplo son las propias respuestas de la API con datos de ejemplo, así que tras cambiarlos, expórtalos de nuevo. En back-end, con la API cargada y en marcha:

Terminalen back-end
yarn export:mock

Inicia sesión como cada cuenta de ejemplo, lee lo que muestran las dos aplicaciones y escribe los archivos de datos del panel y del sitio web junto a él, en ../dashboard/src/lib/mock/db/seed/ y ../website/src/lib/mock/db/seed/. No se escribe nada en la base de datos. --api http://host:8000 lee otra API. Un navegador que tenga una copia anterior la descarta en su siguiente carga.

Cómo está construida

Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.

Dónde viven los datos de ejemplo en cada aplicación, cómo llega una petición hasta ellos y cómo mantenerlos al día con tu API.

¿Te atascaste en un paso?

Busca una solución antes de empezar de nuevo.

Solución de problemas

Preferencias de Cookies

Utilizamos cookies para mejorar tu experiencia de navegación, analizar el tráfico del sitio y personalizar el contenido. Al hacer clic en "Aceptar Todo", consientes nuestro uso de cookies para análisis y publicidad personalizada.