Starting a new application often involves crucial decisions like choosing the right database and frontend library. In most cases, we tend to stick with what we know. Initially, there are no inherently bad choices, and we can’t anticipate every problem. However, in other cases, it’s essential to approach these decisions methodically by asking pertinent questions. For instance, when considering the addition of GraphQL, it’s crucial to understand what problems GraphQL aims to solve.

In a previous project, my team encountered issues with the database and its syncing library. Instead of succumbing to internet hype or relying solely on blog articles, we decided to build a small mobile app resembling the final product and created a corresponding backend. This allowed us to spend a few weeks testing different solutions, including Firebase, MongoDB, and CouchDB. While we did find better alternatives, some were expensive, or migrating to them would have required significant time investment. We also encountered worse options along the way. Eventually, after carefully evaluating the pros and cons of each solution, we decided to stick with our initial choice. Importantly, we knew exactly why we made that decision.

Ruby’s world doesn’t end on Ruby on Rails. There are several gems available for building APIs, such as Roda, Hanami, and Sinatra.

Roda is renowned for its simplicity and performance, providing a flexible and extensible routing tree-based DSL for API development.

Hanami, on the other hand, is a comprehensive full-stack framework that emphasizes modularity and adheres to the MVC pattern, offering a robust set of tools and conventions for building reliable APIs.

Lastly, Sinatra is a lightweight micro-framework known for its ease of use and flexibility. It shines in small projects or when quick API development is required, enabling a minimalistic and customizable approach.

In my case, since my app is designed to be built in small components, changing the API library should not pose a significant challenge. All of the aforementioned libraries are well-maintained, so the decision primarily depends on the specific requirements and preferences of the project.

I welcome feedback and encourage you to reach out to me via email, which you can find on this website.