Case study
Röle
An offline-first API client, with an optional backend for teams that outgrow working solo.
The problem
Most API testing tools assume you want an account, a cloud sync layer, and a subscription — even if you’re just testing a REST endpoint on your own machine. That’s a lot of surface area (and trust) to hand over for something that should just work locally.
We wanted a client that respects that: no forced sign-in, no telemetry, and no dependency on someone else’s server to open the app.
The client
Röle is a local-only API testing client built with Flutter, running natively on Windows, macOS, Linux, Android, and iOS from one codebase.
Everything — collections, requests, environments — is stored on-device as plain files, so it works fully offline and plays well with Git if you want to version or share a workspace manually. There’s no account and no backend required to use it.
It covers the core of what you’d expect from a REST client:
- Full request editor — URL, headers, query params, body — across
GET,POST,PUT,DELETE,PATCH,HEAD, andOPTIONS - Collections and environment variables with
{{variableName}}substitution - Import/export of Röle and Postman-style workspace JSON, with conflict handling
- A collection runner with pass/fail history, and Flows for chaining multi-step requests
- Light, dark, and system theming across desktop and mobile layouts
The backend
Local-only is the right default, but teams eventually need to share a workspace. Röle Node is the optional piece that adds that — a Node.js and TypeScript backend built on Express 5, kept entirely separate from the client so using it stays opt-in.
It handles workspace-based sync — teams, invitations, roles, and activity — so collections, environments, and variables stay consistent across everyone on a team, with the same Röle-native import/export the client already supports.
Under the hood:
- Strict
Zodvalidation and centralized error handling across the API - PostgreSQL with a migration workflow and a repeatable Docker reset for local development
- A layered test suite — unit, integration, security, smoke, and end-to-end — enforced in CI
- Automated dependency auditing, secret scanning, and CodeQL static analysis on every push
Where it stands
Both pieces are open source and under active development. The client works fully standalone; the backend is there for the moment a workspace needs more than one person.