Suite 101 · arquitectura

Mapa de la suite 101

Dónde están las pantallas, dónde el servidor, dónde las bases de datos y por dónde viaja la información. Tal como está desplegado hoy, más lo que falta para que dar de alta una empresa sea automático y para venderla en un dominio propio.

Al 18 de septiembre de 2026Contrato de la API 0.13.014 repositorios en GitHubTodo en Cloudflare, salvo tres sitios heredados en Netlify

Las cuatro capas, y qué es cada una hoy

La suite se explica en cuatro niveles de personas. Cada nivel tiene ya una pieza construida; el nombre comercial y el nombre del repositorio no siempre coinciden, y aquí van los dos.

MASTER101

Nosotros, los dueños de la suite.

Hoy: master101. Abre y suspende empresas, prende y apaga apps, nombra superadmins, administra licencias.

DIRECTOR101

La persona que la empresa cliente designa para administrar a su gente.

Hoy: workshop101 (rol owner o admin). Da de alta a su personal, roles y a qué apps entra cada quien.

suite101

Los usuarios de la empresa, con correo y contraseña o cuenta de Google.

Hoy: dash101, quote101, quell101, roster101. Una sola sesión sirve para todas. SUPERVISOR se retira: sus funciones pasan a quell101.

apps 101

Usuarios finales: clientes del taller, público, o quien compra una licencia.

Hoy: peek101 (portal del cliente, sólo lectura) y draw101, nest101, shape101 en Windows con licencia por suscripción.

1 · El mapa general

Todas las pantallas web son Workers de Cloudflare y ninguna toca una base de datos directamente: hablan con un solo servidor, suite101-api, que es quien decide quién es cada quien y de qué empresa. Cada empresa tiene su propia base de datos, separada de las demás.

PERSONAS PANTALLAS (Workers · una por app) SERVIDOR DATOS MASTER101 nosotros · superadmin DIRECTOR101 dueño o admin de la empresa Usuarios de la empresa oficina, socios, personal correo + contraseña o cuenta de Google una sesión para todas las apps Cliente final ve su proyecto desde el celular Quien compra una licencia draw101 · nest101 · shape101 instaladas en Windows master101 empresas · apps · gente · superadmins · licencias workshop101 su gente, roles y accesos dash101 · quote101 · quell101 roster101 negocio, cotizaciones, bitácora de obra, trabajadores (el taller pasa a quell101) staging y producción de cada una peek101 portal del cliente · sólo lectura draw101 · nest101 · shape101 programas de escritorio (no son Workers) instaladores en «descargas» suite101-api Worker · Hono · contrato 0.13.0 /authcódigo por correo, contraseña, Google /yoquién soy y de qué empresa /orgslos datos de la empresa /adminsólo superadmin /licenciasactivar, latido, panel Lo que decide aquí ¿la sesión es válida? ¿de qué empresa es? ¿esa app está prendida? ¿qué rol tiene? ¿la empresa está activa? Servicios externos Resend · manda el código de entrada Google · entrar con su cuenta Stripe · pagos de licencias (por conectar) producción y staging separados service binding cookie s101 + X-App https · sin sesión · token firmado D1 · suite101-master empresas, usuarios, miembros, sesiones, superadmins, licencias Una base por empresa Durable Object con SQLite clientes, cotizaciones, proyectos, ítems, movimientos, conciliaciones nace sola al abrir la empresa R2 · suite101 archivos y fotos SQL por org lee/escribe Bases propias quell101 (D1+R2) roster101 (D1+R2) SUPERVISOR (D1, se retira) hoy de una sola empresa; por mudar esas apps guardan sus propios datos directamente (sin pasar por la API) Cómo llega a producción GitHub → Actions publica primero staging, corre las pruebas contra staging (API en workerd, Playwright en navegador, humo), y sólo si todo pasa publica producción y la mide. Nada se sube a mano.
Las pantallas web no ven las bases de datos: todo pasa por suite101-api, que separa a cada empresa en su propia base. Las líneas azules son el camino normal de una petición; las punteadas, lo que todavía no pasa por la API.
petición con sesión o tokenlectura y escritura de datoscamino heredado o pendiente

Cómo entra una persona

2 · Dar de alta una empresa nueva

Hoy el alta la hace MASTER101 y tarda un minuto. La base de la empresa nace sola y vacía, con el esquema al día. Lo que sigue muestra lo que ya ocurre y, en punteado, lo que falta para que el alta sea completa sin intervención nuestra.

LO QUE YA PASA HOY 1 · MASTER101 nombre, identificador, correo del dueño, qué apps van prendidas 2 · Base maestra fila en orgs apps y plan dueño como miembro owner 3 · Nace su base Durable Object propio migraciones 0001 a 0005 vacía, con el esquema al día 4 · El dueño entra con su correo y código a workshop101 (DIRECTOR101) 5 · Da de alta a su gente correo, rol, apps de cada quien y cada quien entra a sus apps con la misma sesión POST idFromName correo sesión Todo esto ya está probado en cada publicación: la prueba de master101 crea una empresa, la suspende, la reactiva y la borra. LO QUE FALTA PARA QUE SEA AUTOMÁTICO Y VENDIBLE Dominio propio por empresa empresa.suite101.mx o su dominio las mismas pantallas, el mismo servidor; la empresa se reconoce por el dominio MASTER101 lo da de alta y lo quita Datos del director al alta nombre, teléfono, RFC y razón social correo de bienvenida con su liga (hoy sólo se guarda su correo) Plan y cobro de la empresa qué contrató, hasta cuándo pagó suspensión sola al vencer (las licencias de escritorio ya lo tienen; las empresas todavía no) Dos apps a la base por empresa quell101 y roster101 guardan hoy en bases propias de una sola empresa; para venderlas deben guardar en la base de cada org. (SUPERVISOR se retira; el taller va a quell101) Ninguna de las cuatro requiere rehacer lo que existe: son columnas, rutas y pantallas nuevas sobre la misma API.
Arriba, el alta como funciona hoy en cinco pasos. Abajo, las cuatro piezas que faltan para que una empresa quede lista sola y con su dominio, sin que MASTER101 pierda el control.

3 · Licencias de los programas de escritorio

draw101, nest101 y shape101 no son pantallas web: se instalan en Windows. Su permiso para funcionar es un token firmado por la API que la app puede verificar sin internet, y que se renueva con un latido diario.

MASTER101 · master101 crea la licencia: cliente, programa, lugares (1), cortesía o pagada hasta… T101-XXXX-XXXX-XXXX Stripe (por conectar) avisa el pago → la API corre la fecha suite101-api · /licencias guarda suscripciones y activaciones firma tokens con una llave Ed25519 que nace en el servidor y nadie copia un token vale como mucho 30 días y nunca más allá del día pagado está atado a una máquina (huella) y a un programa: no sirve en otro la bitácora apunta cada acción La app en Windows teclea la clave una vez verifica la firma sin internet latido una vez al día sin red, sigue hasta que venza el token crea · marca pago · suspende · libera máquina POST /licencias/:id/pago origen: stripe activar: clave + huella token v1 firmado · hasta latido: token + huella (diario) token nuevo, o «sin pago» / «suspendida» Revocar es dejar de renovar: el corte llega solo cuando vence el último token, sin tocar la máquina del cliente.
La licencia es control comercial, no candado: quien paga sigue trabajando aunque se quede sin internet; quien deja de pagar se queda sin permiso cuando vence su último token.

4 · Dónde vive cada cosa

Un repositorio por pieza. Cada Worker tiene su copia de staging; la API y las pantallas se publican por separado y se hablan por contrato con número de versión.

PiezaRepositorioQué esDónde correSus datos
suite101-apisuite101-apiEl servidor de toda la suiteWorker (Hono)D1 maestra · un Durable Object por empresa · R2
master101master101Panel de MASTER101Workerpor la API
workshop101workshop101Panel del director de la empresaWorkerpor la API
dash101dash101El negocio: proyectos, cotizaciones, finanzas, conciliación semanalWorker (Next.js)por la API
quote101cotizador-t101CotizadorWorkerpor la API
peek101peek101Portal del cliente final, sólo lecturaWorkerpor la API
quell101bitacora-obraBitácora de obra con fotos y punchlistWorkerD1 y R2 propios por mudar
roster101t101-portal-trabajadoresExpedientes de trabajadoresWorker (Hono)D1 y R2 propios por mudar
SUPERVISORtaller101El mapa del taller: mueble por etapa. se retira Sus funciones se integran en quell101 más adelante.Worker (todavía en línea)D1 propio
draw101 · nest101 · shape101draw101 · nest101 · shape101Programas de escritorio para WindowsEn la máquina del clientearchivos locales · licencia por la API
descargasdescargasLos instaladores y su sitioGitHub Releases + sitio
wall101wall101El muro de entregas para MikeCloudflare Pages
heredado conta-master, cuenta-taller101, cotizador en Netlifyconta-master · …Versiones anteriores, todavía en líneaNetlify + FirebaseFirestore

Los dominios de hoy son los de Cloudflare (*.mike-929.workers.dev). Ninguna pantalla tiene todavía dominio propio; ponerlo es un paso de configuración, no de código, y es el mismo mecanismo que se usará para el dominio de cada empresa.

5 · Por qué es robusta y segura (para contarlo)

Esto es lo que se puede afirmar hoy, porque cada punto está construido y se prueba en cada publicación. Sirve tal cual para una ficha comercial.

Cada empresa, su propia base

Los datos de una empresa viven en una base separada de las demás. No existe una consulta que pueda cruzar dos empresas: la API abre la base de la empresa de la sesión y de ninguna otra.

Un solo lugar decide quién entra

Todas las pantallas preguntan al mismo servidor. Suspender una empresa la apaga en todas sus apps al instante; apagar una app la apaga para todos sus usuarios.

Entrada sin contraseñas débiles

Código de un solo uso por correo, contraseña opcional con intentos limitados, o cuenta de Google. La sesión va en una cookie que el navegador no deja leer a ningún script.

Roles con límites reales

Dueño, administrador, socio y personal. Sólo un dueño nombra dueños, y el último dueño no se puede quitar. MASTER101 ve todo y lo deja apuntado en una bitácora.

Nada llega a producción sin pasar por staging

Cada cambio se publica primero en una copia idéntica, se prueba con un navegador real y con 219 pruebas del servidor, y sólo entonces se publica en producción, donde se vuelve a medir.

Licencias verificables sin internet

Los permisos de los programas de escritorio van firmados con criptografía de llave pública (Ed25519). La llave privada nace en el servidor y no sale de ahí; las apps sólo llevan la pública.

Secretos fuera del código

Las llaves de correo, Google y Cloudflare viven en los secretos de GitHub y del Worker, nunca en los repositorios. Los repositorios son públicos y se puede auditar cada línea.

Sin servidores que administrar

Todo corre en la red de Cloudflare: sin máquinas que parchar, escala sola y responde desde el punto más cercano al usuario, en México o donde esté.

6 · ¿Se puede mover a AWS sin perder servicio?

Sí, y sin apagar nada, pero no es «sencillo»: es un proyecto de semanas, no de días, y una pieza cambia de forma. La razón por la que es posible es la misma que hace robusta a la suite: todas las pantallas hablan con un solo servidor por contrato, y ese servidor está escrito en Hono, que corre igual en Cloudflare, en AWS Lambda o en un contenedor.

Hoy en CloudflareEquivalente en AWSQué tan directo
Workers (pantallas y API)Lambda detrás de CloudFront y API Gateway, o contenedores en Fargatedirecto el código es el mismo; cambia el empaquetado
R2 (archivos)S3directo R2 habla el mismo protocolo que S3; se copia con una herramienta estándar
Pages (wall101)S3 + CloudFrontdirecto
D1 (base maestra)Aurora Serverless (PostgreSQL) o RDSmoderado es SQL estándar; hay que cambiar el dialecto de SQLite a PostgreSQL y las llamadas del Worker
Un Durable Object por empresaNo tiene equivalente directo: un esquema por empresa en Aurora, o una base SQLite por empresa en EFS con Lambdacambia de forma es la pieza que hay que rediseñar; el aislamiento por empresa se conserva, el mecanismo no
Service bindings (pantallas → API)Llamadas HTTPS internas dentro de la VPC, o una función por pantallamoderado
GitHub Actions (publicar y probar)Igual: GitHub Actions publicando a AWSdirecto

Cómo se haría sin cortar el servicio

Recomendación: no moverse ahora. Cloudflare cuesta hoy una fracción de lo que costaría AWS para el mismo tráfico, no hay máquinas que administrar, y nada de lo que se está construyendo (dominio por empresa, alta automática, cobro) ata más la suite a Cloudflare de lo que ya está. Lo que sí conviene desde hoy, y ya se cumple: mantener la API en Hono, los archivos en R2 con protocolo S3 y el SQL sin extensiones raras. Así la puerta a AWS queda abierta sin pagarla por adelantado.