Odontología Publicada
tuservidor.com/p/ odontologia Previsualizar como: admin
Odontología Servicios y atención odontológica.
Servicios odontológicos Consulta los servicios disponibles.
Servicios
Valoración y diagnóstico Evaluación inicial y diagnóstico.
Limpieza y prevención Profilaxis, flúor y control de placa.
Estética dental Blanqueamiento y carillas.
Ortodoncia Brackets y alineadores.
fig. 1 — El constructor: la lista de páginas, el enlace publicado, el rol con el que se previsualiza y la página dibujándose.
Lo que se construye

Pantallas para tareas concretas

Una pantalla puede consultar una tabla, calcular valores y decidir qué mostrar. Por ejemplo, puedes crear un planificador de vacaciones, un tablero con indicadores y gráficas o una agenda con las franjas disponibles.

Portada /p/odontologia
Servicios odontológicos
Servicios
Valoración Prevención Estética Ortodoncia
Planificador de vacaciones

Con 20 días hábiles logras hasta 37 días corridos libres.

Opción 01 37 sáb 17 jun → dom 23 jul
Opción 02 33 mié 4 mar → dom 5 abr
Opción 03 33 jue 14 may → lun 15 jun
Excesos de velocidad
Personas con eventos 20
Velocidad máxima 97 km/h
Exceso medio 10 km/h
Eventos registrados 375
Eventos por persona
Natalia F. 56Leidy K. 48Luis A. 44Enggy V. 31
Chequeo preoperacional
Registrados 13
Efectivos 10 77 %
Fuera de horario 2 15 %
No efectivos 1 8 %
Chequeos por día Chequeos por turno
Calendario y agendas
Semana del 21 de septiembre
21 522 323 524 225 626 027
Día con franjas Agenda completa No hábil
Lunes 21 de septiembre 6 franjas · 5 libres · 1 confirmada
7:00 Envigado —8:30 Sabaneta Juan David Suárez10:00 Sabaneta —13:00 Itagüí —
fig. 2 — Cinco páginas de dos aplicaciones distintas, con las cifras que traen.
El documento

Adapta cada pantalla a tu proceso

Puedes definir la página en un único archivo HTML. Se sirve aislada, sin acceso a la sesión, las cookies ni el almacenamiento del navegador. La plataforma le entrega los datos mediante window.plane y añade la hoja de estilos, con clases como class=«btn» para un botón y class=«card» para una tarjeta.

  • Un solo archivo, con su <style> y su <script> dentro.
  • Sin librerías externas y sin CDN: lo que hace falta ya está en el documento.
  • Sin localStorage, sin navegación propia y sin pantallas de acceso: eso lo pone la plataforma alrededor.
  • Las medidas y los colores salen de las variables de la casa, no de números sueltos.
La guía completa
chequeo-preoperacional.html
<!doctype html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <title>Chequeo preoperacional</title>
    <style>
      .pantalla { padding: var(--space-8); }
      .tarjeta-total { background: var(--surface-card); }
    </style>
  </head>
  <body>
    <main class="pantalla">
      <h1>Chequeo preoperacional</h1>

      <article class="card kpi">
        <span class="kpi-label">Efectivos</span>
        <span class="kpi-val number">10</span>
      </article>

      <div class="caja-grafica" style="height: 18rem">
        <canvas id="por-turno"></canvas>
      </div>
    </main>
    <script>/* … */</script>
  </body>
</html>
fig. 3 — La estructura de una página: las clases del catálogo y las variables de la plataforma.
Los datos

Conecta cada pantalla con los datos que necesita

Cada página guarda la lista de tablas y columnas que puede consultar. Lo que no esté declarado se rechaza en el servidor sin llegar a consultarse. Sobre esa lista, window.plane permite listar, obtener, crear, actualizar y borrar registros.

  • plane.listar con filtro, búsqueda, orden, límite y página.
  • plane.usuario trae el nombre, el correo y los roles de quien consulta.
  • Leer no exige cuenta si la aplicación es pública; crear, actualizar y borrar sí, siempre.
  • Los permisos son los de quien consulta: si una llamada falla, la página recibe el mensaje del servidor.
window.plane
window.addEventListener("plane:listo", async function () {
  try {
    var r = await plane.listar("excesos", {
      filtro: { conductor: plane.usuario.cedula },
      orden: "-fecha",
      limite: 50
    });

    // r = { filas: [...], total: 375, pagina: 1, paginas: 8 }
    pintar(r.filas);
  } catch (error) {
    avisar(error.message);
  }
});
fig. 4 — Se espera a plane:listo antes de pedir nada, y cada llamada va dentro de un try/catch.
Caso de uso · Formularios

Recoge información con formularios

Puedes definir el formulario como una pantalla HTML con los campos del catálogo. Al enviarlo, plane.crear guarda el registro en la tabla; ese registro puede aparecer después en el tablero y en las gráficas. Una descripción puede servir para generar la primera versión de la pantalla.

  • plane.crear, plane.actualizar y plane.borrar sobre las tablas que la página declara.
  • Los campos utilizan el catálogo de la plataforma: rótulo, control, pista y estado de error, en claro y en oscuro.
  • Guardar exige cuenta iniciada, aunque la aplicación sea pública. El aviso de iniciar sesión lo pone la plataforma; la página no lo escribe.
  • Una columna que apunta a otra tabla se guarda con el valor a la vista, no con el identificador: la plataforma hace el enlace.
  • Si el servidor rechaza el guardado, el error llega con su mensaje y el formulario se queda lleno.
  • Nada se guarda en el navegador: lo que tiene que durar va a una tabla.
tuservidor.com/p/ transporte
Chequeo preoperacional Antes de salir · turno 1 · viernes 18 de septiembre
Registra el chequeo de hoy Queda a tu nombre, Natalia.
Placa WGY-472
Kilometraje 128.940 El último registrado fue 128.400.
Revisión visual
Luces y direccionales Frenos Llantas y repuesto Extintor vigente
Nivel de combustible Tres cuartos
Foto del tablero tablero.jpg
Observaciones Ruido leve en el freno delantero derecho.
Se guarda en la tabla chequeos Guardar chequeo
Tus últimos chequeos
  • ayer 5:58 128.400 km Efectivo
  • mié 6:04 127.910 km Fuera de horario
fig. 5 — El chequeo que llena quien conduce: campos de texto, número, casillas, archivo y texto largo, y debajo lo ya guardado.
plane.crear
document.getElementById("chequeo").addEventListener("submit", async function (e) {
  e.preventDefault();
  var f = e.target.elements;

  try {
    await plane.crear("chequeos", {
      placa: f.placa.value,
      kilometraje: Number(f.kilometraje.value),
      frenos: f.frenos.checked,
      // Lo que apunta a otra tabla se guarda con el valor a la vista.
      conductor: plane.usuario.cedula
    });

    e.target.reset();
    await cargarUltimos();
  } catch (error) {
    avisar(error.message);
  }
});
fig. 6 — El envío del formulario: los valores se convierten al tipo de su columna y la fila queda guardada, o el error se muestra tal cual llega.
Gráficas

Consulta tus indicadores de un vistazo

La función plane.grafica carga Chart.js y configura los colores de las series, la rejilla, la leyenda, el tooltip, el formato de los números y el aviso de «sin datos». Puedes cambiar esa configuración desde la página.

  • Ocho colores de serie en orden fijo, distinguibles en claro y en oscuro y con daltonismo.
  • plane.colores, plane.numero y plane.paleta para pintar a mano lo que haga falta.
  • Al filtrar se le cambian los datos a la gráfica; volver a crearla la haría parpadear.
plane.grafica
var g = plane.grafica("#por-turno", {
  type: "bar",
  data: {
    labels: ["T1", "T2", "T3"],
    datasets: [{ label: "Chequeos", data: [5, 6, 2] }]
  }
});

// Al filtrar no se vuelve a crear: se le cambian los datos.
g.data.datasets[0].data = valores;
g.update();
fig. 7 — La página configura Chart.js y la plataforma aplica la paleta de la aplicación.
El contrato

Lo que ya está puesto antes de escribir una línea

La página recibe un contrato con los estilos y las funciones disponibles. La guía del proyecto y las peticiones de IA parten de la misma fuente, para que ambas describan el mismo comportamiento.

  • El catálogo de estilos La misma hoja de estilos del panel: botones, tarjetas, tablas, campos, etiquetas, cifras, pestañas y alertas, en claro y en oscuro.
  • window.plane Permite listar, obtener, crear, actualizar y borrar registros en las tablas que la página declara. Las demás operaciones se rechazan.
  • Gráficas plane.grafica usa Chart.js y aplica los colores de la aplicación a las series, la leyenda y los mensajes de la gráfica.
  • La fuente de iconos Viene cargada: un icono es un elemento vacío con dos clases, sin dibujar SVG ni traer una librería.
  • Quién está mirando plane.usuario contiene el nombre, el correo y los roles de quien consulta la página, o nada si entró sin cuenta.
  • Previsualizar como El constructor permite elegir un rol para comprobar qué verá ese usuario antes de publicar.
Publicación

Publica la aplicación y define el acceso

Al publicar, la aplicación queda disponible mediante un enlace. Si es pública, cualquiera puede abrirla sin cuenta y solo leerla; si es privada, el servidor exige iniciar sesión antes de entregar los datos.

  • Cada página elige quién la abre: todos, ciertos roles, o solo quien construye.
  • Roles con el nombre que use el negocio: Conductor, Supervisor, Vendedor…
  • Gestión de usuarios: invitar, cambiar la clave y quitar a alguien.
  • Lo que una página esconde por rol no está protegido: lo que cierra la puerta a los datos es que la aplicación sea privada.
Publicación · Pedidos
Pública: se abre sin cuenta y solo permite leer Requiere iniciar sesión
Usuarios y roles
Marcela Ruiz marcela@acme.co Supervisor
Julián Cardona julian@acme.co VendedorConductor
Sara Ospina sara@acme.co Conductor

Los roles deciden qué páginas se abren y qué se dibuja dentro. Lo que cierra la puerta a los datos es que la aplicación sea privada.

fig. 8 — La aplicación «Pedidos», con sesión obligatoria y tres usuarios con sus roles.
Historial

Guarda y restaura versiones de la aplicación

Al publicar se conserva una versión de la aplicación. También puedes crear una versión manual antes de un cambio importante y restaurarla cuando sea necesario.

  • Se crea una versión automáticamente al publicar.
  • Puedes crear versiones manuales cuando quieras.
  • El historial muestra los cambios de cada versión y permite restaurarla.
Versiones
  • Ahora Página «Pedidos del mes» + tabla Pedidos Publicación
  • Hoy, 11:40 Antes de cambiar el tipo de la columna Estado Manual Restaurar
  • Ayer, 18:02 Roles por página: «Pedidos del mes» solo para Supervisor Publicación Restaurar
  • 12 sep Primera publicación de la aplicación Publicación Restaurar
fig. 9 — El historial de versiones y la opción de restaurar una publicación anterior.
Apariencia

Configura la apariencia de la aplicación

  • Nombre, icono y color principal de cada aplicación.
  • 46 paletas de color más una personalizada, en modo claro y oscuro.
  • Doce colores vivos para lo que significa un color: estados, categorías y leyendas.
  • Tamaño de letra por aplicación, para pantallas que se consultan a distancia.
  • Página de inicio y lado del menú lateral configurables.

Los rótulos y las etiquetas toman los colores de la paleta elegida y mantienen el contraste en modo claro y oscuro. Las páginas los reciben resueltos: no hay que aclararlos ni oscurecerlos a mano.

Empieza aquí

Construye la primera página describiéndola con una frase.

Con Planer en marcha, el comando de demostración crea un directorio de empleados con datos, tres páginas escritas en HTML y la aplicación ya publicada.