I used to think frontend was easy

Julien Castets 648 words May 25, 2026 4 min read
I used to think frontend was easy
Julien Castets
Julien Castets Software engineer @ Plakar Korp

The command plakar ui spawns your browser and displays a nice interface to list your backups, view their content, and download them.

Plakar UI, the open-source version

The commercial version of Plakar, that we call Plakar Control Plane which is targeting enterprise customers, has a more complex UI that also includes user management, multi-stores management, inventories of Cloud resources, and so on.

Plakar Control Plane

Behind the scenes, both are React applications written in TypeScript.

When backend developers at Plakar open the plakar-ui GitHub repository for the first time, they might be surprised by the complexity of the frontend codebase. They might see a pnpm-workspace.yaml, a turbo.json, seven package.json files, and a node_modules folder big enough to make find overflow their terminal scrollback.

That’s the reason why I decided to write a few lines about the Plakar UI stack: to explain the rationale behind our choices, why we do things the way we do, what our dependencies are, and how they fit together.

A few lines… turned into a series

#

Alright, I might have lied a bit in the previous sentence… “A few lines” turned into a whole series of articles. Each article will cover a specific aspect of our frontend stack.

Here’s the list of topics we will cover:

  • pnpm and Turborepo — why the monorepo is split the way it is, and how Turborepo keeps pnpm build from taking ten minutes
  • React — for a backend developer, React might be like a unicorn: people talk about it all the time, but you’ve never actually seen one. We’ll explain briefly why React changed the frontend landscape
  • TypeScript — I know that most developers are allergic to anything related to frontend, but I’ll try to convince you that TypeScript is a real game-changer in the way we write code
  • Zod — TypeScript will lie to you at API boundaries: Zod is how we deal with that
  • TanStack Query — probably the most important library we use. It’s a server-state synchronization layer, and it’s insanely cool
  • TanStack Form — forms are at the heart of any application UI. Tanstack Form is what we use to build them, and it’s a joy to work with
  • React Aria Components — have you ever realized Plakar UI is accessible using your keyboard? That’s thanks to React Aria, a library of accessible components that we use as building blocks for our UI
  • TanStack Table — tables are nothing more than a <table> element, right? Lol. You bet.
  • TanStack Router — how do we avoid having a 404 when we change the URL?
  • Storybook — this article explains how we build our UI components in isolation, using Storybook as a playground and a documentation tool
  • Testing strategy — let’s explain how we test our UI, and why we don’t try to achieve 100% test coverage… quite the opposite, actually
  • Build process — this final article will explain how the code is shipped to production

Who is this for?

#

This series was originally written for the backend developers at Plakar, to help them understand the frontend codebase. Quickly, I realized that it could be useful for people outside of Plakar as well: don’t tell me you’ve always been in situations where there’s no gap in knowledge between your frontend and backend teams.

A word from a recovering backend developer

#

I’m originally mostly a backend/systems developer and a system administrator.

For years, I thought that the complexity comes from the backend, that frontend development is the “easy part” of a project, and something I would try to avoid as much as possible.

I was wrong, and I think that if you share these feelings I had and accept to be open-minded, you might change your mind and discover that frontend development comes with its own set of challenges — and not only related to the color of a button or the layout of a page.

Let’s start with pnpm and Turborepo