How we roll code at Shedul

Karol Słuszniak
Fresha Engineering
Published in
6 min readSep 6, 2017

Hello there! I’m Karol and I’m a CTO at Shedul, a SaaS platform for beauty and wellness industry integrated with Fresha, a consumer marketplace for booking appointments. You can probably imagine that as an engineer I’m eager to jump into strictly technical articles about challenges, open source efforts etc, but with this very first article on our tech blog I feel obligated to paint a bit wider picture of what and how we’re working on at Shedul.

Shedul in a nutshell

First of all, what is Shedul? It’s basically a online system for managing both small and large salons in which clients make appointments for specific services at specific time. But it’s much more really. It allows to sell services, products and vouchers and manage the complete invoicing and payment process. It helps to manage people, both clients and employees, including permissions and notifications. It also helps to manage business by offering powerful reports and inventory system.

Salon clients can make bookings online through an automated system that, as opposed to competing systems, guarantees that the picked time is actually available. This powerful tool, which is extra powerful when embedded on Facebook, is capable of fueling salon owners’ business like no other.

As a completely free solution Shedul is already changing the industry, allowing business owners to have an affordable tool of unprecedented quality. And there are many huge features on the way, with which we’re hoping not only to change the industry, but to turn it upside down.

What I love about Shedul the most since I started working on it 2 years ago is that the never ending stream of challenges is, as opposed to usual project lifecycle, only getting increasingly exciting. Seriously, you just can’t get bored or stagnant in here. It’s a kind of a “sandbox product” that you could extend with features from all genres of development — front-end, back-end, large-scale, multi-service, multi-platform, real-time… It’s like a game development but for the web, if you catch my geeky drift.

That’s Shedul. Just visit https://shedul.com to learn more or go straight to https://app.shedul.com to create a free account and give it a spin. Also, visit https://www.fresha.com to take a look at integrated consumer marketplace.

Product that matters

During my early days as a Ruby on Rails developer, I’ve worked on dozens of startup projects that never lived long enough to be used in production. That’s why I’m very happy that Shedul is a mature system that’s already used out there in the world. It’s important to know that the effort put into writing the code day by day doesn’t go to waste and that it actually affects the way someone on the other side of the planet does their business.

It’s even better to know that this won’t change anytime soon, as Shedul is a stable and well-funded product that has a promising, well-thought long-term strategy and experienced, smart leaders behind the wheel.

Shedul is used by thousands of users and the number is constantly increasing, so we get to work with scalability and maintenance problems which only such mature systems get to face. We have to constantly find ways to evolve the system and reduce its tech debt in order for it to be ready for what’s coming. And that’s just one of the best challenges out there.

What scale am I talking about? Well, several millions of bookings are being made through Shedul each month from as many as 120 countries. And bookings are just one of many large-scale aspects that our system handles besides things like invoices, customers and more.

Incredible tech

Shedul was originally written as a Ruby on Rails monolith, but a lot has changed since then thanks to current team’s effort. We’re now developing a new stack of Elixir microservices, which allows us to embrace the amazing performance of this brand new technology at scale without sacrificing on our productivity. After a few months I have to say that writing Elixir is the best coding pleasure that I’ve had chance to witness. We’re on the front line of companies that use it in production and that is just priceless.

As part of the embracement of the new, we’ve also replaced all of the original legacy front end stack made mainly of jQuery and Rails-rendered CoffeeScript/AJAX flows with pure ES6, React, Redux, Webpack, ESLint and friends. Writing Javascript with such a set of tools may indeed be a tempting alternative even to such a great backend stack as the one we have — that’s why our company is loaded with a growing number of full-stack engineering ninjas who can handle both sides of the story just as well.

Besides the proprietary code, we also author a number of great open-source packages. Shedul is quite a complex platform tailored for our users’ needs so we did have to create lots of building blocks from scratch, either to deliver features or to make our work easier and reduce the tech debt of a mature system with a history.

Among those, I’m especially proud of one-of-the-kind Elixir coding guide that is purely based on our battle experience. It’s extensively used during code reviews and everyone in the company has a saying on how we do things. Speaking of which…

Mature working culture

So we own open-source style guide. But the coolest part is that it’s actually really used in the code review process, which on it’s own is a cool one. We tend to do a thorough reviews, but care to keep them in positive tone in order to encourage and not to scold. It really works as indicated by the constantly improving quality of the codebase.

As opposed to many software houses that you may have dealt with, here at Shedul all developers instantly have all of technologies and all parts of the product in reach. For example, many of our backends have recently had a chance to learn React. And we do have front-ends that are capable of making good points about the database layout. In the end we simply don’t split developers into Team Cool Parts™ and Team Scrap Meat™ (into which all new developers would probably fall elsewhere).

We’re working together for a few years already in a growing team with a stable core so we’ve had time to take some lessons about how to run things. For instance, we have a dedicated dev ops and QA guys in order to make sure that the process of deployment and the stability of the production system are as good as they should be.

All-stars team

The company is full of seniors as we generally prefer to hire experienced programmers, so all of us get to work besides the best in the business and have the chance to get even better as part of the journey. We have here crazy open source contributors, myself included, that would kill you for a GitHub star. We have people active in various coding groups here in Warsaw.

This amazing team is always open for discussions and gathering feedback from others. We seriously care about the product at hand and about taking the chance to learn something new in the process.

So whether someone here is interested in bleeding edge JavaScript, real time systems, microservices, background processing, database concerns, dev ops or OLAP reporting systems — there’s an engineer at Shedul that can have something new and interesting to say about any of these.

What’s next

I’ve only scratched the surface of Shedul engineering with this article. Expect more technical postings coming soon. I’d like to write more about a reasoning behind our technology choices, the process of facing the consequences and an introduction to our open source efforts. Stay tuned.

--

--

Karol Słuszniak
Fresha Engineering

Software engineer. Ruby & Elixir developer with a history. Husband and father. Enthusiast of game and 3D dev.