
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](./ui-oss.png)

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](./ui-pcp.png)

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](/posts/2026-05-25/plakar-ui-pnpm-turborepo/)

