From Windows 95 vibes to a modern load testing platform - in 4 months.
We've been doing performance and load testing for 15 years. Over the years we've relied on platforms like BlazeMeter and others to get the job done. But the costs have skyrocketed, and the control over those platforms has never been quite enough. At some point we looked at each other and said: let's just build our own.
The first draft was a Windows desktop app that genuinely looked like something straight out of 1995
We chose Apache JMeter as the engine - battle-tested, open source, and endlessly flexible - and paired it with Grafana for real-time visualization of results and metrics. We run everything on our own beastly load engines in our testing lab, which gives us full control over capacity, cost, and configuration.
At first we just ran JMeter in non-GUI mode from the command line. It gets the job done, but managing test files, tracking results, coordinating distributed engines, and keeping everything organized across projects quickly gets gruesome. We needed an orchestration layer that ties it all together and makes it easy to manage.
The first draft was a Windows desktop app that genuinely looked like something straight out of 1995. Drag-and-drop file upload, a debug console, and a UI that would make Windows NT feel right at home. It worked, but we knew we could do better.
What followed was a compressed replay of about 30 years of software evolution in roughly four months:
Then, we ripped out the GUI and shipped a headless server. In parallel, the web client started evolving just as fast. What followed was a compressed replay of about 30 years of software evolution in roughly four months:
The desktop era — A standalone Windows app talking to a console server over raw TCP. You could start tests, transfer files, and watch results come in. Simple, functional, and very 1990s.
The connected era — Encryption, authentication, and a proper web client replaced the desktop app. Real-time event streaming, test history browsing, and the first signs of something that felt like an actual product rather than a utility.
The web application era — The TCP server disappeared entirely, replaced by a REST API and WebSockets. The frontend got a full rewrite in React with a modern dark UI, five-view navigation, and live collaboration so we could both work on the same project simultaneously.
The platform era — A real database replaced scattered files. Project dashboards, project-specific settings, PDF reports, image uploads, test rounds, a JMX test plan analyzer, remote engine management, Grafana links wired into every project, live server configuration, and keyboard shortcuts. It stopped being a tool and started being a platform.
The hardening era — Security audits, input validation, injection protection, graceful error handling, and resilience patterns across the board. The stuff that separates something you use yourself from something you'd trust in production.
47 server releases. 33 client versions. 6 database schema versions. One REST API that went from not existing to having more endpoints than we can count without scrolling.
And honestly? It has completely changed how we work.
What used to involve juggling vendor dashboards, waiting on support tickets, and dreading the next invoice renewal is now fast, fun, and entirely in our hands. We spin up tests on our own load engines the way we want, see results in Grafana the way we want, and iterate without asking anyone for permission.
Sometimes the best software is the kind you build because no existing tool does exactly what you need - and no vendor's pricing page makes you feel good about renewing.