Natrium+Kalium APIs & Backend Rebuilt From the Ground Up

2 Sep, 2022 • 3 min read

Today we are announcing the third generation of the Natrium and Kalium APIs and Backend. The new backend has already replaced the old one and existing users should notice no difference or interruption in service. If you do experience new problems, file a detailed bug report, so we can address it right away.

The 3rd Generation Backend Uses GO

Almost 4 years of Natrium, 3 backends

Natrium is approaching its 4 year anniversary and this is the 3rd iteration of the backend that drives the app.

Here's a brief history of Natrium's (backside) Development over the last 4 years.

First generation, nano wallet company, python+tornado

The first generation backend was a fork of the nano wallet company server. Which is a very simple service based on the Python Tornado Framework. The server quickly became difficult to maintain as we added new features and expanded functionality. Tornado's coroutine implementation predates the python native implementation by several years, this resulted in more difficulty during development as many libraries were incompatible, etc. In addition, the server was just generally inefficient and slow.

The second generation, python+aiohttp

After less than a year, it was decided to rewrite the server using aiohttp. This is a much more modern python framework that utilizes the native Python coroutines using the asyncio package. It served our users very well, although it has some occasional hiccups. The primary problem is that Natrium and Kalium adoption and usage increased during the bull market of late 2020 and 2021 to very high levels. The server always has active connections and requests all day, every day. This continues, albeit, a bit less than before the market crash, to this day.

The third generation, GOLang

The new APIs/backend is written in GOLang. A language that is essentially perfectly tailored to the use case that Natrium and Kalium have, that is highly concurrent and highly performant web services. Aside from a different language, the new server is more robust, it utilizes PostgreSQL for storing some user data such as tokens for push notifications - which solves a major pain point of the old server using Redis to store this data. The Redis data store quickly grew to unmanageable sizes with the number of users we have. In general, all of the engineering choices behind the new backend also lead to easier extensibility and enhancements in the future.

In summary, the new backend is:

  • Faster, much faster
  • Better tested with a better structure
  • Cheaper and more efficient, using fewer system resources by several orders of magnitude

Available on GitHub, open source and MIT licensed.

Natrium v2.5 and Kalium v2.4

The new backend is a transparent upgrade for users, there is an upcoming v2.5 release of the Natrium app and Kalium v2.4 that will be arriving soon, the primary change is the migration to Flutter v3 as well as some material design 3 features for Android.

Support Natrium Development

Natrium is open source and released under the MIT license — it is completely free. If you would like to support the development of Natrium, you can donate using the link below:

NATRIUM | Donate
Help make Natrium better and support its development by donating
natrium.io/donate

For more info & regular updates:

Natrium Twitter: @NatriumIO

Natrium Website: Natrium.io

Appditto Twitter: @Appditto

Appditto Website: Appditto.com

Appditto Github: @Appditto

Twitter Medium GitHub
Reddit Instagram Dribbble

© 2020, Appditto LLC.