CentralApp is a successful international Belgian startup. After raising 500k€ from the founders of Keytrade and Skynet, CentralApp has developed a platform that digitally transforms the way restaurants, shops and beauty salons do marketing. This tool is now used by over 1500 businesses in Belgium, France, and other countries.This last year our websites have have been used by over 20 million people, a 200% growth since last year.
We work daily with industry leaders working with local businesses such as TheFork, Google, BNP Paribas Fortis, Deliveroo, Schwarzkopf, or with Petit Futé.
Technically what it all looks like
CentralApp’s backend is a distributed system comprising of multiple Haskell services. Each of these services may expose multiple interfaces: an HTTP API, an Event system and a state storage (Postgres database, managed by RDS). We strictly adhere to ensuring services do not communicate, or are aware, of each other directly (synchronously). Instead, services sync data using our in-house integration event system that guarantees idempotency and can handle failures and subsequent recovery. The collection of HTTP APIs is exposed via our own API gateway, which uses mathematical routing models to ensure correctness & acyclic routing. We talk about our infrastructure and use of Haskell in this presentation.
We are fans of strongly typed backend programming that is largely testable. Haskell works out supremely well in guaranteeing extremely reliable code.
All of this is deployed on AWS ECS using Fargate which saves us the trouble of having to maintain EC2 instances. Each service is tightly tied down using IAM and SecurityGroups.
In the previous version, we used Scala to author these services which we are transitioning away from. There is still some scala in the V2, which we plan to keep for now, but that is a minor part of the system.
What you’ll be working on
We want to take this model forward. Engineers should have ownership of their authored services. As a backend engineer, your end customer is the Front-end team, and your job is to work closely with them to ensure features are implemented, bugs are squashed and performance improved.
A day in the life of a CentralApp engineer will mostly comprise of:
- Implementing new features in existing services
- Brainstorming the implementation before programming
- Designing and documenting the new APIs
- Writing Haskell
- Writing Scala, if an old service needs maintenance
- Implementing new services: when the situation demands it
- External API integration (our data sync “push” service, for example)
- Ensuring what you’ve implemented plays nicely with the rest of the system & performs reasonably well
- Improving tooling and dev-ops. (We don’t have a dev-ops team, and we don’t intend to have one for the foreseeable future given our small size)
- Work with the customer success team to identify and address issues experienced by our clients
- Actively take part in improving user experience: be it on the API or the UI
Experience with functional programming in strongly typed languages like Scala or Haskell is a must, or you must be very motivated to learn.
- Languages: Scala (maintained or in deprecation) and Haskell, the latter is preferable
- Data: Postgres, Redis, and a minor part in MySQL. (all hosted via AWS RDS or Elasticache)
- MQ: AWS SNS/SQS and a minor part via RabbitMQ
- Infrastructure (AWS): ECS, RDS, S3, SQS, SNS, CloudFront
What you should include in your application
- Links to code you’ve authored
- Who you are
- Your CV
Preferably partly in the office, which is in the centre of lovely Brussels.
If you’re someone who likes functional programming, you get to work in Scala and Haskell in a fast-paced but perfectionist environment. We take pride in the quality of code we’ve shipped over the years and at the same time we want our engineers to constantly grow and acquire knowledge. We believe that benefits the engineers and hence also the company. We genuinely want to have a system that is beneficial to everyone. We strive to strike the right balance between business requirements and programming ethos – setting the right business expectations while maintaining a rising standard of engineering quality.
We’re a small team and we’re growing fast, or at least that’s the plan. We’re based right in the heart of Brussels where almost everything is accessible. We strongly believe in investing in the team and building a culture that is product and engineering focused. We do have great Belgian beers in our Brussels office and we love good coffee.
Additionally, we offer a company laptop and an external display (in the Brussels office).
If that sounds like fun, we’d love to hear back from you.
Meet the team.