Lead Frontend / Fullstack Engineer · Founder · Warsaw, CEST

Dominik Żurawski

I've co-founded two products and led frontend for multi-tenant SaaS web & mobile apps in production. 8+ years of React and TypeScript, and a habit of owning the whole problem architecture, UI, customer calls, whatever the thing actually needs.

Dominik Żurawski
Founder first

I've been on the other side of the table.

I co-founded a SaaS company and ran it from idea to production. Product, design, infrastructure, and a small distributed team. I made the call to pivot when the marketplace wouldn't hold, and the call to shut down when efforts never turned into revenue. That's where the founder mindset came from. It was what the job required.

Today I lead frontend architecture (with experience contributing to backend development) for SaaS products in React and TypeScript. Same approach, different role. Find the thing that actually matters, own it end to end, ship it before it's perfect, then make it good.

8+
Years building
2
Products co-founded
16+
Companies shipped for. Agency, contract and in-house.
How I work

What happens after you hand me the problem.

Ship first, perfect second

A working thing in front of a user beats an elegant thing on a branch. I've never regretted shipping early. Polishing something nobody wanted burns time.

I take the whole problem

If it needs a Figma file, a customer call, a CI pipeline or a conversation with your sales team, that's part of the task. I don't hand a problem back because part of it wasn't frontend.

I make trade-offs out loud

Speed versus purity is a decision, not an accident. I'll tell you which one I picked and what it cost. Every case study below names the trade-off I made.

I kill my own ideas

I pivoted one company and shut down another. Evidence beats attachment, including my own.

Ambiguity is where I'm most useful

No spec is not a blocker. It usually means the interesting part hasn't been figured out yet.

I default to owning it

If something's broken and nobody's picked it up, assume I have.

Experience

Where I've built.

Jun 2024 - Present

Lead Frontend Engineer @ Orbify

  • Own frontend architecture across 3 multi-tenant SaaS products. Every customer gets custom branding without a forked codebase
  • Built the EUDR traceability platform from zero. Customers use it to prove their supply chains are deforestation-free under EU law
  • Built the LNG vessel monitoring system that combines multiple data sources such as satellite imagery, AIS data, and machine learning to deliver clarity for smarter LNG trading decisions
  • Lead a team of 2 frontend engineers within a cross-functional team of 6 (2 backend engineers, 1 product designer). I set the architecture, good practices, run code review, and unblock rather than gatekeep
  • Shortened release cycle by introducing a feature flag system and integration tests into the release pipeline
  • Ran a full refactor of a legacy codebase while the team kept shipping features. No freeze, no rewrite-from-scratch, no stalled roadmap. Decreased bundle size and improved build time
  • Stayed flexible, contributing to UI/UX design in Figma and attending customer calls when needed, while primarily working as Lead Frontend Engineer
React TypeScript TanStack Query Zustand shadcn/ui OpenLayers Mapbox AWS Figma Auth0 Vitest MSW Biome Tailwind
Jul 2022 - Jun 2024

Senior Mobile & Web Engineer @ Solidstudio

Shipped React Native and React products in EV industry for GreenCell, Fleet, ElectricMiles and GreenWay, bridging business needs and engineering decisions.
  • Took React Native apps from zero to the App Store and Google Play. Architecture, implementation, CI/CD, release, the whole lifecycle
  • Built the app that controls GreenCell's Habu mobile EV charger over Bluetooth, with automatic cellular fallback when BLE degrades. Finished before deadline, giving more time for pre-release testing
  • Built the admin panel operators use to manage EV charging infrastructure
  • Worked directly with clients translating business requirements into engineering decisions rather than waiting for them to arrive as tickets
React Native TypeScript Next.js GraphQL AWS Cognito S3 Buckets Stripe react-native-ble-plx Restyle Codemagic Jest Expo
Feb 2022 - Jul 2022

Senior Web Engineer @ fireup.pro

Joined as a technical leader bridging business goals and engineering execution, driving architecture decisions, and project delivery across client products.
  • Led architecture and estimation for client projects, translating commercial constraints into technical scope
  • Conducted product and technical audits, identifying opportunities to improve performance, UX, and business outcomes
React TypeScript Next.js AWS
Oct 2020 - Feb 2022

Co-founder & CTO @ Orapa.co & Intro.so

Co-founded two products with the same team - a marketplace for paid warm introductions, and a sales-intelligence tool that surfaced who you were about to meet.
  • Owned engineering, UI/UX, infrastructure and a distributed team, MVP through production
  • Shipped an AI sales-training chatbot on GPT-3 in 2021. text-to-speech, speech-to-text, intent analysis - two years before ChatGPT made any of it routine
  • Built a Chrome extension that injected meeting intelligence into Google Calendar. It reached 400+ users
  • Validated or killed each idea in days rather than months. Pivoted once, wound down once, both calls made on evidence rather than attachment
React Next.js Electron Firebase Stripe Connect Puppeteer Express.js MongoDB
Jan 2018 - Oct 2020

Software Engineer @ Freelance

Built full-stack web applications for startups and local businesses, e.g. custom yacht booking systems. Developed websites and optimized SEO to improve organic search visibility.
React TypeScript Express.js
Selected work

Real problems, real trade-offs.

A few breakdowns of how I approach building, and the trade-offs that come with it.

The problem

When I joined Orbify, there was no dedicated frontend architecture and no one owning frontend decisions. The codebase had grown fast into a large, inconsistent surface built on outdated patterns, the kind that gets progressively harder to build on the longer it's left alone.

The approach

I led a team through a full refactor, replacing outdated patterns with a modern React architecture based on bulletproof-react. The key decision was speed of delivery versus technical purity. Instead of a full monorepo, I adapted bulletproof-react so multiple apps could share a common component set and core logic, like auth and API clients, without taking on monorepo overhead. It was a deliberate trade-off suited to a startup that needed to keep shipping while we rebuilt underneath it.

The result

The application got faster, but the bigger win was maintainability. In a startup shipping quickly, a codebase the whole team can move through confidently matters more than any single clever pattern.

  • Building new features is quick and easy
  • The app is easily testable
  • Bugs are found and resolved quickly
  • The team keeps moving without stalling, thanks to the patterns and way of working we established together
React TypeScript Architecture Team Leadership
The problem

GreenCell, an EV technology company, needed a mobile app that could reliably control and monitor Habu, their mobile EV charger, in real time. No single connection method was good enough on its own. Bluetooth offers near-instant control but only works at close range, while cellular reaches anywhere but with more delay. The app had to feel instant regardless of which one was actually available.

The approach

I built the app in React Native with a connection-quality-aware architecture. BLE first, since it let us poll and control Habu with almost no delay, and an automatic fallback to 3G when Bluetooth was unavailable or too weak, accepting slightly more latency in exchange for the charger staying reachable from anywhere.

The result

The app stayed responsive whether you were standing next to your charger or controlling it remotely, switching connections automatically without the user ever having to think about it.

  • Designed a connection-quality-aware architecture that automatically switched between BLE and cellular based on signal availability
  • Achieved near-instant polling and control over Bluetooth for close-range use
  • Handled the harder case of keeping the app usable over cellular when Bluetooth degraded, instead of letting it just fail
  • Shipped a production app used by real customers to control physical EV chargers
React Native Bluetooth (BLE) iOS EV / IoT
The problem

Solidstudio was a software agency where I worked as a Senior Mobile and Web Engineer, building a whitelabel product that customers could license and customize into their own branded apps. The challenge was architectural. Each customer app lived in its own forked repository, with deep customizations and independent production releases. We needed a way to maintain those customer forks while continuously shipping improvements from the shared product core without creating unmanageable merge conflicts.

The approach

I focused on designing an architecture and development workflow around a fork-based whitelabel model. The goal was to clearly define what belonged to the shared core versus customer-specific customization, making it possible to propagate updates from the main product into multiple customer forks. I also maintained customer admin panels using React and Ant Design, allowing each client to manage their app-specific configuration without requiring code changes.

The result

The architecture enabled us to operate a true whitelabel product at scale. Customers could maintain deeply customized apps while still benefiting from ongoing improvements to the shared product. Instead of every customer becoming a separate codebase that drifted over time, updates could be systematically integrated across multiple live applications.

  • Designed a whitelabel architecture that separated the shared core from each customer's customization layer, keeping updates conflict-free across many live apps
  • Built the mobile app in React Native with Expo modules, shipped independently for each customer under their own Apple Developer account
  • Maintained customer-facing admin panels in React and Ant Design so each whitelabel customer could manage their own configuration
  • Kept the product update-able and maintainable at scale, instead of re-solving the same conflicts for every customer
React Native Expo React Ant Design Whitelabel Architecture
The problem

Coming out of Orapa.co, we needed a product sales teams would actually want to use, not just another feature nobody asked for, and we needed to find that out fast without spending months building the wrong thing.

The approach

We first tested an interactive AI sales training chatbot combining text-to-speech, speech-to-text, and natural language intent analysis, built on GPT-3 years before ChatGPT popularized LLMs, when the APIs, tooling, and best practices we take for granted today barely existed. We then simplified into Intro.so. A standalone Electron desktop app and a Chrome extension that injected insights about the people you were meeting directly into Google Calendar, right before your Google Meet call. Under the hood it was a TypeScript codebase with a Node/Express backend, sourcing data by scraping LinkedIn with Puppeteer and combining it with third-party data providers.

The result

The Chrome extension became the strongest signal across everything we built. Hundreds of customers used it, real proof that people wanted meeting insights surfaced automatically. But we never built out the layer needed to turn that adoption into a fully monetizable product, so revenue never followed and we eventually wound the company down. The company ultimately didn't become a sustainable business, but the experience fundamentally shaped how I build products today. Validate quickly, measure honestly, and optimize for solving real customer problems rather than falling in love with an idea.

  • Built and shipped a working AI product on GPT-3 years before ChatGPT existed, when off-the-shelf APIs and tooling weren't an option
  • Grew the Chrome extension to hundreds of customers, the clearest product-market signal across everything we built
  • Shipped the extension to the Chrome Web Store and distributed the Electron desktop app directly through our own website
  • Recognized that adoption alone wasn't a business, and made the call to wind down rather than operate without a path to revenue
TypeScript Node / Express Electron Chrome Extension Puppeteer AI / LLM Founder
The problem

Even with money, you can't move fast without a network, especially in tech. Orapa.co set out to fix that. A marketplace where you could pay for a warm introduction to people worth knowing.

The approach

We built it quickly and deliberately kept scope tight. Just enough to get real supply and demand in front of each other and learn whether the model held up, rather than over-engineering a product nobody had validated yet.

The result

We validated product-market interest fast and just as fast ran into the problem that kills most two-sided marketplaces. We couldn't fill the supply side quickly enough for the model to work. Rather than keep pouring time into a marketplace that wasn't holding together, we made the call to pivot.

  • Validated the marketplace concept in weeks, not quarters, by shipping fast and measuring real supply and demand
  • Identified that marketplace liquidity, not engineering execution, was the fundamental bottleneck
  • Made the call to pivot early rather than keep investing in a model that wasn't working
Marketplace Product Strategy Founder
Toolkit

What I build with.

Web & Mobile

React Next.js TypeScript React Native Expo TanStack Query Tailwind Zustand shadcn/ui Electron Restyle Figma react-native-ble-plx

Product & Infra

Node Express.js GraphQL AWS Vercel Firebase Stripe Mapbox GitHub Actions OpenLayers Auth0 AWS Cognito S3 Buckets Stripe Connect Puppeteer MongoDB

Quality

Design Systems Testing, Unit through E2E Accessibility CI/CD Vitest Jest MSW Biome Codemagic

Leading

Architecture Ownership Code Review Culture Mentoring Scoping & Estimation Working with Customers

AI-Assisted Engineering

Claude Code Prompt-Based Prototyping AI-Assisted Review

I use it to compress the distance between an idea and something a customer can click.

Let's build something.

Open to founding engineer roles, senior engineering leadership, and contract work with teams that ship.

© Dominik Żurawski