Rhumbix’s mission is to continuously improve how the world is designed and constructed by empowering the workforce with technology that delivers value to workers first.
Supporting this mission is a scalable, robust platform that enables foremen in the field to get real-time insights into production data.
The Rhumbix system is built on top of the Heroku platform. This allows us to have a flexible and fast development cadence with simplified operations and trivial scalability. Heroku supports almost any development language we could think of — so we chose Python for our backend. We then decided to leverage the Django Web framework due to ease of use. Our data store is a PostgreSQL instance managed by Heroku Postgres, which gives us a secure, continuously protected and encrypted database. The REST API was built leveraging the Django Rest Framework, which our mobile and web clients use.
The Web Client
The Rhumbix web client is in transition to a completely de-coupled React/Redux client. This transition constitutes deprecating legacy pages served through Django and its templates. This approach allows us to do away with the often unwieldy monolith system and maintain a lighter and more nimble stack. The end goal here is to have every client, irrespective of platform, target the same REST API in the same manner. Lastly, the web client uses the webpack module bundler during deployment to orchestrate static asset serving in production.
The Mobile Client
We’ve since deprecated support for our Android client, however, we fully support iOS. The mobile client is built natively with a mix of Objective-C and Swift. We also leverage Realm for some minimal offline caching and processing. Any data stored on the device is encrypted at rest. Additionally, we use the Firebase library to facilitate synchronization of data between our mobile client and our backend.
Firebase is actually responsible for some important user data, namely, large user created images. These images add rich context to production field data that are later consumed by our reporting services. We pull these images from Firebase and store it in Amazon’s S3. Subsequently, we post a unique identifier back to our database for reference. To manage this transaction we setup a Node.js service that listens to changes made in Firebase and initiates an async, authenticated, transaction back to S3 and our backend.
At Rhumbix we orchestrate our integration and delivery mostly through Travis CI, hooked up to Github, and some additional built in-house tooling.
As we grow and our clients’ needs change, our stack evolves and improves. More to come on Part II of the Rhumbix Tech Stack as we get down into the details, outlining current and upcoming integrations!