Learn why Tyler decided Flutter and Supabase are the perfect tech-stack shipping innovative ideas fast.
Tyler Shukert is an indie developer who has been building websites and applications for seven years. Tyler is a Firebase & Flutter expert who recently discovered Supabase. After falling in love with Supabase, Tyler decided to launch his latest app. Spot is a geolocation-based video-sharing app with some social networking features.
NoSQL doesn't mean No Schema
Tyler loves how easy it is to create high-quality web and mobile applications with Firebase. For the past few years he has honed his Flutter, Angular, and Firebase skills to quickly ship mobile and web apps. But the more his development expertise grew, the more he understood the limitations of Firebase.
Before starting a project, Tyler is never sure if the project will grow. It could be an overnight success, or it might need to pivot in a different direction. He finds this is particularly difficult with Firebase as he faces a denormalization dilemma. Denormalization means combining the data into a single table to make data retrieval faster. Google promotes denormalization as best practice for a snappier app experience. Denormalisation in Firebase takes work and requires additional development time. For new projects, it is often unclear if they will reach a scale justifying the effort denormalization requires. In relational databases like Postgres, data is normalized, meaning reduced data redundancy with maintained data integrity.
Supabase + Flutter: a match made in heaven
When Tyler discovered Supabase on Twitter, he was intrigued by the promise of Postgres with Firebase-like features. He wanted the benefits of SQL and Relational schemas, and decided to build an app to test Supabase.
Tyler had been thinking about building Spot, a mobile app for sharing geo-based video content. When he previously planned Spot, he felt like hacking around Firebase would be too much effort. After researching the PostGIS extension for geospatial data, he realized Supabase was the perfect fit. As an avid Flutter fan, Supabase's Dart library was a bonus. Tyler loves the open-source nature of Supabase and immediately began contributing to the Dart library to enable functionality that he needed.
Tyler decided that Spot would be perfect to showcase the power of Supabase and Flutter. Since he's active in the open-source community, he decided to open-source the whole project, making Spot one of the most interesting Supabase examples.
Comparing Firebase to Supabase
Although Spot seems simple, it has a lot of complicated components. Implementing social "Likes" requires count
functionality,
which is notoriously tricky in Firebase. In Supabase, because it's just Postgres under the hood, count
is implemented
using a simple SQL count
query.
Supabase has Row-Level Security, which Tyler uses as a filter - something he can't do with Firebase.
Spot uses Supabase Storage for managing large video files. Firebase Storage has a reputation for slowness until it is public, which was a privacy concern for Tyler. With Supabase Storage, this wasn't an issue - storage is performant and secure.
The Firebase API pricing model makes it is difficult to predict pricing upfront for new projects. With Supabase, Tyler doesn't need to worry about how many API calls his project makes.
Supabase gives Spot speed, performance, and predictable pricing.
As of today, Tyler has around 3000 installs for Spot and is getting ready to add new functionality. He is confident Supabase, Postgres, and his data structure will enable future development.
Spot is Open Source
With Supabase, Tyler can use Flutter to build a performant app quickly at a low cost. Tyler is now a massive fan of the Supabase experience and has even joined the SupaSquad.
You can download and install spot for iOS and Android to see just how snappy his setup is. Tyler has fully open-sourced his example - you can clone the repo and use it as the basis of your next big idea.