Introducing our stack

Howdy! This is the very first post of our StudyWorks Development Blog. This is an initiative to open our doors to interested outsiders, so if that’s you: welcome! Grab a drink and learn all about development at StudyWorks.

StudyWorks consists of many parts, but our main activity at the time of writing is providing tutor lessons to students by connecting them with the right coach. We do a lot of tutor lessons each month, so it is important that most of that work is automated. That’s why we have developed an application, which is the core of our business. The name? CORE – it began as just ‘Core-API’, but the ‘core’-bit stuck so we kept that. It has been fully developed in-house, and we’re quite proud of it. We’ll be writing a seperate blog post about all things CORE, but we can already say that it is written in the fantastic FastAPI-framework (back-end) and React (front-end).

We’ve choosen Heroku as our partner to host the CORE back-end. We’re using a lot of custom scripts and rules to use Heroku as cost-efficiently as possible. The front-end is hosted at AWS (Amplify), just like our production databases (RDS). Databases considered to be less mission critical are self-hosted at TransIP, which has very cost-efficient options for people who like to do things all by themselves. That’s why a lot of our servers are also hosted there, including, for example, our static websites (studyworks.nl, werkenbijstudyworks.nl, etc).

For our version control, we rely on GitLab. We’re currently using the Gitlab.com-version, but are looking to transfer to self-hosted. Our whole stack is covered with automatic tests, which are executed by GitLab CI/CD, just like a whole lot of other pipelines. Every MR created to our codebase creates an automatic deployment for that branch on our review app-server, which we have written in Rails, just like our other DevOps-tools.

Lastly, we use Sentry to keep track of our errors and performance.

This is a very brief introduction to our stack. Of course, there are many other things that we do and would like to talk about. But that’s for another time. We strive to publish semi-regularly in this blog, so stay tuned! The next post will be about how we manage permissions and user management in our products.