El contexto
Una asociación funciona con herramientas que no son suyas: un grupo de mensajería donde los mensajes se pierden, una página de red social que no todo el mundo sigue, un fichero de socios que solo una persona sabe mantener. La necesidad siempre es la misma —un único lugar que lleve el nombre de la asociación— y el presupuesto nunca alcanza para financiar un desarrollo propio.
App Community Suite es la respuesta que hemos construido: una única base de aplicación, adaptada a una app propia para cada asociación.
El reto
La trampa de este tipo de producto es conocida: a partir del segundo cliente, la base se duplica. Cada asociación pide un ajuste, se hace «solo para ella», y seis meses después existen cuatro aplicaciones distintas que hay que corregir cuatro veces. El producto muere antes de haberse vendido.
A eso se añaden tres restricciones.
La asociación debe ser el editor visible. Una asociación que pone una app en manos de sus socios no quiere ver el nombre de su proveedor en la pantalla de inicio. La aplicación lleva su nombre, su logotipo, sus colores y su propia ficha en las tiendas.
Un visitante tiene que poder mirar sin cuenta. Una app cuyo contenido está íntegramente detrás de una invitación no se puede promocionar: no se comparte, no se indexa y se rechaza en revisión por falta de contenido visible.
La asociación decide qué sale del círculo de socios. No como un ajuste global, sino elemento por elemento —este evento sí, esta galería no— a cargo de voluntarios que no han recibido ninguna formación.
Lo que hicimos
- Un back-end Django que soporta socios, eventos, galería, mensajería, votaciones, encuestas, tesorería, moderación y notificaciones, expuesto como una API REST común a todas las versiones.
- Una separación estricta entre el código de producto y la personalización de cliente. El producto vive en una sola rama; cada asociación tiene un fichero de configuración y una carpeta de imágenes. Una corrección escrita una vez llega a todas las versiones por rebase, nunca por copiar y pegar.
- Una única aplicación Flutter para iOS y Android, cuya identidad visual se lee de la configuración en lugar de escribirse en las pantallas.
- Páginas públicas renderizadas en servidor, para que la agenda, las noticias y la galería sean consultables —e indexables— sin cuenta, con un recorrido de alta que devuelve al visitante a una invitación validada por un responsable.
- Una herramienta de administración web con cuatro niveles de rol y una cola de moderación, porque un espacio donde los socios publican necesita un lugar donde alguien decide.
El resultado
La primera asociación está en producción: su aplicación está publicada con su propio nombre y sus socios la usan a diario. Hay dos versiones más preparadas sobre la misma base.
La lección de este producto cabe en una frase: lo difícil no es escribir la segunda aplicación, sino la disciplina que prohíbe escribirla. Todo lo que parece un ajuste específico se examina primero como una necesidad genérica mal formulada —y la mayoría de las veces lo es.