What I've been working on: MyBaseCamp

Although it has been a few years since my last post, I wanted to make an update on what I've been up to in recent times. I will start with the project I'm currently working on: MyBaseCamp.

What is MyBaseCamp?

MyBaseCamp is an online booking platform for outdoor activities, including mountaineering, hiking, canyoning and ski tours. Our repertoire includes more than a hundred different tours from various local providers, and with our platform both customers and tour operators have a secure and comfortable way for handling the booking transaction.

What does MyBaseCamp offer?

We offer both predefined as well as personalized tours from established providers in the regions including mountain guides, hiking guides and alpine schools. Currently we focus our efforts on the alpine region, with our most popular offers being in Oetztal (Ötztal) and East-Tyrol (Osttirol). If you are interested, be sure to check out our other popular regions and tours displayed on our landing page.

What powers MyBaseCamp?

Over the months we have performed major stack changes when it comes to the technologies we use. Originally, MyBaseCamp was purely written in JavaScript with the Meteor framework and using BlazeJS as the presentation layer (back then Blaze was still prepackaged with Meteor).

After the prototype was completed however, we quickly decided to switch to React in conjunction with Material UI for our view layer. This February we also concluded that the code base was getting too large for us to stay productive with JavaScript, every refactor was becoming more difficult to implement and test properly. We were seeking a way to make our code more robust and found a solution in TypeScript. Within two months we're now already at 60% Typescript code, and we're able to grow this metric even further by both implementing new features as well as refactoring the existing code. To this day we are very happy we decided on switching, as our code quality consistently improved.

One big issue we had to face in recent months was that the performance of MyBaseCamp - during development as well as in production - really started suffer a lot with our codebase growing. The rebuild times are pretty much hell, and even though Meteor improved it with it's 1.3 update, it still sometimes takes minutes for a code update to be deployed to the browser. This is the reason why in the next few weeks we will start to transition away from Meteor, and towards a plain Node.js instance with Webpack for client bundling and koa for server-side routes.

The one thing that stayed the same and will probably remain for the upcoming years is our database. Due to our beginnings with Meteor we decided to use MongoDB for our data layer, hosted on AWS instances managed by mLab. And until now we are very satisfied with this choice, as it not only allowed us to get going very quick, but also be very flexible when it comes to structural changes that inevitably happen after time.

In conclusion, the technologies we work with on MyBaseCamp are the following: