from/prod
← All companies

THE COMPANY INDEX TRACKED BLOG

JobTeaser

Ideas, decisions, and lessons from the team.

medium.com (opens on the source site)LinkedIn X
10Posts tracked
6 months agoLatest publication
0.1Posts / month over the last 12 months

Latest writing

10 of 10 posts

Stop Defaulting to "use client": A Practical Mental Model for React Server Component Architecture (opens on the source site)

How thinking in server-first component boundaries can simplify data flow and reduce client JavaScript in Next.js applications.When I first started working with the Next.js App Router, I kept running into the same situation.Components would suddenly break — usually after adding a hook or a click handler. The fix felt obvious: add "use client".But after doing this a few times, I realised something: I was slowly turning my application back into a traditional client-side React app.Which defeats the whole point of React Server Components.The real challenge isn’t learning how to use Client and…

Read at the source

Conduct a technical migration within less than 6 months — Part 3 (final) (opens on the source site)

Conduct a technical migrationwithin less than 6 months — Part 3 (final)based on Next.js migration, performed at JobTeaserWhat is this 3-parts article about:sharing my own experience with handling a technical migration📖 some additional elements that I find relevant and could help (identified with 📖 emoji) but not personally testedWhat this presentation is NOT about:technical step-by-step Next.js migrationthe perfect and only way to do a migrationI tried to be as exhaustive as possible, but I didn’t even complete all the points personally. So the presentation is a mix of my personal…

Read at the source

Conduct a technical migration within less than 6 months — Part 2 (opens on the source site)

Conduct a technical migrationwithin less than 6 months — Part 2based on Next.js migration, performed at JobTeaserWhat is this 3-parts article about:sharing my own experience with handling a technical migration📖 some additional elements that I find relevant and could help (identified with 📖 emoji) but not personally testedWhat this presentation is NOT about:technical step-by-step Next.js migrationthe perfect and only way to do a migrationI tried to be as exhaustive as possible, but I didn’t even complete all the points personally. So the presentation is a mix of my personal experience and…

Read at the source

Conduct a technical migration within less than 6 months — Part 1 (opens on the source site)

Conduct a technical migrationwithin less than 6 months — Part 1based on Next.js migration, performed at JobTeaserWhat is this 3-parts article about:sharing my own experience with handling a technical migration📖 some additional elements that I find relevant and could help (identified with 📖 emoji) but not personally testedWhat this presentation is NOT about:technical step-by-step Next.js migrationthe perfect and only way to do a migrationI tried to be as exhaustive as possible, but I didn’t even complete all the points personally. So the presentation is a mix of my personal experience and…

Read at the source

Spring Cleaning for z-indexes (opens on the source site)

Managing z-index is a classic challenge for front-end developers. As a project grows, display conflicts and bugs related to z-index can quickly turn into serious headaches.I recently took some time to clean up the z-indexes in one of our projects.In this article, I’ll share the approach I used for this cleanup (while also laying the foundation for keeping things manageable in the long run).1. Analyzing the existing z-indexesThe first step was to perform a thorough audit of all the z-index declarations in the project. This gave me an overview of how many z-indexes we had and what values were…

Read at the source

Making sense of TypeScript generics (opens on the source site)

TypeScript significantly improved JavaScript development with enhanced code reliability and maintainability, ensuring fewer runtime errors and greater productivity for developers.But when you start working with it, the syntax can sometimes feel overwhelming.One of the most intimidating features in TypeScript is “generics”. Look at the example below 🤯 aren’t you afraid ?Types declarations from @tanstack/react-query (library) that can feel overwhelmingBut don’t worry, we will go step by step and once you understand generics, you’ll see how powerful they are.The best any alternativeImagine this…

Read at the source

7 tips to survive as a junior developer (opens on the source site)

© MidjourneyWhether you’re fresh out of school or transitioning from another career, landing a job as a junior developer is a great accomplishment. But it’s only the first step on your path to a successful career.Finding your marks in this new position is the next big challenge. In this article I’ll share with you 7 tips I would have loved to receive when I started as a junior developer, one year ago.1. Learn to walk before you runDuring your first days as a “professional” developer, you will most likely feel overwhelmed by the size and complexity of your company’s codebase. “What are all…

Read at the source

Data replication across backend services with Kafka and Protobuf (opens on the source site)

The Jobteaser application contains a lot of different relatively independent modules to help universities provide career guidance to students: a job board, a career event management system, a career advice appointment management system…When we decided to migrate our application’s backend from a monolith to a service-oriented architecture, we strived to keep each module as isolated as possible from the others in the event of an incident. If the career appointment system was down, students should still be able to browse and apply to job ads.That isolation is achieved through what we’ve called…

Read at the source

Layers vs Silos, a tale of 2 microservice architectures (opens on the source site)

When it comes to the communication between microservices, there are 2 possible extremes:All-sync: whenever a service needs data from another service, it fetches it via a synchronous API call (REST, gRPC, GraphQL). Service calls service calls service… which tends to evolve into layers of APIs, where each layer has dependencies on the next.All-async: no sync calls between services, all communication is event-driven or in the form of data replication. This tends to form silos: independent services that are fed all the data they need by an async mechanism and can function independently of any…

Read at the source

Our microservice stack (opens on the source site)

This is an introduction to how we’ve implemented microservices at a mid-size scale-up called Jobteaser, with a mix of Go and Ruby service chassis, gRPC APIs and data replication via Kafka.Foundation: The service chassisBack in early 2019, when Jobteaser decided to get serious about breaking up its decade-old Rails monolith into microservices, we assembled a Foundation team that started working on an in-house service chassis.It was soberly coined service and came in two flavours: the rb-service framework in Ruby and the go-service framework in Go. Four years later, they still form the…

Read at the source

Privacy choices

Reading never requires analytics. These choices last 90 days on this browser.

Essential sign-in and security storage always stays on. Read the privacy notice.