Los grupos son donde ocurre la conversación entre más de dos personas, porque el chat directo es solo entre dos. Toma dos formas. Casi toda es publicaciones: una publicación de grupo es una fila normal de la tabla de publicaciones con un id de comunidad, así que comentarios, menciones, notificaciones y búsqueda funcionan tal cual en vez de reconstruirse en paralelo. Al lado de eso, un grupo puede tener salas: canales de texto al estilo Discord listados dentro del grupo, con sus propios permisos y su propio estado de leído. Las salas son delgadas a propósito, y el recuadro de abajo dice exactamente cuánto.
Una publicación de grupo es una del feed con dirección
Es lo más importante que hay que entender de los grupos de Korat. Al publicar en un grupo creas exactamente el mismo objeto que crearías en tu feed: mismas reacciones, mismos hilos de comentarios, mismas menciones que resuelven a usuarios reales, misma edición y borrado, misma maquinaria de notificaciones. No hay un sistema de comentarios de segunda categoría al que le falte algo.
Lo único que cambia el id de grupo es dónde aparece la publicación. Las publicaciones de grupo se filtran fuera del feed principal en un punto exacto del código, de modo que se quedan dentro del grupo en vez de colarse en las líneas de tiempo de todos los amigos de un miembro. Un filtro en un solo sitio es también la razón de que el comportamiento sea consistente: no hay una segunda regla en otro archivo que pueda dejar de coincidir con la primera.
La ventaja práctica es que un grupo de Korat es desde el primer día tan capaz como el feed, y las mejoras llegan a los dos a la vez. El coste es honesto y está dicho aquí abajo: las salas del grupo no son el mensajero.
Las salas de un grupo no son el mensajero. El chat directo es entre dos personas y no se puede convertir en grupo. Las salas de un grupo llevan texto plano que puedes enviar y borrar: sin edición, sin responder a un mensaje concreto, sin reacciones, sin fotos, archivos ni notas de voz, y sin llamadas.
Si lo que quieres es un ida y vuelta a cinco con notas de voz, reacciones y una llamada encima, Korat no hace eso hoy. Lo que sí hace es un tablón duradero, buscable y comentable, con roles reales y un proceso de ingreso real, más unos canales de texto sencillos al lado.
Público y cerrado, y qué significa cerrado
Al crear un grupo defines nombre, descripción, categoría, privacidad pública o cerrada y un texto de reglas. El campo de reglas no es decoración: un grupo sin reglas escritas acaba teniendo reglas igualmente, inventadas sobre la marcha por quien modere ese día, y los miembros se enteran de ellas al incumplirlas.
Un grupo cerrado usa solicitudes de ingreso. Alguien pide entrar, y un propietario o admin acepta o rechaza; quien lo pidió puede cancelar la solicitud en vez de quedarse esperando una decisión que no llega. Se avisa a las dos partes: a quienes gestionan cuando entra una solicitud, y a quien la hizo cuando se aprueba. Una solicitud que se pierde en el silencio es el fallo más común de cualquier sistema de grupos.
El estado del grupo se ve antes de tocarlo, no después. Un grupo cerrado lleva un candado en su tarjeta, así que la diferencia entre «unirse» y «pedir unirse» está a la vista mientras decides: un botón nunca debe prometer algo que la pantalla siguiente rechaza.
Cuatro listas, no una lista con distintivos
La pantalla de grupos se divide en secciones con título y recuento, en vez de una sola lista donde la relación se transmite con un distintivo pequeño: grupos que gestiono, grupos a los que pertenezco, solicitudes pendientes y descubrir, más búsqueda sobre todo ello.
Empezó siendo una sola lista de «mis grupos» y se rehízo, porque las cuatro filas significan cuatro cosas distintas. Un grupo que gestionas tiene ajustes y una cola de solicitudes esperándote. Uno al que solo has pedido entrar no tiene nada todavía. Ordenarlos en secciones con recuento responde de un vistazo a «¿tengo algo pendiente?», cosa que un distintivo treinta filas más abajo no hace.
Roles, y entregar un grupo
Hay tres roles — propietario, admin y miembro — mostrados como distintivos junto al nombre. Un propietario o admin puede cambiar el rol de un miembro, expulsarlo, editar los ajustes o borrar el grupo. También existe el traspaso de propiedad, que importa más de lo que parece: un grupo cuyo propietario dejó de usar la app y no puede pasar las llaves es un grupo que muere despacio con la pantalla de ajustes cerrada.
La regla de Korat es que una acción que el backend va a rechazar no se ofrece. El propietario no ve la opción «salir del grupo», porque salir dejaría el grupo huérfano; su camino es traspasar la propiedad primero. Las acciones destructivas van detrás de una confirmación que dice también lo que *no* pasa, porque la gente duda sobre todo cuando supone lo peor.
Notificaciones que corresponden a decisiones
Los grupos envían cuatro tipos de aviso, y cada uno corresponde a un momento en el que alguien necesita enterarse: una nueva publicación en un grupo al que perteneces, una solicitud de ingreso para quienes gestionan, la aprobación de tu solicitud y el cambio de tu rol.
El primero faltaba al principio, y el resultado era un grupo que parecía abandonado porque los miembros nunca se enteraban de que se había publicado algo. El mismo fallo apareció después en los pedidos de tienda. Una función que produce contenido del que nadie se entera no es una función discreta: está rota.
Compartir un grupo hacia fuera
Un grupo se comparte con el mismo sistema de enlaces opacos que usa el resto de Korat: una URL koratland.com/s/<token> con un token aleatorio de 14 caracteres que se resuelve dentro de la app. El resolutor devuelve solo a qué tipo de objeto apunta el token y a cuál, nunca quién creó el enlace ni cuántas veces se ha abierto. Así, un enlace de captación publicado en abierto no lleva ninguna información sobre quien lo publicó — es una función SECURITY DEFINER, descrita en la página de seguridad.
Dos vecinos útiles. Un grupo de entrenamiento atado a un solo deporte tiene su propio módulo, con clasificación y feed de actividad: los clubes deportivos. Y un negocio que quiere hablarle a su clientela no publica en un grupo, sino desde su página, que se lleva en la consola de negocio.