Blog
Notas técnicas sobre arquitectura, producto y plataforma. No están escritas como posts lineales: están pensadas para leerse en el visor del editor, con outline, tablas, diagramas y bloques de decisión.
NoteSi sólo tienes dos minutos, usa la tabla de abajo. Si estás dentro del editor, abre el outline: cada artículo está estructurado para saltar directamente al diagrama, al marco de decisión o al checklist.
Mapa rápido
| Si quieres entender... | Lee esto | Qué te llevas |
|---|---|---|
| Cómo reducir deuda técnica repetida | De tres renderers a uno | Un patrón para extraer una librería compartida sin romper consumidores |
| Cuándo usar microservicio | ¿Microservicio o librería compartida? | Un árbol de decisión para separar reuso, secretos, cómputo y operación |
| Cómo una persona puede sostener varios productos | Construye plataforma, no producto | Un mapa de primitivas reutilizables y límites contra el monolito |
| Cómo validar un SaaS antes de venderlo | Dogfooding a dos niveles | Un modelo de pruebas internas con riesgo bajo y exigencia alta |
| Cómo convertir un editor en una plataforma | De Notipad Editor a Notipad Publish | Cómo extraer render, estilos y servicios compartidos sin perder experiencia de producto |
| Cómo proteger el tráfico público antes del lanzamiento | El edge como perímetro | Un análisis de WAF, rate limits y origin bypass con mirada DevOps/SRE |
| Cómo endurecer una app pequeña antes de invitar usuarios | Lanzar una app pequeña no significa saltarse producción | Un checklist real de dominio canónico, BFF, APIs, secrets, seed y operación |
| Cómo enviar emails de varios productos sin duplicar servicios | Email transaccional multi-tenant | Un patrón para tenant, dominio, marca, Resend y links de acción consistentes |
| El momento en que un servicio compartido aprendió a distinguir productos | El servicio de auth aprendió a qué producto estaba sirviendo | Cómo añadir contexto de producto a un servicio compartido cambia todo lo que viene después |
| Cuándo los ficheros de configuración estáticos dejan de ser suficientes | Del fichero de config al registro vivo | Por qué un catálogo de productos reemplaza N ficheros de config en N servicios |
| Por qué el 2FA importa incluso cuando eres el único operador | 2FA antes de cualquier mutación de admin | Una decisión de seguridad corta sobre proteger escrituras de forma distinta a lecturas |
| Cómo la identidad visual cierra una cadena técnica | El logo que cierra la cadena | La última pieza que conecta admin, email y página de auth a través de un logo compartido |
| Cómo un Worker enruta varios subdominios canónicos de API | Un Worker, tres subdominios de API | Un Cloudflare Worker como capa de enrutamiento que deja los backends libres para moverse |
| Cuándo el directo deja de poder puntuar por intuición | El directo ya no puede mentir sobre los puntos | Como Ultimate Porra alineo scoring oficial, estado live y explicacion visible de puntos |
| Cuándo la superficie publica deja de poder depender del arranque o del build | La superficie publica ya no puede ser un efecto secundario | Como analytics, publish contract y dominio canonico convirtieron la web publica en operacion real |
| Qué pasa con el contenido publicado | Qué se envía al servidor cuando publicas | Un flujo de datos claro para explicar privacidad y arquitectura |
| Por qué mover código compartido cambia más que imports | Mover una pieza compartida no es cambiar una ruta | Cómo una extracción a packages obligó a alinear propiedad, setup y operación del workspace |
| Cuándo una demo empieza a exigir disciplina de producto | Cuando un experimento empieza a comportarse como producto | Cómo Reveal It y Loop It Synth forzaron a alinear UX, estado, pruebas y despliegue |
| Por qué una nota terminada todavia puede no estar publicada | Escribir no es publicar | Cómo permisos, identidad y credenciales convierten documentacion lista en publicacion real |
| Cuándo los "datos del torneo" dejan de ser solo datos | Cuando los datos de referencia se vuelven logica de producto | Cómo favoritos, horarios FIFA y eventos oficiales pasaron a bloquear votos y recalcular bonus |
| Por que un backoffice deja de caber en la app publica | El admin no es una pestana mas | Como Ultimate Porra separo admin, dominio y reglas para fijar una frontera de producto |
| Cuándo una tarjeta de voto deja de ser un formulario minimo | Votar ya no es solo poner un marcador | Como Ultimate Porra empezo a hacer visibles tiempo, puntos y bonus antes de poder escalar a mas competiciones |
| Cuándo el bonus deja de poder esconderse en el total | El bonus ya no puede vivir escondido | Como Ultimate Porra paso de autosave implicito a bonus visible, editable y puntuado por campo |
| Cuándo una porra necesita explicar el partido mientras ocurre | La porra ya tiene que explicar el partido en directo | Como Ultimate Porra anadio portada viva, puntos provisionales y estadisticas para seguir y jugar a la vez |
| Cuándo una partida deja de ser solo una invitacion | Una partida ya no es solo un enlace de invitacion | Como Ultimate Porra paso a tratar la partida como objeto completo: entrar, copiar, configurar y administrar |
| Cuándo una partida publica deja de ser desechable | Una partida publica ya no puede ser desechable | Como Ultimate Porra anadio joins bloqueados, borrado seguro, restore y scoring consistente para operar partidas reales |
La línea argumental
Los artículos siguen el proyecto a medida que creció: desde la deuda del renderer hasta las primitivas de plataforma, pasando por un lanzamiento real, y dentro de la iteración que vino después — hacer que los servicios compartidos reconocieran el producto, reemplazar config estática por un registro vivo, y cerrar las brechas que solo aparecen cuando dos productos comparten la misma infraestructura.
Artículos
Arquitectura del renderer
De tres renderers a uno: cómo extraer un núcleo de render compartido — qué copias existían, qué contrato compartían y cómo migrarlas sin perder paridad visual.
¿Microservicio o librería compartida? Un marco para decidir — reuso, protección de código, centralización operativa y secretos no son el mismo problema.
Producto y plataforma
Construye plataforma, no producto: cómo las primitivas compartidas dejan que una persona sola lance varios SaaS — cómo convertir piezas ya existentes en una plataforma con límites claros.
Dogfooding a dos niveles: cómo un portfolio y un sitio de producto validan el mismo motor de publicación — por qué un portfolio no basta y un sitio de producto tampoco debe ser el primer campo de pruebas.
De Notipad Editor a Notipad Publish: cómo un producto empieza a convertirse en plataforma — cómo la extracción del render, los estilos y el reader convierte una app en servicios reutilizables.
El servicio de auth aprendió a qué producto estaba sirviendo — el momento en que un servicio global empezó a transportar contexto de producto y lo que eso desbloqueó aguas abajo.
Del fichero de config al registro vivo — por qué un catálogo de productos reemplaza N ficheros de config y qué ganas cuando el registro es consultable.
Mover una pieza compartida no es cambiar una ruta — por qué sacar
nima-agentde un producto y llevarlo apackagesobligó a corregir propiedad, bootstrap y operación del workspace.Cuando un experimento empieza a comportarse como producto — cómo dos frontends distintos obligaron a tratar UX, estado, smoke tests y deploy como una sola conversación.
Escribir no es publicar — por qué una entrada terminada siguió bloqueada hasta alinear ACLs, identidad de proceso y credenciales de push.
Cuando los datos de referencia se vuelven logica de producto — cómo
world-cup-porraconvirtió favoritos, horarios FIFA y detalles de partido en reglas que bloquean, sincronizan y puntuan.El admin no es una pestana mas — como
ultimate-porraseparo la app publica del backoffice y convirtio esa separacion en dominio, modulos y contrato operativo.Votar ya no es solo poner un marcador — como
ultimate-porraconvirtio la tarjeta de voto en una superficie que explica tiempo, puntos y reglas antes de escalar a nuevas competiciones.El bonus ya no puede vivir escondido — como
ultimate-porradejo de esconder el bonus dentro del total y lo convirtio en una parte visible, editable y auditable del voto.La porra ya tiene que explicar el partido en directo — como
ultimate-porraempezo a abrir enInicio, puntuar resultados provisionales y leer mejor el comportamiento de los usuarios en la clasificacion.Una partida ya no es solo un enlace de invitacion — como
ultimate-porraconvirtio la partida en unidad principal del producto, con flujos de entrada, copia de votos, favoritos y administracion separada.Una partida publica ya no puede ser desechable — como
ultimate-porraempezo a gobernar la partida publica con joins bloqueados, confirmacion de borrado, restauracion y una sola verdad visible de puntuacion.El directo ya no puede mentir sobre los puntos — como
ultimate-porraempezo a reconciliar resultado oficial, puntos provisionales, UI live y evidencia visible del partido en la misma lectura.La superficie publica ya no puede ser un efecto secundario — como
Ultimate Porraynikki-asteinza-webdejaron de tratar medicion, publish y dominio como el ultimo paso y empezaron a escribirlos como contrato de producto.
Seguridad y operaciones
El edge como perímetro: WAF, rate limits y el análisis DevOps/SRE antes de lanzar — cómo cerrar el tráfico público en el edge sin migrar todo el backend antes del lanzamiento.
Lanzar una app pequeña no significa saltarse producción: el checklist de Ultimate Porra — cómo llevar una app acotada a producción con dominio canónico, BFF, origin lock, seed de datos y operación escrita.
Email transaccional multi-tenant: dominios, marca y links de acción sin duplicar servicios — cómo seleccionar tenant por producto, verificar dominios de envío y mantener coherencia en password setup y recovery.
2FA antes de cualquier mutación de admin — por qué un segundo factor en escrituras protege de forma diferente a un segundo factor en el login, incluso para un operador en solitario.
El logo que cierra la cadena — cómo un logo subido una vez en el admin llega a la cabecera del email y a la página de acción de auth sin cableado adicional.
Un Worker, tres subdominios de API — cómo un único Cloudflare Worker cierra el hueco de bypass de origen para los subdominios canónicos de API.
Qué se envía al servidor cuando publicas: flujo de datos y privacidad en un SaaS de Markdown — qué contenido viaja, qué no viaja, qué servicios intervienen y qué promesa se puede escribir.
Cómo están escritos estos documentos
Cada artículo usa Markdown portable con bloques que el visor del editor ya entiende:
- Diagramas para explicar flujos y dependencias.
- Tablas para comparar opciones y contratos.
- Alertas
> [!...]para separar decisiones, riesgos y reglas. - Columnas
:::columnspara leer comparaciones en paralelo. - Bloques plegables
<details>para checklists y notas de implementación.
¿Quieres recibir avisos cuando publique nuevos artículos? Escríbeme: nikki@notipad.com.