<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Frank Collado</title>
    <description>The latest articles on DEV Community by Frank Collado (@frankcollado).</description>
    <link>https://dev.to/frankcollado</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4122585%2F5790ca31-4609-4964-958d-73443a044d8a.png</url>
      <title>DEV Community: Frank Collado</title>
      <link>https://dev.to/frankcollado</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frankcollado"/>
    <language>en</language>
    <item>
      <title>Show DEV: Boniatillo - La red social cubana que permite monetizar tu contenido (construida en PHP)</title>
      <dc:creator>Frank Collado</dc:creator>
      <pubDate>Sat, 12 Sep 2026 20:47:51 +0000</pubDate>
      <link>https://dev.to/frankcollado/show-dev-boniatillo-la-red-social-cubana-que-paga-por-publicar-construida-en-php-56f7</link>
      <guid>https://dev.to/frankcollado/show-dev-boniatillo-la-red-social-cubana-que-paga-por-publicar-construida-en-php-56f7</guid>
      <description>&lt;p&gt;Hola comunidad 👋&lt;/p&gt;

&lt;p&gt;Soy Frank, desarrollador desde La Habana, Cuba. Quiero compartir con ustedes &lt;strong&gt;Boniatillo&lt;/strong&gt;, una red social completa que construí desde cero para resolver un problema real: las plataformas extranjeras no funcionan bien en Cuba.&lt;/p&gt;




&lt;h2&gt;
  
  
  El problema
&lt;/h2&gt;

&lt;p&gt;En Cuba tenemos varios desafíos que hacen casi imposible usar redes sociales tradicionales:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Conexiones lentas e inestables&lt;/strong&gt; (a veces 2G, a veces se corta)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Datos móviles caros&lt;/strong&gt; (cada MB cuenta)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sin acceso a pasarelas de pago internacionales&lt;/strong&gt; (Stripe, PayPal no funcionan)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pagos solo por Transfermóvil&lt;/strong&gt; (el sistema de pago cubano)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apagones frecuentes&lt;/strong&gt; que cortan la conexión&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Las redes sociales como Facebook, Twitter o Instagram consumen muchos datos, tienen interfaces pesadas y no aceptan pagos cubanos.&lt;/p&gt;




&lt;h2&gt;
  
  
  La solución: Boniatillo
&lt;/h2&gt;

&lt;p&gt;Boniatillo es una red social de microblogging donde los usuarios pueden:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📝 Publicar posts (hasta 1,000 caracteres para Premium)&lt;/li&gt;
&lt;li&gt;📷 Subir hasta 4 imágenes por post&lt;/li&gt;
&lt;li&gt;🎬 Publicar videos cortos de 15 segundos&lt;/li&gt;
&lt;li&gt;📊 Crear encuestas&lt;/li&gt;
&lt;li&gt;💎 Recibir &lt;strong&gt;propinas por Transfermóvil&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🔒 Monetizar su perfil con &lt;strong&gt;suscripciones&lt;/strong&gt; a contenido exclusivo&lt;/li&gt;
&lt;li&gt;📈 Promocionar posts con Destacado, Viral o Foco&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todo funciona con &lt;strong&gt;conexiones lentas&lt;/strong&gt; y &lt;strong&gt;sin comisiones&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stack técnico
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Componente&lt;/th&gt;
&lt;th&gt;Tecnología&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;PHP 8.3 (sin framework)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base de datos&lt;/td&gt;
&lt;td&gt;MySQL / MariaDB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Servidor&lt;/td&gt;
&lt;td&gt;Nginx + PHP-FPM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Panel&lt;/td&gt;
&lt;td&gt;HestiaCP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CDN / Seguridad&lt;/td&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Procesamiento de imágenes&lt;/td&gt;
&lt;td&gt;GD + WebP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Procesamiento de video&lt;/td&gt;
&lt;td&gt;FFmpeg&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;td&gt;SMTP propio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;HTML + CSS + JavaScript vanilla&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;No usé ningún framework&lt;/strong&gt; (ni Laravel, ni Symfony). Todo es PHP puro para mantener el código ligero y optimizado para conexiones lentas.&lt;/p&gt;




&lt;h2&gt;
  
  
  Retos técnicos interesantes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Optimización de imágenes
&lt;/h3&gt;

&lt;p&gt;Los usuarios suben fotos de 2-4 MB. Las convierto automáticamente a &lt;strong&gt;WebP&lt;/strong&gt; y las redimensiono a un ancho máximo de 700px. Resultado:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imagen original: 2-4 MB&lt;/li&gt;
&lt;li&gt;Imagen optimizada: &lt;strong&gt;20-80 KB&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Ahorro: &lt;strong&gt;95-99%&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Videos ligeros
&lt;/h3&gt;

&lt;p&gt;Uso &lt;strong&gt;FFmpeg&lt;/strong&gt; para comprimir videos a 480p con CRF 35 y audio de 48kbps. Un video de 15 segundos termina pesando &lt;strong&gt;150-300 KB&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Detecto la orientación del video (vertical/horizontal) y ajusto la escala para que el lado más corto sea siempre 480px.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Optimización para conexiones lentas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Uso de &lt;strong&gt;OPcache&lt;/strong&gt; (tasa de aciertos: 99.91%)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minificación de HTML/CSS&lt;/strong&gt; sin librerías externas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compresión Gzip&lt;/strong&gt; en &lt;code&gt;.htaccess&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lazy loading&lt;/strong&gt; en imágenes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Carga diferida&lt;/strong&gt; de fuentes y analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Pagos con Transfermóvil
&lt;/h3&gt;

&lt;p&gt;Cuba no tiene Stripe ni PayPal. Los pagos se hacen por &lt;strong&gt;Transfermóvil&lt;/strong&gt; (el sistema de pago nacional) usando un flujo manual:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;El usuario hace la transferencia&lt;/li&gt;
&lt;li&gt;Ingresa el número de transacción&lt;/li&gt;
&lt;li&gt;El admin verifica y aprueba&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No es ideal, pero es lo que funciona en Cuba.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Autenticación con Google
&lt;/h3&gt;

&lt;p&gt;Implementé login con Google usando Google Identity Services (GSI) con verificación del JWT desde el servidor con cURL.&lt;/p&gt;




&lt;h2&gt;
  
  
  Características destacadas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Autenticación&lt;/strong&gt; con email/password y Google OAuth&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Posts&lt;/strong&gt; con texto, imágenes, videos y encuestas&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Sistema de propinas&lt;/strong&gt; por Transfermóvil&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Suscripciones&lt;/strong&gt; para contenido exclusivo&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Sistema de promociones&lt;/strong&gt; (Destacado, Viral, Foco)&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Mensajería interna&lt;/strong&gt; entre usuarios&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Notificaciones&lt;/strong&gt; en tiempo real&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Panel de admin&lt;/strong&gt; completo&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Blog&lt;/strong&gt; con SEO optimizado&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;API REST&lt;/strong&gt; para usuarios Premium&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Sistema de reportes&lt;/strong&gt; y moderación&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Retos y recompensas&lt;/strong&gt; para nuevos usuarios&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Resultados actuales
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;👥 &lt;strong&gt;150+ usuarios registrados&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Cientos de posts publicados&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;💰 &lt;strong&gt;Primeras suscripciones Premium vendidas&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;Crecimiento orgánico&lt;/strong&gt; de 3-4 usuarios por día&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Lo que aprendí
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No necesitas frameworks&lt;/strong&gt; para construir una red social completa en PHP. El código vanilla es más rápido y ligero.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;La optimización importa más que las features&lt;/strong&gt;. En Cuba, un sitio que tarda 3 segundos en cargar está muerto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare es esencial&lt;/strong&gt; para bloquear bots y ataques que llegan constantemente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FFmpeg y GD&lt;/strong&gt; son herramientas increíbles para procesar multimedia sin depender de servicios externos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Los pagos locales son un reto enorme&lt;/strong&gt; cuando no tienes acceso a Stripe.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Enlaces
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Sitio web&lt;/strong&gt;: &lt;a href="https://boniatillo.org" rel="noopener noreferrer"&gt;boniatillo.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Blog técnico&lt;/strong&gt;: &lt;a href="https://boniatillo.org/blog" rel="noopener noreferrer"&gt;boniatillo.org/blog&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ¿Qué sigue?
&lt;/h2&gt;

&lt;p&gt;Planeo añadir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Podcast&lt;/li&gt;
&lt;li&gt;Radio en vivo&lt;/li&gt;
&lt;li&gt;Tiendas para usuarios Premium&lt;/li&gt;
&lt;li&gt;API pública completa&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si tienes alguna sugerencia o pregunta sobre cómo construí algo específico, ¡escríbeme en los comentarios! Especialmente si estás construyendo para mercados con restricciones similares.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Construido con ❤️ desde La Habana, Cuba.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>php</category>
      <category>webdev</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
