The server part of the application was written in Ruby language using the Ruby on Rails framework. Ruby language is interpreted, fully object-oriented and dynamically typed. Moreover, it is flexible and in connection with the Ruby on Rails framework, it allows for the implementation of both very simple and complex solutions. The version of Ruby used in the backend application is 3.0.
Framework Ruby on Rails together with Ruby language was an ideal solution for the implementation of the backend part of the application because of:
- speeding up the development process thanks to ready, tested assumptions,
- stability of the framework,
- the very wide community supporting the framework development,
- the flexibility of the language, allowing to focus on providing business value, rather than focusing on low-level programming issues.
The Ruby on Rails version used in the backend application is 6.1.3. Moreover, we chose PostgreSQL as our database – it is a relational database system known for its stability and performance. It is, like Ruby on Rails, an open-source project. Additionally, we used Redis – it is a NoSQL database that stores data in a key-value format. The data is stored in RAM, which makes Redis a very efficient database. Redis is used in the backend application as a cache database within the Ruby on Rails framework and by the Sidekiq library, linked to Google’s Firebase system, to queue and schedule various actions in the application, such as sending push notifications (notifications that appear on the screen) to mobile devices.
Finally, the mobile app for the Android and iOS platforms was prepared in Flutter using Clean Architecture and Bloc/Cubit state management. The main advantage of Flutter is cross-platform, which allows you to use code once written to build an application for the IOS and Android platforms. The app was created with the recently released version 2.0 of Flutter which brings in a lot of features in terms of performance, security, accessibility, and usability.
The UI/UX, interactive prototypes, and user flows were delivered in Figma.