The Pointz Tech Stack

I often get asked by other developers what kind of stack we used to build Pointz (if you don’t know what I mean by “tech stack,” it’s just a term software developers use to refer to what technologies were used when building your app, website, etc.) and since I love talking about nerd stuff I figured I’d go ahead and write a blog on it.

Here’s exactly what we used to build Pointz (spoiler alert, it’s pretty Google-dependent).

birmingham pointz small business

Frontend - Flutter

If you haven’t used Flutter, consider this a personal ringing endorsement. Before Flutter, React Native was the go-to for writing mobile apps that needed native-like performance, without having to go full native and manage two separate apps.

 
flutter.png

Now, Google has come out with a new framework called Flutter that in my opinion, is superior to React Native. Why do I like Flutter so much more than React Native? There are many reasons but I’ll just go into a few.

First, there’s no Javascript bridge. This in and of itself is enough reason to at least try Flutter.

 

Second, you develop in Dart, not Javascript. As a backend developer by trade, I abhor Javascript. I have a solid preference for strongly typed languages that are compiled first. It is not only safer and results in much more structured code, but it’s also faster to develop because errors are shown immediately before you test it. If you’re new to Dart- don’t worry; I was too but like every other Flutter convert says, it’s very easy to learn.

Third, Flutter comes with amazing styled components out of the box. This is huge for me because I do not have a designer yet, nor am I very design-conscious. I end up spending more than half my time trying to make an app look good. With Flutter, I don’t need a designer. Everything comes out looking great.

There are many more reasons why I really like Flutter, but I’ll end it there for brevity sake.

Database - Firestore

A lot of people have heard of Firebase, but not so many about Firestore. Firestore is just like Firebase except it’s… wait for it… scalable!! It’s still a (very) realtime database, but unlike Firebase, you don’t have to worry about all the necessary data redundancy in order to get adequate perform and Firestore is much more queryable.

Coming from a SQL based background, Firestore is pretty much a cross between a SQL database and Firebase from my viewpoint. I can’t tell you how excited I was to run a query and have it spit out in the console, “Hey, you need to create an index for the query. Click here to do so.” This was music to my ears. I am more accustomed to being forced to call a DBA to create some index that won’t be created until weeks later (sidenote: I worked at a bank previously).

Backend - Firebase Functions

Firebase Functions gets another endorsement from me. Realtime database triggers with server-less functions, and no need to write a custom API make me a huge fan of Firebase functions. My only criticism is that I wish I could write the functions in Dart instead of javascript, and sometimes my functions get called too many times. Other than that, IT IS AWESOME.

Analytics - Mixpanel

After trying so hard (and I mean really really hard), I simply cannot convert to Firebase Analytics. It’s watered down, has bad reports, and is unnecessarily difficult. I feel like I may be alone on this one, because everyone else seems to love Firebase Analytics (and I really wanted to as well). Mixpanel is just a stronger analytics program and easier to use in so many ways.

Hardware - Beacons

This is kind of obvious, but thought I would include it for the sake of having a complete overview. Right now we haven’t committed to any particular beacon manufacturer, despite trying multiple. All of them lack one thing or another, so we’re hoping our ideal version will come out in the future. If not, we’ll just end up building our own.

Conclusion

Any-who, that is our tech stack. Thanks for me letting me nerd out for a little bit.

What are Bluetooth beacons and why they're awesome

Bluetooth beacons are small, fairly inexpensive, usually (but not always) battery powered Bluetooth devices that, when used with a mobile app, provide a superior alternative to detect a user's physical location than the traditional, antiquated way of using a mobile device's GPS.

 

Bluetooth Beacons vs GPS

So let's say you have an app that requires you to know a user's particular location at a given time in order to work properly. Furthermore, let's say you want to be able to determine your user's location without them having to do anything (i.e. open the app). You can just use the phone's GPS, right? Sure, but here are the issues...

Battery Drain

Using a phone's GPS to monitor a user's location continually is an incredible drain on battery life. Anyone who uses Google or Apple Maps when traveling knows exactly how much battery this can eat up.

Privacy Invasion

Having an app use GPS to track you at all times is an incredible invasion of privacy. Even if the app developer vows to never sell, store, or misuse your location data, no one wants an app continually monitoring their location everywhere they go.

Limited Accuracy

GPS has a very real limited accuracy. Yes, it can detect what city block you're on and even what place you're at, but it fails when trying to determine what room you’re in or what floor of a building you're currently on.

 

Why Beacons Are Awesome

Beacons are awesome because they solve all of the issues above with GPS. Namely...

Preserve Battery

Unlike GPS, monitoring for Bluetooth beacons has a negligible effect on battery life. The process your phone uses to monitor beacons is exactly similar to the process that monitors your Wifi (ever wonder how your phone immediately connects to your Wifi when you get home?). Beacon monitoring uses a similar process and contrary to popular belief, having your Bluetooth on at all times WILL NOT drain your battery. Don't believe me? Check out the in-depth research our development team has provided on this matter.

Protects Privacy

Perhaps the most important reason why beacons are superior to GPS is that they respect your privacy. Unlike GPS, apps that monitor for Bluetooth beacons ARE NOT continually tracking your location. The only location data they get is when you're near one of the app's beacons.

Much More Accurate

With Bluetooth beacons, you can determine a user's location down to a particular room and/or floor of a building. It's much more accurate than GPS.

 

Beacon Pitfalls

Unfortunately, beacons aren't perfect. Here are the main pitfalls...

Requires hardware

The most obvious limitation to using Bluetooth beacons is that it requires a separate physical device which makes things much more complicated than using a hardware-less GPS. However, the benefits of using beacons make this overhead justifiable in many cases.

Requires same permissions as GPS

This is one of my personal annoyances. Unfortunately, for iOS (i.e. Apple devices), to use Bluetooth beacons you must ask for the same permissions that are used by GPS with no indication to the user about the difference. Given the difference in these technologies, it makes no sense why these should be the same permissions. It would help educate the users and allow for users to let apps monitor Bluetooth beacons without them using GPS in the background. We really hope Apple will change this is the future. 

 

Conclusion

Beacons are awesome. GPS is really bad for monitoring location in the background. Apple should separate the permissions required for GPS monitoring and beacon monitoring.