How I ended up with a separate back-end service for signing up users and their devices
How to make a service for normal people that is both secure and blissfully easy to use
Ramblings from the Viking who run the Cafe at the end of the universe.
NextApp has two parts, a server and a client. The client is a real application. It's written in C++ for optimal efficiency and speed. The server is also written in C++. It use a traditional SQL database for data storage.
Initially, I considered using ArangoDB, a relatively new NoSQL database with features well-suited for NextApp. However, just before I began designing the architecture in 2023, ArangoDB shifted its licensing away from open source, which led me to reconsider. To play it safe, I chose MariaDB, a fork of MySQL, as our data store.
The server operates mostly statelessly, serving users via gRPC. When clients come online, they connect to the server through gRPC, a Remote Procedure Call stack originally created by Google for their vast back-end infrastructure. It's straightforward to use, once fully understood, and significantly more efficient than HTTP REST API's using JSON or XML. The data is transmitted over a binary protocol designed for rapid serialization and de-serialization. It avoids wasting bandwidth by not sending metadata, like field names, over the wire. (JSON and XML never learned that lesson).
NextApp's architecture is event-driven. When a user do something, the something is sent to the server. It validates it, and if it is OK, the action updates the user's data state. The server then notifies all the user's online devices, ensuring instant screen updates across all devices.
The client is, as mentioned above, a real application, written in C++. It leverages the QT libraries, which provide a comprehensive set of widgets for both desktop and mobile applications. The desktop and mobile versions of the app share a significant amount of code, promoting efficiency and consistency.
As I work my way towards what I believe will become a great application, I will document the journey in this blog series. I will share lessons learned, considerations, and choices made along the way. Some posts will be quite technical, aimed at fellow C++ developers. But some of it may be interesting also for people who are not software developers, but just like to understand how things work.
At the outset of this blog, NextApp is in its early alpha stage, with myself likely being the only user as of June 2024.
Note that the articles on this page are listed chronologically, oldest first.
How to make a service for normal people that is both secure and blissfully easy to use
There is lots of complexity in modern computer systems. Getting a QT app to work properly with Android is anything but trivial. This is a summary of how I got started.
Detaching the app from the server and using a local db for reads