SaaS por 0€/Mes usando Git como Base de Datos

Por un familiar me surgió la necesidad de desarrollar un (Software as a Service) SaaS de mensajería a clientes vía SMS.

En su día le pregunté a Chatgpt un stack de 2025 para hacer dicha aplicación. Su primera opción fue:

Next.js + Tailwind + shadcn/ui + TypeScript + Prisma + PostgreSQL + Twilio.

No sé usar ni la mitad de las herramientas🤣, así que tras discutir con él y mi propio criterio, llegamos a un acuerdo del stack que usaría, el cuál es poco ortodoxo:

Tech Propósito
Html, Js, Css Frontend
Python Lógica de la app
Flask Endpoints
Render Deploy
Git BBDD, Autenticación
Twilio Envío de SMS
(Extra) Strato Dominio (0,96€/Año)
PythonAnywhere Cron Job

Si quieres hacer una aplicación escalable que soporte miles de usuarios concurrentes y con grandes cantidades de datos, seguramente Git no sea la mejor opción. Pero en mi caso, lo único a guardar son archivos de texto que se actualizan pocas veces al día, haciendo de Git una opción jugosa. Almaceno todo en un repositorio privado de Github (distinto al de la aplicación), por lo que además es fácil visualizar las actualizaciones de los datos.

Github dispone de una API Rest para hacer todas las operaciones que harías desde tu terminal, así que puedes hacer fácilmente métodos para subir o descargar datos.

La autenticación de usuarios también está hecha mediante git. Los usuarios pueden registrarse mediante su correo electrónico. Al hacerlo, se crea una carpeta en el repositorio en la que se guardarán todos los datos, entre ellos un archivo 'credentials.txt' que incluirá su correo y su contraseña hasheada.

Para hostear la aplicación decidí usar Render en su nivel gratuito, ya que tengo experiencia previa y es fácil de usar. Para cambiar el dominio, lo adquirí previamente en Strato (0,96€ por 1 año) y seguí los pasos de Render, bastante sencillos.

El valor de la aplicación proviene de un archivo de python que debe ejecutarse diariamente para mandar los SMS. Tras barajar opciones, decidí clonar el repositorio de Github en la plataforma de PythonAnywhere en su nivel gratuito y añadir un cron-job diario que trae los datos de la última versión de github (git pull) y luego ejecuta el archivo necesario. Esta parte fue bastante divertida y útil porque una vez configurado, me puedo olvidar completamente de ella. Aprendí mucho sobre Bash, cómo gestionar un servidor web, y a usar los Personal Access Tokens (PAT) para acceder a repositorios privados.

Los SMS se mandan mediante Twilio, una plataforma que dispone de API Rest para mandar los mensajes. En mi opinión, sus servicios son bastante liosos y podrían hacer las cosas mejor. Sus herramientas son poco intuitivas de usar, y aún no he sido capaz de cambiar el nombre del remitente, por lo que el destinatario recibe mensajes de un número estadounidense.

Lo único que queda por hacer es añadir pasarelas de pago para conseguir revenue, pero aún tengo que estudiarlo mejor ya que no me quiero meter en un lío con hacienda, aunque seguramente acabe usando Stripe.

Podría explayarme más acerca de cómo hice cada cosa pero para quién tenga experiencia en este tema le servirá más bien poco, y quien tenga poca experiencia seguramente no esté leyendo esto, así que lo dejo por aquí. Pero si tienes cualquier duda me puedes hablar por Linkedin, Correo o similares.

Por último, si os habéis quedado con ganas de saber cúal es la aplicación, se trata de www.agendado.es, que sirve para recordar citas a clientes con notificaciones automáticas mediante SMS el día anterior. Así de simple. En los próximos días haré más hincapié en la aplicación en sí.