Skip to content
› services

Web, mobile & desktop software.
Pick what you need.

One small studio across the stack, so the front end, the API, and the deploy fit together.

01 / FRONT END

Front-end development that survives the second feature.

Type-safe by default. Componentized so it doesn't ossify. Performance budgets held to in CI.

Product UIs react · next · svelte

Customer-facing apps. Accessibility and i18n are first-class. The performance budget holds.

Design systems tokens · primitives · docs

Versioned package, documented components. One token layer for theme, density, and brand.

Internal tools forms · tables · workflows

The boring software that runs your company. Fast, keyboard-first, and not miserable to use.

Marketing sites ssr · static · cms

Fast by default. Editable by non-engineers. Shipped on push.

React Next.js Svelte TypeScript Tailwind
// 01 → 02 · interfaces meet systems
02 / BACK END

Back-end systems that prefer to be boring.

Postgres-first. Idempotent jobs, well-typed boundaries, observable from day one.

APIs & services rest · typed clients

Versioned contracts and generated clients. Types that hold at the boundary.

Data modeling postgres · schema · migrations

Schema-first, migration-aware. We say "let's normalize that" without irony.

Pipelines & jobs queues · workers · cron

Long-running, scheduled, retried. Idempotent, because production is rude.

Deploy & edge cloudflare · workers · ci

Push to deploy, a preview per branch, rollbacks in one command.

Rust Node TypeScript Postgres SQLite Cloudflare GitHub Actions
// 02 → 03 · server meets device
03 / MOBILE

Mobile apps: one codebase, two stores.

Cross-platform, with native modules only where the experience earns them.

Cross-platform apps react native · flutter

Shared logic, native primitives where they earn it. CI signs and ships to both stores.

Offline-first sqlite · sync

Works on a train. Real conflict resolution, not "last write wins."

Release engineering eas · ota updates

Phased rollouts and over-the-air updates. Store metadata lives in the repo.

Backend integration auth · push · payments

The plumbing every app needs, wired to the same API we built for your web app.

React Native Expo Flutter TypeScript SQLite
// 03 → 04 · server meets device
04 / DESKTOP

Desktop apps that respect the operating system.

Tauri for small, fast cross-platform binaries. Rust underneath when performance matters.

Tauri / Electron cross-platform · web ui

Web-stack UI, native shell. Tauri for small binaries; Electron when the team is in JS.

CLIs & tooling rust · node

Command-line tools and background agents your team keeps reaching for.

Auto-update & signing notarization · installers

Apple notarization, Windows code-signing, Linux packaging.

Web-to-desktop shared ui · one codebase

Ship your existing web app as a real desktop app without maintaining two front ends.

Tauri Rust Electron TypeScript
› questions

Good questions, short answers.

Do you take single-discipline work, or only full-stack engagements?

Both. oxlabs is one small studio across the stack, but you can engage just the front end, back end, mobile, or desktop — or thread several disciplines together into one build.

What does "production as default" mean in practice?

There is no throwaway prototype. Work lands in your repository behind a feature flag, on the same CI as everything else, from the first commit — so what you see in the demo is real software, not a staging-only mock.

Do you work async and remote?

Yes — async by default. Long-form writing over standups, considered comments over reactions, weekly demos and deploys. The work happens in the writing and the code, not in meetings.

How do I start a project?

Email is the most direct line; GitHub and the socials work too. Every message gets a real reply from an engineer who writes code, usually within a business day.

› next

Need just one of these? Or all of them, threaded together?