22 may 2025·8 min de lectura

Aplicar límites de plan: backend, bloqueo en la UI y comprobaciones

Hacer cumplir límites de plan mantiene los paywalls fiables. Compara reglas en el backend, bloqueo en la UI y comprobaciones en segundo plano, además de una lista de verificación simple para el despliegue.

Aplicar límites de plan: backend, bloqueo en la UI y comprobaciones

Qué sale mal cuando los límites se aplican en el sitio equivocado

Los límites de plan suelen significar una de cuatro cosas: cuántas personas pueden usar el producto (asientos), cuánto dato puedes almacenar (registros, filas, archivos), cuánto puedes hacer (peticiones, ejecuciones, mensajes) o a qué puedes acceder (funciones como exportaciones, integraciones o roles avanzados).

Los problemas empiezan cuando esos límites se aplican en el lugar más fácil de implementar, no en el lugar en el que se pueda confiar. Un patrón común es: la UI parece bloqueada, así que todos asumen que está bloqueada. Pero “parecía bloqueada” no es lo mismo que “fue bloqueada”.

Si un límite solo se aplica en la interfaz, a menudo cualquiera puede saltárselo activando la misma acción por otra vía. Puede ser tan simple como un marcador antiguo, una automatización importada, un cliente móvil o una llamada directa a la API. Incluso usuarios bienintencionados pueden encontrarse con esto si la UI y el backend no coinciden.

Esto es lo que suele ocurrir cuando la aplicación de límites de plan se hace en el lugar equivocado:

  • Fugas de ingresos: los clientes siguen usando funciones de pago porque nada los detiene realmente.
  • Pico de soporte: la gente recibe errores confusos, o ningún error, y pregunta por qué la facturación no coincide con el uso.
  • Actualizaciones desordenadas: los usuarios actualizan, pero pantallas en caché o comprobaciones retrasadas aún los bloquean.
  • Limpieza de datos: luego necesitas eliminar asientos extra, registros o integraciones después del hecho.

Una aplicación débil también puede convertirse en un problema de seguridad. Si tu backend no verifica que una acción esté permitida según el plan actual, un usuario podría acceder a datos o capacidades que nunca debería tener. Por ejemplo, ocultar un botón “Exportar” no protege si el endpoint de exportación sigue respondiendo. El mismo riesgo existe con invitaciones de asientos, acciones de administrador y integraciones premium.

Un escenario realista y rápido: un equipo en el plan Básico está limitado a 3 asientos. La UI oculta el botón "Invitar miembro" después de que se unan los tres. Pero la API de invitaciones sigue aceptando peticiones, o un trabajo en segundo plano procesa invitaciones en cola más tarde. El equipo acaba con 6 usuarios activos, y ahora tienes una disputa de facturación, un cliente enfadado y una política que no puedes aplicar con confianza.

Los paywalls fiables provienen de decisiones coherentes tomadas en el backend, con la UI como guía, no como barrera.

Tres capas de aplicación, en términos sencillos

Hacer cumplir límites de plan de forma fiable es menos acerca de un paywall perfecto y más sobre poner comprobaciones en los sitios correctos. Piénsalo como tres capas que trabajan juntas: lo que ve el usuario, lo que permite el servidor y lo que el sistema audita posteriormente.

1) Bloqueo en la UI (lo que ve el usuario)

El bloqueo en la UI es cuando la app oculta, deshabilita o etiqueta acciones según el plan. Por ejemplo, un botón “Agregar compañero” puede estar desactivado con una nota que diga que el plan incluye 3 asientos.

Esta capa busca claridad y reducir clics accidentales. Mejora la experiencia, pero no es seguridad. Cualquiera aún puede intentar activar la acción llamando directamente a la API, reproduciendo solicitudes antiguas o usando un cliente distinto.

2) Aplicación en el backend (lo que realmente está permitido)

La aplicación en el backend es que el servidor rechaza acciones que excedan el plan. Debe devolver un error claro y consistente que la UI pueda manejar. Esta es la fuente de la verdad.

“Fuente de la verdad” significa que hay un único lugar que decide, cada vez, si una acción está permitida. Si la UI dice “sí” pero el backend dice “no”, gana el backend. Esto mantiene el comportamiento coherente en web, móvil, herramientas de administración e integraciones.

3) Comprobaciones en segundo plano (lo que se verifica después)

Las comprobaciones en segundo plano son jobs que buscan sobrepasos a posteriori. Detectan casos límite como actualizaciones de facturación retrasadas, condiciones de carrera (dos usuarios actualizando o invitando al mismo tiempo) o uso que se contabiliza de forma asíncrona.

Las comprobaciones en segundo plano no sustituyen la aplicación en el backend. Están para detectar y corregir, no para decidir en tiempo real.

Aquí tienes la forma más simple de recordar las tres capas:

  • Bloqueo en la UI: guía al usuario y establece expectativas
  • Aplicación en el backend: bloquea la acción si rompe las reglas
  • Comprobaciones en segundo plano: detecta y arregla problemas que se escapan

Si construyes con una plataforma como AppMaster, procura mantener la decisión de la regla en la lógica del backend (por ejemplo, en tu Business Process), y luego reflejarla en la UI para una experiencia más fluida.

Aplicación en el backend: la fuente de la verdad para los paywalls

Si te importa hacer cumplir los límites de plan, el backend tiene que ser el árbitro. El bloqueo en la UI puede ocultar botones, pero no puede detener una llamada directa a la API, una versión vieja de la app móvil, un script o una condición de carrera donde ocurren dos acciones al mismo tiempo.

Una regla simple mantiene los paywalls fiables: cada petición que crea, cambia o consume algo debe comprobar las reglas antes de confirmar.

Qué validar en cada petición

Antes de hacer el trabajo, verifica el contexto y el límite. En la práctica, la mayoría de las apps necesitan el mismo conjunto de comprobaciones cada vez:

  • Plan: qué se le permite al tenant ahora mismo (funciones, cuotas, periodo de tiempo)
  • Rol: quién pide (propietario, admin, miembro) y qué permisos tiene
  • Tenant: a qué workspace u organización pertenece la petición (sin acceso entre tenants)
  • Recurso: qué se está tocando (proyecto, asiento, archivo, integración) y quién lo posee
  • Uso: contadores actuales frente a límites (asientos usados, invitaciones pendientes, llamadas API este mes)

Esto también explica por qué mantener la lógica en el servidor ayuda a que web y móvil se comporten igual. Una decisión de backend significa que no dependes de dos clientes separados interpretando las reglas correctamente.

Devuelve errores que la UI pueda manejar

Evita fallos vagos como "Algo salió mal" o errores genéricos 500. Cuando un límite bloquea una acción, devuelve una respuesta clara y consistente para que la UI muestre el mensaje correcto y el siguiente paso.

Una buena respuesta de límite suele incluir:

  • Un código de error específico (por ejemplo, PLAN_LIMIT_SEATS)
  • Un mensaje sencillo que pueda mostrarse al usuario
  • El límite y el uso actual (para que la UI explique la diferencia)
  • La pista de upgrade (qué plan o add-on quita el bloqueo)

Si construyes con AppMaster, centralizar estas comprobaciones es sencillo porque tus endpoints de API y la lógica de negocio están en un mismo lugar. Pon las comprobaciones de plan y permisos en el mismo flujo del backend (por ejemplo, en un Business Process usado por múltiples endpoints), para que la app web y las apps nativas reciban la misma decisión y la misma forma de error cada vez.

Cuando el backend es la fuente de la verdad, el bloqueo en la UI se convierte en una capa de conveniencia, no en una capa de seguridad. Eso es lo que mantiene tu paywall coherente, predecible y difícil de eludir.

Bloqueo en la UI: útil, pero nunca suficiente

Bloquear en la UI significa que la interfaz guía a las personas según su plan. Ocultas una opción, desactivas un botón o muestras un ícono de candado con un mensaje de upgrade. Bien hecho, hace que aplicar límites de plan se sienta claro y justo, porque los usuarios ven qué está disponible antes de hacer clic.

El bloqueo en la UI es excelente para reducir la frustración. Si alguien en un plan básico no puede exportar datos, es mejor mostrar “Exportar (Pro)” que dejarle completar un formulario y fallar en el último paso. También reduce la carga de soporte, porque muchas preguntas de “¿Por qué no puedo hacer esto?” se responden en el producto.

Pero el bloqueo en la UI no asegura nada por sí solo. Un usuario puede crear peticiones, reproducir una llamada API antigua, automatizar acciones o modificar un cliente móvil. Si el backend acepta la petición, el límite queda efectivamente eliminado, aunque la UI pareciera bloqueada. Por eso la validación en el servidor debe existir para cada acción protegida.

Estados bloqueados que los usuarios entienden de verdad

Un buen estado bloqueado es específico. En lugar de “No disponible”, di qué está bloqueado y por qué, y qué cambia si actualizan. Mantén el texto corto y concreto.

Por ejemplo: “Las invitaciones de equipo están limitadas a 3 asientos en tu plan. Actualiza para añadir más asientos.” Añade una acción clara siguiente, como un prompt de upgrade o un mensaje para pedir al admin.

Muestra los límites antes de que los alcancen

Lo mejor es evitar sorpresas. Haz visible el uso en los lugares donde se toman decisiones, no solo en una página de facturación.

Un patrón simple que funciona:

  • Muestra un pequeño medidor como “2 de 3 asientos usados” cerca de la pantalla relevante.
  • Advierte temprano (por ejemplo al 80%) para que los usuarios puedan planificar.
  • Explica qué ocurre al límite (bloqueado, en cola o facturado).
  • Mantén la UI consistente en web y móvil.

Si construyes con un constructor de UI (por ejemplo en AppMaster), está bien desactivar controles y mostrar prompts de upgrade. Simplemente trata el bloqueo en la UI como guía, no como la aplicación final. El backend debe seguir siendo la fuente de la verdad y la UI debe ayudar a evitar acciones fallidas.

Comprobaciones en segundo plano: detectar excesos y casos límite

Estandariza las respuestas de error de límites
Devuelve códigos de límite consistentes que tu UI pueda explicar sin generar tickets confusos.
Configurar errores

Las comprobaciones en segundo plano son la red de seguridad al aplicar límites. No reemplazan la aplicación en el backend ni el bloqueo en la UI. Detectan lo que sucede entre peticiones: eventos retrasados, integraciones desordenadas, reintentos y gente intentando explotar el sistema.

Una regla útil: si el usuario puede activarlo (clic, llamada API, webhook), aplica los límites en el backend en ese momento. Si el límite depende de totales a lo largo del tiempo o datos de otros sistemas, añade comprobaciones en segundo plano para confirmar y corregir.

Para qué sirven bien las comprobaciones en segundo plano

Algunos límites son difíciles de calcular en tiempo real sin ralentizar la app. Los jobs en segundo plano permiten medir uso y reconciliarlo más tarde, sin bloquear cada petición.

Comprobaciones comunes incluyen:

  • Medición de uso (llamadas API diarias, exportes mensuales, totales de almacenamiento)
  • Reconciliación de cuotas (arreglar conteos tras reintentos, borrados o fallos parciales)
  • Señales de fraude (picos inusuales, fallos repetidos, muchos intentos de invitación)
  • Actualizaciones retrasadas (el proveedor de pagos confirma la renovación más tarde)
  • Limpieza de casos borde (recursos huérfanos que inflan el uso)

La salida de estos jobs debería ser un estado de cuenta claro: plan actual, uso medido y flags como “over_limit” con una razón y un timestamp.

Cuando un job detecta que estás por encima del límite

Aquí es donde muchos paywalls parecen aleatorios. Un enfoque predecible es decidir de antemano qué sucede cuando el sistema detecta un exceso a posteriori.

Manténlo simple:

  • Detén la siguiente acción nueva que aumente el uso (crear, invitar, subir), pero no rompas la lectura de datos existentes.
  • Muestra un mensaje claro: qué límite se excedió, cuál es el número medido actual y qué hacer a continuación.
  • Si permites un periodo de gracia, hazlo explícito (por ejemplo, “3 días para actualizar” o “hasta el fin del ciclo de facturación”).
  • Si es un paro estricto, aplícalo de forma coherente en web, móvil y API.

Los periodos de gracia funcionan bien para límites que los usuarios pueden exceder por accidente (como almacenamiento). Los paros estrictos encajan para límites que protegen costes o seguridad (como asientos en un workspace regulado). La clave es la consistencia: la misma regla siempre, no “a veces funciona”.

Por último, notifica sin spamear. Envía una alerta cuando el estado cambie a over limit y otra cuando vuelva a la normalidad. Para equipos, notifica tanto al usuario que generó el exceso como al admin de la cuenta, para que la solución no se pierda.

Paso a paso: diseña un sistema fiable de límites de plan

Detecta excesos con jobs en segundo plano
Añade comprobaciones programadas para reconciliar uso y capturar casos borde sin ralentizar las peticiones.
Agregar comprobaciones

Un paywall fiable empieza en papel, no en código. Si quieres que la aplicación de límites sea predecible, escribe las reglas de forma que tu backend, UI e informes puedan ponerse de acuerdo.

1) Inventario de cada límite que vendes

Empieza listando límites en tres categorías: acceso a funciones (si pueden usarlo o no), límites de cantidad (cuántos de algo) y límites de frecuencia (con qué frecuencia). Sé específico sobre qué se cuenta y cuándo se restablece.

Por ejemplo, “5 asientos” no es suficiente. Decide si significa usuarios activos, usuarios invitados o invitaciones aceptadas.

2) Elige los puntos exactos de aplicación

A continuación, marca dónde debe comprobarse cada límite. Piensa en términos de acciones que cambian datos o te cuestan dinero.

  • Peticiones API que crean o actualizan registros
  • Escrituras en la base de datos (el momento en que el conteo realmente cambia)
  • Exportes y generación de archivos
  • Integraciones que disparan llamadas externas (email, SMS, pagos)
  • Acciones de admin como invitaciones, cambios de rol e importaciones masivas

En una plataforma no-code como AppMaster, este mapeo suele ser una simple checklist de endpoints más los pasos de Business Process que realizan acciones de “create”, “update” o “send”.

3) Decide paro estricto vs límite suave

No todas las reglas necesitan el mismo comportamiento. Un paro estricto bloquea la acción inmediatamente (mejor para seguridad y coste). Un límite suave la permite pero la marca (útil para pruebas o periodos de gracia).

Escribe una frase por regla: “Cuando X ocurre y el uso es Y, haz Z.” Esto evita que lógica de “depende” se cuele.

4) Estandariza errores y estados UI coincidentes

Define un pequeño conjunto de códigos de error del backend y luego haz que la UI los refleje de forma consistente. Los usuarios deben ver un mensaje claro y un siguiente paso claro.

Ejemplo: el código de error SEAT_LIMIT_REACHED se mapea al estado de botón “Invitar” deshabilitado, además de un mensaje como “Tienes 5 de 5 asientos. Elimina un asiento o actualiza para invitar más.”

5) Registra decisiones que puedas necesitar defender

Añade logging básico para cada decisión de límite: quién actuó, qué intentó, uso actual, plan y el resultado. Esto es lo que usarás cuando un cliente diga “Nos bloquearon pero no debieron” o cuando necesites auditar un exceso.

Un ejemplo realista: límites de asientos con invitaciones y upgrades

Imagina un equipo en el plan Básico con un límite de 5 asientos. Ya tienen 4 usuarios activos y quieren invitar a dos compañeros más. Aquí es donde aplicar límites de plan necesita ser coherente en UI, API y en la limpieza que sucede después.

La UI debe dejar el límite claro antes de que el usuario choque con él. Muestra “4 de 5 asientos usados” y “1 restante” cerca del botón Invitar. Cuando lleguen a 5 asientos activos, desactiva Invitar y explica por qué en lenguaje llano. Eso evita la mayoría de frustraciones, pero solo es una capa de conveniencia.

Ahora la parte importante: el backend debe ser la fuente de la verdad. Incluso si alguien evade la UI (por ejemplo llamando directamente al endpoint de invitaciones), el servidor debe rechazar cualquier invitación que exceda el plan.

Una comprobación backend simple para una petición de invitación sería así:

  • Cargar el plan del workspace y el límite de asientos.
  • Contar asientos activos (y decidir si las “invitaciones pendientes” también cuentan).
  • Si la nueva invitación excede el límite, devolver un error como "Seat limit reached".
  • Registrar el evento para visibilidad en soporte y facturación.

Si construyes esto en AppMaster, puedes modelar Users, Workspaces e Invitations en el Data Designer, y luego poner la lógica en un Business Process para que todas las rutas de invitación pasen por la misma regla.

Las comprobaciones en segundo plano manejan los bordes complicados. Las invitaciones expiran, se revocan o nunca se aceptan. Sin limpieza, tu número de “asientos usados” deriva y los usuarios se bloquean incorrectamente. Un job programado puede reconciliar los conteos marcando invitaciones expiradas, eliminando invitaciones revocadas y recalculando el uso real desde el estado en la base de datos.

Cuando el backend bloquea una invitación, el flujo de upgrade debe ser inmediato y claro. El usuario debe ver un mensaje como: “Has alcanzado 5 asientos en Básico. Actualiza para añadir más compañeros.” Tras la actualización y el pago, dos cosas deben cambiar:

  • El registro del plan se actualiza (nuevo límite de asientos o nuevo plan).
  • El usuario puede reintentar la misma invitación sin volver a introducir los datos.

Bien hecho, la UI evita sorpresas, el backend evita abusos y el job en segundo plano evita bloqueos falsos.

Errores comunes que hacen los paywalls poco fiables

Valida límites bajo carga
Prueba condiciones de carrera con peticiones paralelas y observa cómo tu backend bloquea con fiabilidad.
Probar flujo

La mayoría de los paywalls fallan por razones sencillas: las reglas están dispersas, las comprobaciones ocurren en el momento equivocado o la app decide “ser amable” cuando algo falla. Si quieres que los límites se mantengan bajo uso real, evita estas trampas.

Errores que aparecen en productos reales

  • Tratar la UI como el guardián. Ocultar un botón o desactivar un formulario ayuda a los usuarios, pero no detiene llamadas directas a la API, versiones antiguas de la app o automatizaciones.
  • Comprobar límites en la primera pantalla, no en la acción final. Por ejemplo, advertir “queda 1 asiento” en la página de invitación, pero no volver a comprobar cuando el usuario pulsa “Enviar invitación.” Dos admins pueden invitar al mismo tiempo y ambas invitaciones pasan.
  • Usar datos de plan en caché sin una actualización segura. Los cambios de plan, renovaciones y upgrades ocurren constantemente. Si tu app lee “plan Pro” desde una caché con minutos de retraso, los usuarios pueden quedar bloqueados tras un upgrade o permitidos tras un downgrade.
  • Contar el uso de forma distinta en sitios diferentes. Un endpoint cuenta “usuarios activos”, otro cuenta “usuarios invitados” y un job en segundo plano cuenta “emails únicos”. El resultado es comportamiento aleatorio que parece bugs o facturación injusta.
  • Abrir en caso de errores. Cuando tu servicio de facturación se queda colgado o tu tabla de cuotas está bloqueada, dejar pasar la acción “solo esta vez” invita al abuso y hace la auditoría imposible.

Una forma práctica de detectar estos problemas es seguir una acción de pago de extremo a extremo y preguntar: ¿dónde se toma la última decisión y qué datos usa?

Si construyes con una herramienta como AppMaster, el riesgo suele no estar en el constructor de UI en sí, sino en dónde vive la lógica de negocio. Pon la comprobación final dentro del Business Process del backend que realiza la acción (crear invitación, subir archivo, generar informe), y deja que la UI web o móvil solo refleje lo que el backend permitirá.

Cuando algo falla, devuelve una respuesta clara “plan limit reached” y muestra un mensaje útil, pero mantén la regla en un solo lugar para que sea consistente en web, móvil y automatizaciones.

Comprobaciones rápidas antes de enviar a producción

Lanza un primer prototipo de cuota
Prototipa un límite de extremo a extremo: estados de UI, aplicación en backend y errores claros.
Crear prototipo

Antes de lanzar un paywall o cuota, haz una pasada rápida con la mentalidad “¿cómo podría eludir esto?”. La mayoría de problemas aparecen cuando pruebas como un usuario avanzado: múltiples pestañas abiertas, reintentos, redes lentas y gente actualizando o degradando a mitad de sesión. Estas comprobaciones ayudan a que los límites sean predecibles y seguros.

Comprobaciones de backend (deben pasar siempre)

Empieza por la fuente de la verdad: cada acción protegida debe ser permitida o bloqueada por el backend, incluso si la UI oculta el botón.

  • Valida cada escritura protegida en el backend (crear, invitar, subir, exportar, llamada API).
  • Aplica los límites en el punto de escritura, no solo al listar o ver datos.
  • Devuelve un código de error consistente para cada límite (por ejemplo: seat_limit_reached, storage_quota_exceeded).
  • Define los contadores de uso una vez (qué cuenta y qué no) y fija la ventana de tiempo (por día, por mes, por ciclo de facturación).
  • Registra bloqueos con contexto: quién fue bloqueado, qué límite, uso actual, uso permitido y la ruta de la petición.

Si construyes en AppMaster, esto normalmente significa que la comprobación vive en la lógica del backend (por ejemplo en un flujo de Business Process) justo antes de que se escriba el registro o se ejecute la acción.

Comprobaciones de UI y mensajes (reducir confusión)

El bloqueo en la UI sigue siendo valioso porque evita frustración, pero debe coincidir exactamente con el comportamiento del backend. Asegúrate de que tus códigos de error se mapeen a mensajes claros y específicos.

Una buena prueba: provoca el límite a propósito y luego comprueba si el usuario ve (1) qué pasó, (2) qué hacer después y (3) qué no se perderá. Ejemplo: “Tienes 5 de 5 asientos. Actualiza para invitar más, o elimina un asiento primero.”

Pruebas de escenarios (capturar casos límite)

Ejecuta un pequeño conjunto de tests repetibles antes de cada release:

  • Actualizar estando por encima del límite: la acción debe tener éxito inmediatamente tras el upgrade.
  • Degradar por debajo del uso actual: la app debe mantener claras las reglas de acceso (bloquear nuevas escrituras, permitir ver, mostrar qué debe cambiar).
  • Dos usuarios alcanzan el mismo límite a la vez: solo uno debe triunfar si queda una plaza.
  • Reintentos y timeouts: una respuesta fallida no debe contabilizar por error el uso doble.
  • Reinicio de ventana temporal: los contadores se reinician cuando corresponde, ni antes ni después.

Si todo esto pasa, tu paywall será mucho más difícil de eludir y más fácil de soportar.

Siguientes pasos: implementar de forma coherente y mantenerlo manejable

Empieza pequeño. Elige un límite de alto valor que afecte directamente costes o abuso (asientos, proyectos, llamadas API, almacenamiento) y conviértelo en tu implementación “estándar oro”. Cuando ese primer límite esté sólido, copia el mismo patrón para los siguientes en lugar de inventar un enfoque nuevo cada vez.

La consistencia importa más que la astucia. El objetivo es que cualquier desarrollador (o tu yo del futuro) pueda responder rápido a dos preguntas: ¿dónde se almacena el límite? y ¿dónde se aplica?

Estandariza cómo funcionan los límites

Define un contrato simple que reutilices en todas partes: qué se cuenta, qué ventana temporal aplica (si la hay) y qué debe hacer el sistema cuando se alcanza el límite (bloquear, avisar o permitir y luego facturar). Mantén las reglas iguales para web, móvil y cualquier integración.

Una checklist ligera ayuda al equipo a mantenerse alineado:

  • Elige un lugar para almacenar ventajas y contadores de uso (aunque la UI también los muestre)
  • Crea una única comprobación compartida “¿puedo hacer esto?” usada por cada acción de escritura
  • Decide tus mensajes de error y códigos para que la UI responda consistentemente
  • Registra cada denegación con plan, nombre del límite y uso actual
  • Añade una política de override admin (quién puede saltarse, y cómo se audita)

Documenta tus límites en una página accesible para todo el equipo. Incluye los puntos exactos de aplicación (nombres de endpoints API, jobs en segundo plano y pantallas UI) y 2 o 3 ejemplos de casos límite.

Prueba bypasses y condiciones de carrera

No confíes en pruebas de camino feliz. Añade un pequeño plan de pruebas que intente romper tu paywall: peticiones paralelas que creen dos recursos al mismo tiempo, clientes obsoletos que reintentan y llamadas directas a la API que omiten la UI.

Si construyes con AppMaster, mapea límites de plan y contadores directamente en el Data Designer (modelo PostgreSQL), luego aplica las reglas en Business Processes y endpoints API para que tanto web como móvil lleguen a la misma lógica. Esa aplicación compartida es lo que hace que los paywalls sean predecibles.

Finalmente, prueba ahora con un prototipo diminuto: un límite, una vía de upgrade y un mensaje de exceso. Es mucho más fácil mantener el sistema cuando validas el patrón temprano y lo reutilizas en todas partes.

Fácil de empezar
Crea algo sorprendente

Experimente con AppMaster con plan gratuito.
Cuando esté listo, puede elegir la suscripción adecuada.

Empieza
Aplicar límites de plan: backend, bloqueo en la UI y comprobaciones | AppMaster