
# Construir una app

Los desarrolladores pueden construir apps personalizadas para SweetHive — una pequeña
vista de datos embebida en un contexto, o un producto completo en su propia URL.
Registras la app una vez, recibes credenciales de cliente y construyes con el
**App SDK**.

## Dos tipos de app

| | **Embebida** | **Externa** |
|---|---|---|
| Dónde se ejecuta | dentro de la interfaz del contexto de SweetHive (un iframe aislado) | su propia URL / dominio, lanzada desde SweetHive |
| Ideal para | vistas de datos, formularios, paneles acotados a un contexto | productos completos con su propia interfaz |

Ambas se autentican de la misma manera: un **token acotado de corta duración**, limitado
en el servidor por el alcance de la instalación **y** la visibilidad en vivo de quien la
usa. Tu app nunca ve más de lo que puede ver la persona que la está usando, y el acceso
se revoca en el instante en que lo pierde.

## Registrar y construir

1. Abre **Desarrollador → Apps** desde el menú de usuario.
2. Elige **Registrar app**: ponle nombre, elige *Embebida* o *Externa*, configura la
   URL, el icono y la capacidad.
3. Guarda el **client ID y el secreto** (se muestran una sola vez).
4. **Descarga la guía de desarrollo del SDK (.md)** — el contrato completo: el
   handshake del iframe, la autenticación, la API de datos acotada, las pruebas y la
   publicación. Ponla en tu repositorio y construye con tu asistente de programación
   con IA.
   También disponible aquí: [SWEETHIVE_APP_SDK.md](/downloads/SWEETHIVE_APP_SDK.md).
5. Pon la app en **Activa** para que los administradores de hive puedan instalarla desde
   *Contexto → Apps → Añadir app*.

## Cómo funciona el estándar

- Las **apps embebidas** se ejecutan en un iframe aislado y reciben un token acotado de
  corta duración mediante un handshake de `postMessage` — nunca una cookie, así que
  también funciona en las apps móviles. Tu app debe permitir que SweetHive la enmarque
  (una CSP `frame-ancestors` que incluya los orígenes de las apps móviles — la guía del
  SDK da la cabecera exacta).
- Las **apps externas** se abren en su propia URL con un lanzamiento firmado; en móvil
  se abren en el navegador nativo integrado en la app.
- Cada llamada de datos está limitada en el servidor por el alcance de la instalación
  cruzado con la visibilidad en vivo de quien la usa — la misma ley, la misma auditoría
  que cualquier actor de SweetHive.

## Apps externas y hubs

Una app externa es un producto completo en su propia URL. SweetHive muestra una
tarjeta de inicio; al hacer clic la app se abre con un **inicio firmado** y crea
su propia sesión — en móvil, en el navegador nativo integrado.

Las apps externas en un origen autorizado también pueden iniciar la sesión de
los usuarios directamente con su cuenta de SweetHive (**SSO**): con una sesión
de SweetHive activa no se pide contraseña; de lo contrario el usuario inicia
sesión en la página de acceso de SweetHive y vuelve directamente a la app.
Solicita la autorización del origen al registrar la app.

### Hubs multi-hive: una shell, muchas apps

Un producto que gestiona varios hives desde una sola interfaz sigue el
**estándar hub shell** — una shell reutilizable modelada por un manifest:

- La **shell** proporciona, una sola vez para cada app: el acceso SSO, el
  selector de hive arriba a la derecha, la gestión de Equipo e Invitaciones, el
  tema claro/oscuro y la barra lateral plegable.
- El **manifest** (guardado con el registro de la app) declara la marca y las
  entradas del panel izquierdo. Cada entrada abre una vista integrada en la
  shell o — la parte clave — **cualquier app embebida de SweetHive renderizada
  en un frame, sin cambios**: una sola build sirve la interfaz del contexto y
  el hub.
- Cambiar de hive redefine el alcance de todo: la shell resuelve la
  instalación de la app en el hive seleccionado y recarga la vista activa, de
  modo que cada pantalla sigue al hive — incluidos los estados vacíos para
  hives donde la app no está instalada.

La guía del SDK contiene el contrato completo: el esquema del manifest, el
handshake de las vistas y los errores a evitar.

## Probar y publicar

Registra tu app con una URL de localhost, instálala en un contexto de prueba, y el
handshake entrega un token acotado real contra tus datos. Cuando esté lista, ponla en
**Activa** — y desactívala en cualquier momento; las instalaciones se detienen de
inmediato.
