NextApp - Engineering Blog

Thoughts, ideas and lessons learned while creating a new Personal Organizer / GTD app for desktop and mobile

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.

Articles in this series

Note that the articles on this page are listed chronologically, oldest first.