Supabase: Una alternativa a Firebase con el poder de SQL

Fabricio Murillo
10 min readMay 13, 2021

--

Hace unos meses comencé un proyecto en firebase, me gustó mucho el ambiente y la facilidad para poder crear una aplicación rápidamente. El problema vino cuando quise saber cuantos documentos tenía en una colección y no poder usar una función count provista por firebase. A finales del año pasado conocí sobre supabase y me impresionó, en ese momento no tenía algunos productos que al día de hoy le dan más poder. Repasa conmigo a lo largo de este artículo lo rápido que puedes crear un backend y disfruta lo que también me impresionó a mi.

¿Qué es supabase?

Supabase es un proyecto de código abierto creado por Supabase Inc que es una empresa incubada en Y Combinator (Aquí potenciaron startups como Platzi, Stripe, Dropbox, entre otras que están teniendo éxito y tu conoces). Asimismo tiene como inversores a personas que tienen un papel relevante en Silicon Valley.

La idea de supabase es que puedas crear una base de datos desde un dashboard de una manera muy intuitiva, enfocándote únicamente en crear las tablas y las relaciones para que crees tu SaaS, ellos se encargan de la gestión del servicio.

Hay algo que no he mencionado 👀, los proyectos de supabase son bases de datos PostgreSQL 🐘

¿Por qué debo usar Supabase en lugar de Firebase?

Ellos mencionan que no intentan ser una alternativa 1–1 a Firebase, así que como todo en la vida la respuesta a la pregunta anterior es “depende”, dado que Firebase es una base de datos orientada a la colección de documentos, mientras que supabase crea bases de datos relacionales. No obstante supabase es tan eficiente en su rendimiento que te hace decantarte por ella en lugar de firebase, a mi en particular fue porque al ser SQL existe la función count 😆, además puedes crear funciones, triggers y procedimientos almacenados 😱

En supabase puedes hacer lo siguiente:

  • Escuchar cambios en tus tablas en tiempo real.
  • Hacer consultas a las tablas como lo haz hecho toda la vida.
  • Realizar CRUDs.
  • Gestión de usuarios de tu aplicación.
  • Interactuar con tu base de datos PostgreSQL desde una interfaz gráfica.

Si quieres leer más de como funciona supabase y cuestiones más técnicas puedes hacer clic aquí.

¿Por qué me gustó supabase?

Supabase tiene servicio de autenticación tal y como lo tiene firebase donde también se puede integrar proveedores externos como Github así que están parejos en ese sentido, sin embargo, supabase cuenta con la funcionalidad de usar Magic links 😜 que te termite hacer passwordless, en mi opinión es algo muy útil y genial además de venir como dicen en ingles out-of-the-box.

Pero creo que lo que más me gustó de supabase es que puedo conectarme a la base de datos y hacer CRUDs o consultas tan complejas de una manera tan sencilla que hasta asusta. No tengo que hacer una aplicación de Node.js y hacer las APIs por mi mismo, en el momento en que creo una tabla ya me proveen de las APIs 😎 y además de proveerte la documentación de como usarlas, viene con rueditas de entrenamiento y todo 😆.

Ya es hora de comenzar y nos ensuciemos un poco las manos.

Crea tu primer proyecto de supabase

Entra a https://supabase.io/ una vez ahí te registras usando tu cuenta de Github.

Para esta demostración haremos el backend para una aplicación donde los usuarios creen notas de tareas, similar a todoist.

Creando un nuevo proyecto en supabase

Ahora sólo ve a tomar un poco de agua mientras crean tu base de datos dedicada postgresql.

¡Listo! Ya tienes tu base de datos, ahora comencemos a crear tablas.

Creación de las tablas

Al igual que en firebase donde tienes que crear una colección de usuarios donde se ejecute un trigger que inserte en esa colección recién creada una vez se registre un nuevo usuario. Supabase te facilita tanto las cosas que ya te provee de la consulta SQL que debes ejecutar para esto.

En el sidebar verás un ícono que te lleva a la interfaz de consultas SQL.

Una vez aquí te proveen de una gran cantidad de ejemplos para que aprendas el funcionamiento mientras exploras el servicio, además siempre olvidamos ciertas cosas así que es de mucha ayuda😅.

La tabla usuarios la crearemos vía código SQL y para ello vamos a crear una nueva query.

Creando una nueva consulta

El código es el siguiente:

/* Creando la tabla users */create table users (-- UUID from auth.usersid uuid references auth.users not null primary key,email varchar not null);/* Este trigger automáticamente crea una nueva instancia en la tabla users una vez un usuario se registra. */create function public.handle_new_user()returns trigger as $$begininsert into public.users (id, email)values (new.id, new.email);return new;end;$$ language plpgsql security definer;
create trigger on_auth_user_createdafter insert on auth.usersfor each row execute procedure public.handle_new_user();
Creando tabla de usuarios

Incluso puedes cambiarle darle un nombre a la consulta y guardarla, así siempre tendrás tu código al alcance.

Puedes darle un nombre y una descripción

Bueno, hasta este punto ya estamos listos para ejecutar nuestra consulta y si no hubo ningún error nos retornará éxito.

Si nos vamos al editor de tablas veremos que tenemos nuestra tabla creada.

Así que ahora vamos a crear la tabla de todos, haz clic en New table.

Una vez creada la tabla podemos crear nuevas columnas

Dejaremos sólo dos campos en nuestra tabla que serán el nombre y la descripción de la tarea.

Ahora vamos a relacionar las tablas todos y users. Para ello vamos a crear el campo user en la tabla todos que será nuestra llave foránea.

Recuerda que debe ser del mismo tipo el campo user con el campo id de la tabla users.

Ahora sólo basta relacionarlas y guardar este nuevo campo.

¡Bien! Ya tenemos modelado la base de datos de nuestra aplicación.

API

Puedes conectarte a supabase haciendo uso de su cliente para JavaScript y mediante RESTFul API. Si te vas al sidebar y seleccionas el apartado para API vas a ver una de las mejores cosas que tiene supabase.

Ellos te proveen de toda la documentación para entender como conectarte mediante el cliente o vía RESTFul, te explican detalladamente todo para que tu sólo copies y pegues en tu código. Así que dale un vistazo y trata de poner en práctica lo que ahí te explican.

En esta ocasión nos enfocaremos en las APIs de las tablas que creamos anteriormente, si te fijas en la sección de Tables and Views están esas dos tablas que creaste hace poco.

Te explican como consultar a las mismas tablas que creaste, lo cual te da una gran experiencia como desarrollador. Verás el código necesario para hacer CRUDS y consultas tan sencillas o complejas como quieras.

Así que deja tu imaginación correr e intenta probarlas como quieras, simplemente es genial. Yo sé que es importante y necesario usar express.js en ciertas ocasiones, pero ¿No está demasiado fácil esto? En un Hackaton o un proyecto escolar esto te puede ahorrar mucho tiempo.

Si te fijas en el aparatado de Store Procedures está la que creamos vía comandos.

¿Ves cómo todo está out-of-the-box? es genial. Hay mucha más documentación acerca de APIs en supabase, puedes aprender como suscribirte a escuchar cambios en las tablas que tu quieras en tiempo real. Asimismo puedes crear políticas de CRUDs con Postgresql.

Autenticación

Supabase te permite autenticarte de muchas maneras, justo hoy agregaron la funcionalidad para agregar más de una URL base. Es un servicio que está en constante mejora.

Puedes registrar usuarios mediante las APIs pero tambien desde el dashboard puedes crear usuarios.

Sólo debes proveer de un correo y le llegará un magic link con el que únicamente deben abrirlo para autenticarse en nuestra aplicación web.

Revisa la bandeja del correo que te acabas de enviar

Asimismo, verás tu usuario creado en el panel de usuarios pendiente de verificación, este cambia una vez abres el enlace.

Si te vas a la tabla de usuario en el editor encontrarás que el trigger que creamos funciona correctamente, se creó una instancia en la tabla users

Otros productos

En supabase también puedes crear buckets en las cuales puedes subir archivos, así que en esto no se diferencian mucho con firebase.

Ahora, hay algo que le falta a supabase que firebase si tiene y son las funciones. Este es un punto toral que aún debe resolver supabase que invite a más desarrolladores a empezar a usarla. Pero ¿Qué crees? 👀 Están trabajando en ello, incluso en febrero me reuní con alguien que trabaja en supabase para darle retroalimentación del servicio, el me dijo que estaban trabajando arduamente para poder ponerle esa última gema del infinito a este guantelete llamado supabase.

© Marvel Entertainment

¿Es gratis supabase?

Ahora puede que te estés diciendo “Bueno, bueno, muy bonito todo pero ¿Dónde está la trampa? muy bonito para ser cierto”. Pues debo decirte que suena bien y está muy bien. Con el plan de hobby puedes realizar llamados ilimitados a las API, 500 mb de espacio en tu base de datos, puedes tener 10 mil usuarios en tu aplicación, 1 gb de almacenamiento en el storage.

Considero que si vienes empezando tu SaaS subapase perfectamente te sirve, incluso si tu aplicación escala pues por $25 mensual lo puedes gestionar, lo veo de una manera asequible ya que no tendrás que preocuparte de muchas cosas, además que le da agilidad a tu equipo de desarrollo para enfocarse en el producto en sí.

Pero recuerda que supabase es open source, puedes usarlo con Docker para que tu mismo puedas mantener tu base de datos, haz clic aquí.

¿Qué tipo de Saas puedo hacer con Supabase?

Las posibilidades son muchas. Ellos te presentan varios ejemplos que puedes encontrar aquí y puedes rápidamente clonar. Sin embargo también muestran varios casos de estudio como este.

Uno de mis amigos Roberto Ramírez está haciendo un SaaS para que puedas crear páginas web con no-code, también está publicando una serie de artículos donde a lo largo de ellos aprenderás como crear esa aplicación web con Next.js y TinaCMS que son herramientas geniales. Para guardar las páginas web creadas por los usuarios el está usando supabase. Puedes ver la primera parte de esa serie de artículos haciendo clic aquí.

Conclusiones

Puedes desarrollar tu idea de una manera muy eficiente con supabase, en este artículo tratamos generalidades, lee la documentación para que comprendas porque me parece un proyecto tan genial.

El objetivo de este artículo es llegar a hispanohablantes, contribuir haciéndolo en nuestra lengua materna para que más personas en Latinoamérica se den cuenta de grandes proyectos como este que sin invertir nada más tu tiempo puedes crear algo genial.

En el desarrollo de software la agilidad, pivotear una idea o escalar un producto son puntos torales, creo que supabase permite que podamos realizar más SaaS de manera barata, bien y rápido, enfocándonos más en el producto en sí, siendo algo que obviamos en ocasiones.

Espero te haya gustado, si eres estudiante intenta hacer tus nuevos proyectos usando supabase. Si ya trabajas proponlo a tu equipo, si te impresionaste con lo que acabas de ver entonces intenta emocionar a otros.

--

--

Fabricio Murillo

I’m honduran, software engineer and mathematics student at UNAH. Soccer and movies enthusiast.