Mayday Messaging is the first app using Booster

Juan Sagasti
The Agile Monkeys’ Journey
4 min readFeb 1, 2021

--

At The Agile Monkeys we have some very interesting initiatives and projects, two of which are Booster and Mayday. Both projects share the philosophy of simplifying and helping you spend time on what matters.

Things that matter

Booster is a highly innovative open-source framework for backend development with Event-Sourcing architecture that allows developers to focus on what really matters: the business logic that makes your application unique. Its high-level abstractions save you from dealing with the necessary serverless infrastructure and it deploys all the necessary resources for you on AWS (more providers coming soon). You don’t have to work directly with these resources at a low level (databases, connections, functions…) and it establishes a well-defined framework that is easy to understand and maintain through Commands, Events, Entities and Read Models. All this with an expressive and secure language like TypeScript.

Booster is like a serverless Ruby On Rails! The learning curve is simple: you no longer need to be an expert in cloud tools to be productive!

In addition, Mayday is a free messaging app for iOS and Android that aims to be an exclusive communication channel for sending and receiving important or urgent messages while respecting your privacy and security. This means you can silence the chaos of other notifications that we are subjected to on a daily basis and that steal our attention so that you can focus on the important things in your life. Its philosophy and functionality are very different.If you want to learn more about it, check out this article about the app or its official website.

You can download it now for iOS and Android.

From Firebase to Booster 🚀

For the first beta version of Mayday we used Firebase’s mobile SDKs and Cloud Functions in order to create a working prototype that would validate certain hypotheses as soon as possible. Firebase is a fantastic platform that saves a lot of work in many aspects, but as the backend code became more complex and we lost some performance, we decided to migrate to a more mature and versatile platform like AWS. Booster made that task a lot easier for us:

  • Applications built with Booster are very fast as they benefit from the maturity, scaling, performance and potential of AWS.
  • By building your business logic using a very high-level abstraction through a series of well-defined and interconnected components (Commands, Events, Entities and Read Models), the codebase becomes convenient, predictable, expressive, secure (also thanks to TypeScript) and ultimately easy to understand and maintain; key aspects for any development team. Any programmer who joins your project can start being productive in a very short time, even if they have no previous serverless experience.
  • We completely forget about infrastructure configuration, which usually requires dealing with YAML files or the AWS console.
  • The Booster team is very open and quick to add new functionality to the framework. They are always accessible on their Discord server, and being open-source you can easily modify and extend the framework yourself and adapt it to your needs if necessary. Furthermore, it supports a system of plug-ins (Rockets) that allow you to expand functionality without much effort.
  • The creation of synergies and feedback between both of the company’s projects was another of our objectives. This allowed us to accelerate the development of Booster, which now supports functionality as a JWT token-based generic authentication system, time-scheduled commands, Read Model deletion…
  • This Booster authentication system allowed us to continue to maintain Firebase for user login and save time. Firebase is still in charge of obtaining and renewing the token which is then used by Booster for all its operations. But Booster’s token system is generic and we could use any authentication provider that uses JWT tokens (Auth0, for example).
  • The GraphQL API that Booster exposes to apps makes it possible to deal with data in a very convenient way and to build real-time and reactive applications, such as Mayday’s mobile apps. Subscriptions are very easy to create and Mayday uses them, among other things, to keep the Mayday list updated in real time.
  • Scheduled Commands allowed us to easily meet one of Mayday’s key requirements: deleting Read Models from Maydays that were resolved after 24 hours.
  • We have created a very fast contact detection system between the apps and Booster that checks from time to time if any of your contacts are already in Mayday. All this without ever storing the user’s address book on the server. Privacy is another key point.

Thanks to all this, Mayday has been able to become the first production application to use Booster. The team is still working on new features for the framework, as well as on growing the Booster ecosystem with new applications and services.

Cloud application development has become very intimidating and it has a very complex learning curve. Booster was born during our team’s process of learning about the Serverless paradigm, which faced a number of frictions related to the learning curve of the Cloud world.And it is an important step in that direction, proposing an event-driven and reactive future without gaining in complexity thanks to a higher level of abstraction.

--

--

Juan Sagasti
The Agile Monkeys’ Journey

Software Engineer  & Co-founder at The Agile Monkeys 🐒