[{"data":1,"prerenderedAt":863},["ShallowReactive",2],{"blog-es-supabase-backup-tools-compared":3,"blog-index-es":516},{"id":4,"title":5,"body":6,"category":475,"cover":476,"coverAlt":477,"description":478,"draft":479,"extension":480,"faq":481,"image":497,"keywords":498,"meta":504,"navigation":505,"ogTitle":506,"path":507,"published":508,"seo":509,"stem":510,"tldr":511,"updated":508,"__hash__":515},"blog_es\u002Fblog\u002Fsupabase-backup-tools-compared.md","Herramientas de backup de Supabase comparadas, la nuestra incluida",{"type":7,"value":8,"toc":462},"minimark",[9,13,21,24,29,32,163,166,170,173,210,216,220,223,232,235,239,242,249,255,258,285,290,298,302,305,308,311,319,323,326,329,367,372,375,382,386,389,420,424,444],[10,11,12],"p",{},"Has buscado una herramienta de backup de Supabase por una de dos razones. O bien\ndescubriste que tu proyecto está en el plan gratuito y nunca se ha copiado nada a\nninguna parte, o estás en un plan de pago, leíste hasta dónde llega su ventana\nhacia atrás y no te pareció suficiente para una app con clientes reales dentro.",[10,14,15,16,20],{},"Aquí está la parte que estas comparativas hacen mal, y las escritas por las\npropias herramientas la hacen peor que nadie: ordenan las opciones por funciones.\n",[17,18,19],"strong",{},"Una herramienta de backup es algo que pagas para cubrir un trabajo que ya has\ndecidido que no vas a hacer tú."," Si de verdad lo hicieras, la vía gratuita\nproduce el mismo archivo.",[10,22,23],{},"Vendemos una de las cuatro de abajo, así que lee el resto con eso en la mano.\nPara bastantes apps la vía gratuita es la respuesta correcta, y su sección es la\nmás larga de aquí.",[25,26,28],"h2",{"id":27},"qué-herramienta-de-backup-de-supabase-debería-usar","¿Qué herramienta de backup de Supabase debería usar?",[10,30,31],{},"Elige según qué parte del trabajo quieras dejar de tener en la cabeza. Las cuatro\nvías producen una copia de tu base de datos. Lo que las separa es cuánto de lo\nque viene después sigue siendo tuyo.",[33,34,35],"comparison-table",{},[36,37,38,59],"table",{},[39,40,41],"thead",{},[42,43,44,47,50,53,56],"tr",{},[45,46],"th",{},[45,48,49],{},"El propio Supabase",[45,51,52],{},"Una GitHub Action",[45,54,55],{},"Un servicio de backup",[45,57,58],{},"Cuidado gestionado",[60,61,62,77,91,104,119,132,146],"tbody",{},[42,63,64,68,71,73,75],{},[65,66,67],"td",{},"Se ejecuta sin ti",[65,69,70],{},"Sí",[65,72,70],{},[65,74,70],{},[65,76,70],{},[42,78,79,82,85,87,89],{},[65,80,81],{},"La copia sale de tu cuenta",[65,83,84],{},"No",[65,86,70],{},[65,88,70],{},[65,90,70],{},[42,92,93,96,98,100,102],{},[65,94,95],{},"Sobrevive a perder la cuenta",[65,97,84],{},[65,99,70],{},[65,101,70],{},[65,103,70],{},[42,105,106,109,111,114,117],{},[65,107,108],{},"Incluye tus archivos subidos",[65,110,84],{},[65,112,113],{},"Un segundo trabajo",[65,115,116],{},"Normalmente no",[65,118,70],{},[42,120,121,124,126,128,130],{},[65,122,123],{},"Algo lee la copia de vuelta",[65,125,84],{},[65,127,84],{},[65,129,84],{},[65,131,70],{},[42,133,134,137,140,142,144],{},[65,135,136],{},"Restaurar es un botón",[65,138,139],{},"Sí, dentro del proyecto",[65,141,84],{},[65,143,84],{},[65,145,70],{},[42,147,148,151,154,157,160],{},[65,149,150],{},"Coste",[65,152,153],{},"Solo planes de pago",[65,155,156],{},"Gratis",[65,158,159],{},"Plan gratuito, luego de pago",[65,161,162],{},"Una suscripción",[10,164,165],{},"La columna sombreada es la nuestra, y las filas cuatro a seis son lo que vende.\nTenlo presente en todo lo que sigue.",[25,167,169],{"id":168},"por-qué-estás-pagando-en-realidad","Por qué estás pagando en realidad",[10,171,172],{},"Tienen que pasar cuatro cosas para que un backup valga algo, y cada herramienta\nde backup de Supabase de aquí hace algunas de ellas.",[174,175,176,188,194,200],"ol",{},[177,178,179,182,183,187],"li",{},[17,180,181],{},"Sacar una copia."," Nadie en esta página te cobra por esto. ",[184,185,186],"code",{},"pg_dump"," viene\ncon Postgres y la CLI de Supabase lo envuelve.",[177,189,190,193],{},[17,191,192],{},"Llevarla a un sitio al que el original no pueda arrastrarla."," Una copia\ndentro de la cuenta que protege te cubre el día que rompes tus propios datos.\nEl día que pierdes el acceso, está detrás de la misma puerta.",[177,195,196,199],{},[17,197,198],{},"Leerla de vuelta."," Un volcado escrito mientras se cortaba la conexión se ve\nexactamente igual que uno bueno hasta que intentas usarlo.",[177,201,202,205,206,209],{},[17,203,204],{},"Devolverla a su sitio."," El peor día de la vida de tu app, en el estado en\nque estés ese día, con lo que resulte que sepas de ",[184,207,208],{},"psql",".",[211,212],"diagram",{"alt":213,"caption":214,"src":215},"Cuatro paneles numerados. Uno: una base de datos con una flecha hacia un archivo. Dos: un archivo que cruza fuera de un borde discontinuo. Tres: una lupa sobre el archivo, con una marca de verificación. Cuatro: una flecha que lleva el archivo de vuelta a la base de datos.","Los cuatro pasos de los que cada vía de esta página es un trozo distinto. La mayoría de herramientas te venden los dos del medio.","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Ffour-jobs-1600x560.png",[25,217,219],{"id":218},"necesito-una-herramienta-si-ya-estoy-en-un-plan-de-pago-de-supabase","¿Necesito una herramienta si ya estoy en un plan de pago de Supabase?",[10,221,222],{},"Para el desastre corriente, no. Supabase saca copias diarias en sus planes de\npago y restaurar una son unos cuantos clics dentro del panel, que es la vía más\nrápida de volver de una migración que se ejecutó dos veces.",[10,224,225,226,231],{},"Lo que no cubre es la cuenta. Cada copia que saca Supabase vive dentro del\nproyecto que protege, así que un cobro fallido, un proyecto suspendido o un\nacceso que no puedes recuperar dejan los backups detrás de la misma puerta que\naquello para lo que estaban.\n",[227,228,230],"a",{"href":229},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","En qué plan estás y hasta dónde llega su ventana","\nse comprueba en unos dos minutos.",[10,233,234],{},"Así que actívalos, y luego decide aparte si una copia en un solo sitio es donde\nquieres parar.",[25,236,238],{"id":237},"cuándo-una-github-action-le-gana-a-pagar-a-cualquiera","Cuándo una GitHub Action le gana a pagar a cualquiera",[10,240,241],{},"Cuando tu app ya vive en un repositorio de GitHub, puedes editar un archivo YAML\nsin pavor y tu base de datos es pequeña. En ese caso la vía gratuita es una\nrespuesta de verdad. Produce el mismo volcado que produce un servicio de pago,\ncon la misma periodicidad, y nadie te está facturando.",[10,243,244,245,248],{},"Esta la documenta el propio Supabase. Un archivo de flujo de trabajo en\n",[184,246,247],{},".github\u002Fworkflows"," llama a la CLI de Supabase tres veces y vuelca tus roles, tu\nesquema y tus datos como archivos separados, en un cron que se dispara a\nmedianoche, y luego confirma los resultados de vuelta al repositorio. Su página\nlleva un solo aviso y lo lleva dos veces: nunca hagas backup de tus datos en un\nrepositorio público.",[10,250,251,252,254],{},"Esta es además la vía que arregla lo que mata a la versión a mano. Un ",[184,253,186],{},"\nen tu portátil lleva la fecha de la última vez que pensaste en ello, y el día\nque lo necesitas nunca es un día en el que estuvieras pensando en ello. Un flujo\nprogramado se ejecuta te acuerdes o no, y el archivo aterriza en los servidores\nde una empresa distinta de la que sostiene tu base de datos.",[10,256,257],{},"Cuatro cosas que te deja a ti:",[259,260,261,267,273,279],"ul",{},[177,262,263,266],{},[17,264,265],{},"Los volcados se amontonan en un repositorio",", que es un sitio hecho para\ncódigo. Un historial binario que crece es incómodo de manejar, y si alguna vez\ncae ahí un secreto de verdad, sacarlo significa reescribir el historial.",[177,268,269,272],{},[17,270,271],{},"Tu cadena de conexión vive en la CI."," Es una credencial con permiso de\nescritura completo sobre tu base de datos, guardada en un sistema que además\nejecuta código de pull requests.",[177,274,275,278],{},[17,276,277],{},"Nadie lee la copia de vuelta."," Una ejecución en verde significa que el\ntrabajo terminó sin error, que es una afirmación más pequeña que la de que el\narchivo restaura.",[177,280,281,284],{},[17,282,283],{},"Los archivos subidos necesitan un segundo trabajo."," El volcado contiene la\nfila que apunta a cada archivo. Los archivos viven en Storage y salen aparte,\nen todas las vías de aquí.",[211,286],{"alt":287,"caption":288,"src":289},"Un trabajo terminado marcado con una marca de verificación verde. Una línea sale de él y se bifurca hacia dos paneles de archivo idénticos. El archivo de arriba tiene todas sus filas llenas. El de abajo se corta tras dos filas y el resto son contornos discontinuos vacíos.","Los dos salieron de una ejecución que terminó sin error. Nada en la ejecución te dice cuál de los dos tienes.","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fgreen-run-short-file-1600x740.png",[10,291,292,293,297],{},"Si puedes vivir con esas cuatro, deja de leer aquí y ",[227,294,296],{"href":295},"\u002Fblog\u002Fsupabase-backup-github-action","ve a\nmontarlo",", con el connection string que\nGitHub alcanza y el horario que tu cupo de egress puede pagar. No cuesta nada, y\nel archivo que escribe es el mismo que escriben las vías de pago.",[25,299,301],{"id":300},"qué-añade-un-servicio-de-backup-de-pago","Qué añade un servicio de backup de pago",[10,303,304],{},"Te quita el mantenimiento. Un servicio pequeño se conecta a tu base de datos, se\nejecuta con la periodicidad que elijas, deja el archivo en un almacenamiento que\nya es tuyo y pone delante una pantalla que dice cuándo ha fallado una ejecución.",[10,306,307],{},"Supabackup es el que la gente busca por su nombre. Toma tu cadena de conexión,\nsube los volcados a una cuenta de Google Drive que tú conectas y guarda un número\nfijo de ellos antes de borrar los más antiguos. Su propia página de precios\ndescribe un plan gratuito que se ejecuta semanalmente y uno de pago que se\nejecuta a diario; lee el precio actual allí y no aquí, porque es suyo y pueden\ncambiarlo.",[10,309,310],{},"Lo que eso compra frente al archivo de flujo es algo que no se pudre. Nada de\nYAML, ningún repositorio llenándose de volcados, ningún secreto en la CI, y un\npanel que te dice que la última ejecución falló en lugar de un correo que has\naprendido a saltarte.",[10,312,313,314,318],{},"Lo que no cambia es la segunda mitad del trabajo. La copia es tu base de datos,\nel archivo es un volcado, y el día que lo necesites eres tú quien lo reproduce.\nComprueba si el servicio que elijas cubre también Storage, porque buena parte de\nesta categoría es la base de datos sola.\n",[227,315,317],{"href":316},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Restaurar un volcado tiene sus propios pasos",",\ny conviene leerlos antes de necesitarlos.",[25,320,322],{"id":321},"qué-añade-el-cuidado-gestionado-y-por-qué-pagas","Qué añade el cuidado gestionado, y por qué pagas",[10,324,325],{},"Añade las dos partes que las otras tres vías te dejan a ti: la comprobación y la\nrestauración.",[10,327,328],{},"Eso es Reeve Care, y los backups son una línea suya.",[259,330,331,337,343,349,355,361],{},[177,332,333,336],{},[17,334,335],{},"Varias copias al día",", con la periodicidad que fija tu plan y nada que\ntengas que acordarte de lanzar.",[177,338,339,342],{},[17,340,341],{},"Guardadas fuera de tu cuenta de Supabase",", cifradas, para que un proyecto\nsuspendido o un acceso que no puedes recuperar dejen las copias donde están.",[177,344,345,348],{},[17,346,347],{},"Leídas de vuelta antes de contar."," Cada copia se abre y se cuenta contra lo\nque entró, y por eso la fecha de tu panel es la de la última copia verificada y\nno la del último intento.",[177,350,351,354],{},[17,352,353],{},"Tus archivos subidos junto a tus filas",", en cuanto conectas una credencial\nde Storage, y los dos vuelven juntos.",[177,356,357,360],{},[17,358,359],{},"Más de un punto de restauración."," Cuántos depende del plan, y los más\nantiguos se van a medida que llegan otros nuevos.",[177,362,363,366],{},[17,364,365],{},"Devolverlo a su sitio es un botón",", y antes se saca una copia del estado\nactual, antes de que se reemplace nada.",[211,368],{"alt":369,"caption":370,"src":371},"Tres carriles numerados junto a la marca de Reeve Care. Uno: una cuenta de Supabase con una base de datos y una imagen subida, una marca de repetición sobre la flecha que sale, y la copia fuera con un candado, una lupa y una marca de verificación. Dos: una fila de siete copias guardadas, la más antigua dibujada discontinua y la más nueva destacada. Tres: una flecha que lleva una copia guardada de vuelta a la cuenta, desde una tarjeta con un botón.","Lo que la suscripción está haciendo mientras tú no piensas en ello. La base de datos y los archivos subidos viajan juntos, en los dos sentidos.","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcare-in-one-frame-1600x700.png",[10,373,374],{},"Por lo que pagas es por disponibilidad. Puedes empezar una restauración a\ncualquier hora, desde cualquier noche que tu plan aún guarde, sin esperar a tener\nuna tarde libre. Cada copia se cifra antes de salir de tu proyecto y se mantiene\nasí. Care Max añade soporte prioritario y a alguien que te ayude a aplicar un\narreglo.",[10,376,377,378,209],{},"Cómo sale la copia de Supabase, la comprobación que la sigue y el botón que la\ndevuelve están dibujados en\n",[227,379,381],{"href":380},"\u002Fsupabase-backups","la página de backups de Supabase",[25,383,385],{"id":384},"cómo-elegir-en-un-minuto-aproximadamente","Cómo elegir, en un minuto aproximadamente",[10,387,388],{},"Cuatro ramas, y la mayoría de la gente cae en las dos primeras.",[259,390,391,397,408,414],{},[177,392,393,396],{},[17,394,395],{},"Plan gratuito, y editar un archivo YAML no te asusta."," La GitHub Action.\nGratis, completa y tuya.",[177,398,399,402,403,407],{},[17,400,401],{},"Plan gratuito, y sí te asusta."," Un servicio de backup pequeño, o\n",[227,404,406],{"href":405},"\u002Fblog\u002Fback-up-supabase-free-tier","una copia hecha a mano desde el panel","\nhasta que estés para algo programado.",[177,409,410,413],{},[17,411,412],{},"Plan de pago, y quieres una copia fuera de la cuenta."," Cualquiera de las\ndos, encima de lo que Supabase ya saca.",[177,415,416,419],{},[17,417,418],{},"Clientes reales, archivos subidos y nadie que vaya a ejecutar una\nrestauración bajo presión."," Gestionado.",[25,421,423],{"id":422},"qué-hacer-esta-semana","Qué hacer esta semana",[425,426,427],"key-takeaways",{},[259,428,429,432,435,438,441],{},[177,430,431],{},"Activa lo que tu plan de Supabase ya incluya. No cuesta nada extra y es la vía más rápida de volver de tus propios errores.",[177,433,434],{},"Elige una vía de esta página que deje una copia fuera de tu cuenta de Supabase, y móntala hoy.",[177,436,437],{},"Sea cual sea, restaura desde ella una vez a un proyecto desechable. Hasta entonces lo que tienes es un archivo de calidad desconocida.",[177,439,440],{},"Copia tus archivos de Storage en un trabajo aparte. Ninguna vía de aquí los incluye por defecto.",[177,442,443],{},"Anota dónde aterrizan las copias y qué acceso llega a ellas. Una línea en el README de tu proyecto basta, y es la nota que estarás buscando a medianoche.",[10,445,446,447,451,452,456,457,461],{},"Si alguna vez se te ha quedado una tabla vacía por un motivo que nadie sabía\nexplicar, lee primero\n",[227,448,450],{"href":449},"\u002Fblog\u002Fversion-history-is-not-a-backup","qué restaura de verdad un rollback","\ny después\n",[227,453,455],{"href":454},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","tres formas de hacer backup de una base de datos Supabase","\npara saber qué contiene una copia y qué deja fuera. Y si prefieres ver qué más\ntienes abierto en tu app antes de decidir dónde gastar,\n",[227,458,460],{"href":459},"\u002Fsecurity-scanner","el escaneo gratuito"," lee tu sitio en vivo en unos 20\nsegundos.",{"title":463,"searchDepth":464,"depth":464,"links":465},"",3,[466,468,469,470,471,472,473,474],{"id":27,"depth":467,"text":28},2,{"id":168,"depth":467,"text":169},{"id":218,"depth":467,"text":219},{"id":237,"depth":467,"text":238},{"id":300,"depth":467,"text":301},{"id":321,"depth":467,"text":322},{"id":384,"depth":467,"text":385},{"id":422,"depth":467,"text":423},"Backups","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcover-1200x630.png","Una base de datos junto a cuatro copias guardadas de ella en fila, con la tercera de las cuatro elevada sobre las demás.","Cuatro tipos de herramienta de backup de Supabase, qué copia cada una y cuándo una GitHub Action gratuita le gana a pagar a cualquiera, nosotros incluidos.",false,"md",[482,485,488,491,494],{"q":483,"a":484},"¿Cuál es la mejor herramienta de backup de Supabase?","No hay una sola respuesta, porque las cuatro vías cubren partes distintas del mismo trabajo. Los backups del propio Supabase son los más rápidos de activar y viven dentro de la cuenta que protegen. Una GitHub Action es gratuita y completa, y deja contigo la comprobación y la restauración. Un servicio de backup pequeño te quita el mantenimiento. Un servicio gestionado añade la verificación, tus archivos subidos y una restauración que puede ejecutar otra persona. Elige según cuál de esas partes quieras dejar de sostener.",{"q":486,"a":487},"¿Existe una herramienta de backup de Supabase gratuita?","Sí, más de una. La CLI de Supabase vuelca tu base de datos a un archivo en tu propio ordenador y no cuesta nada. Una GitHub Action que ejecuta esa misma CLI de forma programada tampoco cuesta nada, siempre que el repositorio en el que escribe sea privado. Varios servicios de pago tienen además un plan gratuito, normalmente un trabajo con periodicidad semanal. Lo que no incluye ninguna vía gratuita es alguien que compruebe que el archivo abre.",{"q":489,"a":490},"¿Puedo hacer backup de Supabase con una GitHub Action?","Sí, y el propio Supabase documenta el flujo de trabajo. Llama a la CLI tres veces para volcar tus roles, tu esquema y tus datos por separado, en un cron que se dispara a medianoche, y confirma los archivos de vuelta al repositorio. Su página lleva un solo aviso y lo lleva dos veces: nunca hagas backup de tus datos en un repositorio público. Conviene decidir pronto si un montón creciente de volcados tiene sitio en un repositorio de código o si ese mismo flujo debería subirlos a otra parte.",{"q":492,"a":493},"¿Las herramientas de backup de Supabase incluyen los archivos de Storage?","Algunas sí y muchas no, así que averígualo antes de darlo por hecho. Un volcado de base de datos contiene la fila que anota dónde estaba cada archivo y nada del archivo en sí, y así es como una restauración termina limpiamente y deja una app llena de imágenes rotas. Elijas la vía que elijas, comprueba si los archivos subidos forman parte de ella, y si no, cópialos en un trabajo aparte.",{"q":495,"a":496},"¿En qué debo fijarme al elegir una herramienta de backup de Supabase?","Cuatro preguntas, en este orden. ¿La copia sale de tu cuenta de Supabase, o se queda dentro de aquello que protege? ¿Algo lee la copia de vuelta, o una ejecución en verde cuenta como éxito? ¿Tus archivos subidos forman parte de ella? Y el día que la necesites, ¿quién ejecuta la restauración? El precio va al final y no al principio, porque las vías que no cuestan nada son realmente buenas en la primera mitad de esa lista.","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",[499,500,501,502,503],"herramienta backup supabase","supabackup","backup automatico supabase","servicio de backup supabase","comparativa herramientas backup supabase",{},true,"Herramientas de backup de Supabase comparadas","\u002Fblog\u002Fsupabase-backup-tools-compared","2026-09-01",{"title":5,"description":478},"blog\u002Fsupabase-backup-tools-compared",[512,513,514],"Una herramienta de backup de Supabase vale su precio cuando la parte que falla es que te acuerdes. Todas las vías de esta página producen el mismo archivo.","Son cuatro: los backups del propio Supabase, una GitHub Action programada, un servicio de backup pequeño y el cuidado gestionado. Se diferencian en cuánto del trabajo sigue siendo tuyo.","Ninguna cuenta para nada hasta que alguien ha leído una copia de vuelta, y esa es la fila que falta en todas las listas de funciones.","HCqb8lkJC3SeZYr2TZ45-1As3RaKIdn-kjiP1CKsjpA",[517,524,530,536,542,548,554,560,566,572,578,584,590,596,601,607,612,618,624,630,636,642,648,654,660,666,672,678,684,690,696,702,708,714,720,726,732,738,744,750,756,757,763,768,774,780,786,792,798,803,809,815,821,827,832,838,843,849,853,858],{"path":518,"title":519,"description":520,"published":521,"category":522,"image":523,"draft":479},"\u002Fblog\u002Fbase44-security-scan","Escaneo de seguridad de Base44: lo que solo él ve","El escaneo de seguridad de Base44 revisa siete tipos de problema desde dentro. Esta es la mitad que lee y nadie más puede leer, y la mitad que nunca mira.","2026-10-10","Fundamentos de seguridad","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":525,"title":526,"description":527,"published":528,"category":522,"image":529,"draft":479},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Tu clave API se filtró. El orden en el que hay que actuar","Una clave API se filtró y no sabes por dónde empezar. No todas las claves de tu frontend lo son, y el orden importa más que la velocidad.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":531,"title":532,"description":533,"published":534,"category":522,"image":535,"draft":479},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" sin desactivar RLS","\"Infinite recursion detected in policy for relation\" significa que tu policy preguntó a la tabla que protege. Así se rompe el círculo.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":537,"title":538,"description":539,"published":540,"category":522,"image":541,"draft":479},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" en Supabase, y el arreglo equivocado","\"No API key found in request\" significa que tu petición llegó a Supabase sin clave. Casi todas las respuestas apuntan a las reglas de tu base de datos.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":543,"title":544,"description":545,"published":546,"category":522,"image":547,"draft":479},"\u002Fblog\u002Fis-base44-safe","¿Es seguro Base44? Lo que vimos en 5.442 apps Base44","¿Es seguro Base44? Pasamos nueve comprobaciones a 5.442 apps Base44 en producción. Casi todas sacaron B por motivos que su dueño nunca eligió.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":549,"title":550,"description":551,"published":552,"category":522,"image":553,"draft":479},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Ocultar una clave API: muévela a una Edge Function de Supabase","Ocultar una clave API significa sacarla del navegador, y una Edge Function de Supabase es el sitio más pequeño donde ponerla. Dos pasos importan más.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":555,"title":556,"description":557,"published":558,"category":522,"image":559,"draft":479},"\u002Fblog\u002Fenv-file-exposed-on-your-server","¿Tu archivo .env está expuesto? Las doce rutas a revisar","¿Tu archivo .env está expuesto en tu propio servidor web? Doce direcciones te lo dicen, y un acierto significa que todo lo que contiene ya es público.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":561,"title":562,"description":563,"published":564,"category":522,"image":565,"draft":479},"\u002Fblog\u002Fis-v0-safe","Seguridad de v0: las 1.790 aplicaciones escaneadas sacaron una A","Seguridad de v0, medida en 1.790 aplicaciones v0 en vivo: todas sacaron A. Solo 17 nombraban una base de datos, y eso es casi todo lo que mide la A.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":567,"title":568,"description":569,"published":570,"category":522,"image":571,"draft":479},"\u002Fblog\u002Fis-bolt-safe","¿Es seguro Bolt? Lo que vimos en 1.123 aplicaciones Bolt","¿Es seguro Bolt? Pasamos 1.123 aplicaciones Bolt en vivo por nueve comprobaciones. El hosting salió limpio. Los hallazgos eran claves y tablas abiertas dentro.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":573,"title":574,"description":575,"published":576,"category":522,"image":577,"draft":479},"\u002Fblog\u002Fis-supabase-down-or-your-app","¿Supabase está caído o es tu app? Cómo distinguirlo","¿Supabase está caído o es tu app? Un proyecto pausado, una base de datos llena y un fallo tuyo parecen lo mismo. Cuatro comprobaciones los separan.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":579,"title":580,"description":581,"published":582,"category":522,"image":583,"draft":479},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","¿Supabase cifra mis datos? Sí. Esto es lo que detiene","¿Supabase cifra los datos? Sí: AES-256 en reposo, TLS en tránsito, SOC 2 e ISO 27001. Qué cubre cada uno, y la fuga que ninguno de ellos detiene.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":585,"title":586,"description":587,"published":588,"category":522,"image":589,"draft":479},"\u002Fblog\u002Fsupabase-free-plan-limits","¿Cuánto cuesta Supabase? Los límites del plan gratuito","Los límites del plan gratuito de Supabase: 500 MB de base de datos, 5 GB de egress y ningún backup. Qué pasa en cada uno y qué cambia Pro por $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":591,"title":592,"description":593,"published":594,"category":475,"image":595,"draft":479},"\u002Fblog\u002Ftest-your-supabase-backup","Prueba tu backup de Supabase antes del día que lo necesites","Cómo probar tu backup de Supabase: restaurarlo en un proyecto de prueba, contar filas, iniciar sesión y buscar la línea que le falta a un archivo cortado.","2026-09-28","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":295,"title":597,"description":598,"published":599,"category":475,"image":600,"draft":479},"Backup gratis de Supabase con una GitHub Action, y la trampa","Un backup de Supabase con GitHub Action es gratis y sirve a muchas apps. El workflow, el connection string correcto y el egress de cada ejecución.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":602,"title":603,"description":604,"published":605,"category":475,"image":606,"draft":479},"\u002Fblog\u002Fdownload-your-supabase-backup","Por qué no puedes descargar tu backup de Supabase","No puedes descargar tu backup de Supabase en un proyecto actual: la copia diaria es una instantánea física. Cómo comprobarlo y tener tu propia copia.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":608,"title":609,"description":610,"published":605,"category":522,"image":611,"draft":479},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": el grant que falta","Desde el 30 de octubre, una tabla nueva de Supabase responde \"permission denied for table\" hasta que le das acceso. El grant del email es la mitad del arreglo.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":613,"title":614,"description":615,"published":616,"category":522,"image":617,"draft":479},"\u002Fblog\u002Fopen-api-endpoint-exposed","¿Un endpoint de API abierto es un problema? Mira el JSON","Tu escaneo señaló un endpoint de API abierto. Que importe depende de lo que devolvió, y la mayoría de los que encontramos eran de la plataforma.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":619,"title":620,"description":621,"published":622,"category":522,"image":623,"draft":479},"\u002Fblog\u002Flovable-security-scan","Escaneo de seguridad de Lovable: lo que no puede probar","Escaneo de seguridad de Lovable: qué revisan el Quick scan y el Deep scan, cuándo corre cada uno, y lo único que ningún escaneo desde dentro puede probar.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":625,"title":626,"description":627,"published":628,"category":475,"image":629,"draft":479},"\u002Fblog\u002Fsupabase-backup-auth-users","Por qué tu dump de Supabase no tiene usuarios dentro","Ejecuta supabase db dump por sí solo y obtienes la forma de tu base de datos y ninguna de sus filas, sin el esquema auth donde viven tus usuarios.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":631,"title":632,"description":633,"published":634,"category":522,"image":635,"draft":479},"\u002Fblog\u002Fdomain-and-certificate-expiry","Dominio caducado, web caída: qué pasa a partir de ahora","Tu dominio caducó y tu web está caída. Aquí tienes el reloj que acaba de arrancar, por qué el certificado es el menor problema, y cómo comprobar ambos.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":637,"title":638,"description":639,"published":640,"category":522,"image":641,"draft":479},"\u002Fblog\u002Fis-lovable-safe","¿Es seguro Lovable? Lo que vimos en 18.554 aplicaciones Lovable","¿Es seguro Lovable? Pasamos 18.554 aplicaciones Lovable por nueve comprobaciones. La plataforma fue la más limpia de cinco. Los hallazgos estaban dentro.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":643,"title":644,"description":645,"published":646,"category":522,"image":647,"draft":479},"\u002Fblog\u002Fvibe-coded-app-security-checklist","La lista de seguridad del vibe coding, en nueve comprobaciones","Una lista de seguridad del vibe coding con nueve puntos, cada uno verificable en tu app desde fuera por cualquiera, y cada uno con una prueba de una línea.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":649,"title":650,"description":651,"published":652,"category":522,"image":653,"draft":479},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Una clave secreta de Stripe en tu frontend puede mover dinero","Una clave secreta de Stripe expuesta en tu frontend puede reembolsar, cobrar y leer cada ficha de cliente que tienes. Tu clave pk_live_ sí debe estar ahí.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":655,"title":656,"description":657,"published":658,"category":522,"image":659,"draft":479},"\u002Fblog\u002Fvite-and-next-public-env-vars","Variables de entorno de Vite expuestas: el prefijo dice publica esto","Variables de entorno de Vite expuestas en tu app: hicieron lo que pedía el prefijo. VITE_ y NEXT_PUBLIC_ significan publica esto, y la IA nunca supo el coste.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":661,"title":662,"description":663,"published":664,"category":522,"image":665,"draft":479},"\u002Fblog\u002Fbase44-source-maps","Seguridad en Base44: qué marca un escaneo y qué te toca arreglar a ti","Seguridad en Base44 en 5.438 apps escaneadas: tres hallazgos en casi todas son de la plataforma, el source map es la insignia de Base44 y lo tuyo es poco.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":667,"title":668,"description":669,"published":670,"category":522,"image":671,"draft":479},"\u002Fblog\u002Fis-cursor-ai-safe","¿Es seguro Cursor AI? El editor, el código y la app que publicaste","¿Es seguro Cursor AI? Tres preguntas en una búsqueda: qué guarda Cursor, en qué falla el código que escribe y si la app que publicaste está abierta.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":673,"title":674,"description":675,"published":676,"category":522,"image":677,"draft":479},"\u002Fblog\u002Fis-replit-safe","¿Es seguro Replit? Lo que vimos en 3.042 aplicaciones Replit en vivo","¿Es seguro Replit? Pasamos 3.042 aplicaciones Replit en vivo por nueve comprobaciones externas. Los hallazgos estaban en la aplicación publicada, no en el host.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":679,"title":680,"description":681,"published":682,"category":475,"image":683,"draft":479},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: tu copia de la base no tiene archivos","Un Supabase storage backup es una tarea aparte. Las copias de la base guardan la lista de tus archivos y ninguno de ellos, así que cada upload queda roto.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":685,"title":686,"description":687,"published":688,"category":475,"image":689,"draft":479},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery de Supabase: precio y límites","El point-in-time recovery de Supabase rebobina tu base de datos a cualquier segundo de la última semana. Cuesta $100 al mes sobre Pro y solo cubre la base.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":691,"title":692,"description":693,"published":694,"category":475,"image":695,"draft":479},"\u002Fblog\u002Fsupabase-project-paused-recover","¿Proyecto de Supabase pausado? Tus datos siguen ahí","Supabase pausó tu proyecto tras una semana sin actividad. No se ha borrado nada, Restaurar está junto al nombre y tienes un año antes de que eso cambie.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":697,"title":698,"description":699,"published":700,"category":522,"image":701,"draft":479},"\u002Fblog\u002Fsafest-ai-app-builder","¿Qué builder de apps con IA es más seguro? 30.998 apps escaneadas","¿Qué builder de apps con IA es más seguro? Escaneamos 30.998 apps activas de Lovable, Base44, Replit, v0 y Bolt. El builder no es lo que decide tu nota.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":703,"title":704,"description":705,"published":706,"category":522,"image":707,"draft":479},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Activa Row Level Security en cada tabla de Supabase y compruébalo","Activar Row Level Security en Supabase sin política cierra la tabla del todo. Una política sin el interruptor no hace nada. Aquí tienes el SQL y la prueba.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":709,"title":710,"description":711,"published":712,"category":522,"image":713,"draft":479},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": lo que el aviso no ve","Supabase marca \"RLS disabled in public\" como error. No dice nada de la política de lectura que deja tu tabla igual de abierta a cualquiera.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":715,"title":716,"description":717,"published":718,"category":522,"image":719,"draft":479},"\u002Fblog\u002Frotate-supabase-service-role-key","Cómo rotar una clave service_role de Supabase filtrada","Supabase dice que primero cierres la fuga. Otras guías dicen que rotes ya. Cuál es lo correcto depende de dónde se filtró tu clave service_role.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":721,"title":722,"description":723,"published":724,"category":522,"image":725,"draft":479},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Escáneres de seguridad vibe coding comparados, el nuestro incluido","El mejor escáner de seguridad para vibe coding depende de tres preguntas que ninguna lista de funciones responde. Diez herramientas, con precios.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":727,"title":728,"description":729,"published":730,"category":522,"image":731,"draft":479},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: haz tú mismo las cinco comprobaciones","Un Supabase security checker lee tu app publicada en lugar de la configuración de tu proyecto. Estas son las cinco comprobaciones y cómo hacer cada una.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":733,"title":734,"description":735,"published":736,"category":522,"image":737,"draft":479},"\u002Fblog\u002Fvibe-coding-security-scanner","Escáner de seguridad para vibe coding: qué se le escapa","Un escáner de seguridad para vibe coding lee tu app en vivo desde fuera. Qué cubre eso, las cuatro cosas que no puede ver y cómo leer el resultado.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":739,"title":740,"description":741,"published":742,"category":522,"image":743,"draft":479},"\u002Fblog\u002Fmissing-security-headers","Faltan cabeceras de seguridad: cuándo importa de verdad","Que falten cabeceras de seguridad es el hallazgo que más imprime nuestro escáner. Contra qué protegen y cuándo son la línea menos urgente de tu informe.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":745,"title":746,"description":747,"published":748,"category":522,"image":749,"draft":479},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Tu clave de API de OpenAI está expuesta en tu frontend. Rótala.","Una clave de API de OpenAI expuesta en tu frontend no se puede atar a un dominio. Rótala hoy, mueve la llamada a tu servidor y limita el gasto.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":751,"title":752,"description":753,"published":754,"category":522,"image":755,"draft":479},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Clave de API expuesta en el frontend: qué llevan 30.998 apps","Una clave de API expuesta en tu frontend suele ser una clave de Google Maps. Escaneamos 30.998 apps vibe-coded y contamos qué secretos se filtran de verdad.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":507,"title":5,"description":478,"published":508,"category":475,"image":497,"draft":479},{"path":758,"title":759,"description":760,"published":761,"category":522,"image":762,"draft":479},"\u002Fblog\u002Freplit-secrets-explained","Cómo usar secrets en Replit, y qué se publica de todos modos","Cómo usar secrets en Replit: añadir uno, leerlo y arreglar las dos causas del undefined. Y las claves que la herramienta Secrets no puede mantener privadas.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":405,"title":764,"description":765,"published":766,"category":475,"image":767,"draft":479},"Backups del plan gratuito de Supabase: cómo hacer uno sin terminal","No hay backups en el plan gratuito de Supabase: la copia tienes que hacerla tú. Cómo sacarla desde el panel y qué deja fuera la vía CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":769,"title":770,"description":771,"published":772,"category":522,"image":773,"draft":479},"\u002Fblog\u002Fis-supabase-secure","¿Supabase es seguro? Sí. Tu proyecto es otra pregunta","¿Supabase es seguro? La plataforma está auditada, cifrada y sometida a pentests. Su propia documentación dice dónde termina eso y empiezan tus ajustes.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":775,"title":776,"description":777,"published":778,"category":522,"image":779,"draft":479},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Dónde están tus claves API de Supabase: anon, service_role y URL","La URL del proyecto, la clave anon y la clave service_role están en una sola página del panel. Aquí tienes dónde está, y cuál de los cuatro va en tu app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":781,"title":782,"description":783,"published":784,"category":522,"image":785,"draft":479},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy en Supabase. ¿Y ahora?","\"New row violates row-level security policy\" significa que Supabase rechazó una escritura. El arreglo rápido vuelve a abrir la tabla para cualquiera.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":787,"title":788,"description":789,"published":790,"category":522,"image":791,"draft":479},"\u002Fblog\u002Fcors-wildcard-security-risk","¿Es un comodín CORS un riesgo de seguridad? Casi nunca.","¿Es un comodín CORS un riesgo de seguridad? Casi siempre es el ajuste por defecto de tu builder y no entrega nada que tu servidor no diera ya a cualquiera.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":793,"title":794,"description":795,"published":796,"category":475,"image":797,"draft":479},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Supabase branching no es un backup. Solo va hacia adelante.","Por qué el branching de Supabase no es un backup: una rama arranca sin tus datos y un merge solo mueve el esquema. Para qué sirve y qué usar en su lugar.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":316,"title":799,"description":800,"published":801,"category":475,"image":802,"draft":479},"Cómo restaurar un backup de Supabase, y qué se rompe después","Cómo restaurar un backup de Supabase desde el panel o desde un archivo de volcado, qué reemplaza la restauración y por qué tu app puede seguir rota al terminar.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":804,"title":805,"description":806,"published":807,"category":522,"image":808,"draft":479},"\u002Fblog\u002Fsupabase-storage-bucket-public","Tu bucket de Supabase Storage es público. ¿Es un problema?","Un bucket público de Supabase Storage significa que quien tenga la URL de un archivo puede abrirlo. No significa que alguien pueda listar lo que hay dentro.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":810,"title":811,"description":812,"published":813,"category":522,"image":814,"draft":479},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","¿Es un problema una clave de API de Google en tu frontend?","Una clave de API de Google en tu frontend es la clave que más encuentra nuestro escáner, y casi siempre no pasa nada. Un ajuste gratuito decide cuál es cuál.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":816,"title":817,"description":818,"published":819,"category":475,"image":820,"draft":479},"\u002Fblog\u002Fai-agent-deleted-my-database","Un agente de IA borró mis datos de Supabase. ¿Qué puedo recuperar?","Un agente de IA borró datos de tu base. Lo que puedes recuperar ya estaba decidido antes de que se ejecutara, y los próximos minutos deciden el resto.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":822,"title":823,"description":824,"published":825,"category":522,"image":826,"draft":479},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","¿Puede cualquiera leer tu base de datos Supabase? 3.680 apps","¿Puede cualquiera leer tu base de datos Supabase sin iniciar sesión? Escaneamos 30.998 apps activas hechas con builders de IA y medimos cuántas dicen que sí.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":828,"title":829,"description":830,"published":825,"category":522,"image":831,"draft":479},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps expuestos: tu app está publicando su código original","Un source map expuesto deja que cualquiera lea el código original de tu app, comentarios incluidos. La comprobación de 30 segundos y lo que de verdad importa.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":833,"title":834,"description":835,"published":836,"category":522,"image":837,"draft":479},"\u002Fblog\u002Fsupabase-new-api-keys","Las nuevas claves de API de Supabase: ¿cuál va en tu app?","Supabase sustituyó anon y service_role por claves publicables y secretas. ¿Cuál pertenece a tu app y cuál no debe estar nunca?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":229,"title":839,"description":840,"published":841,"category":475,"image":842,"draft":479},"¿Supabase respalda mi base de datos? Depende de tu plan.","¿Supabase respalda tu base de datos? A diario en los planes de pago, y nada en el gratuito. Cómo saber cuál tienes y qué es lo que esa copia no cubre.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":844,"title":845,"description":846,"published":847,"category":522,"image":848,"draft":479},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security está activado. Tu tabla sigue pública.","Activar Supabase Row Level Security no protege una tabla. Lo hacen tus políticas, y la que arregló tu app rota puede dejar entrar a cualquiera.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":449,"title":850,"description":851,"published":847,"category":475,"image":852,"draft":479},"El historial de versiones no es un backup. No recupera una tabla.","Lovable y Bolt guardan un historial de versiones de tu código. Tu base de datos es un servicio aparte, y volver atrás no te devuelve tus datos.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":454,"title":854,"description":855,"published":856,"category":475,"image":857,"draft":479},"Tres formas de respaldar una base Supabase, y qué falta en cada una","El panel, pg_dump y un servicio gestionado. Qué guarda de verdad cada uno, qué deja fuera sin avisar y cuál sobrevive a perder la cuenta.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":859,"title":860,"description":861,"published":856,"category":522,"image":862,"draft":479},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Qué claves de API son seguras en el navegador y cuáles no","Tu clave anon de Supabase está pensada para ser pública. Tu clave service_role no, y se salta todas las reglas que pongas. Cómo distinguirlas.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791618971588]