Selected work

Case study · 02

2026 · Product design & full-stack development

OpenWorkspace

A cross-platform desktop automation product backed by a purpose-built AWS service.

OpenWorkspace homepage explaining how to save apps, windows, tabs, and layouts
Year
2026
Role
Product design & full-stack development
Stack
Next.js/Vercel · Fastify · AWS
Status
Live and in production

The work, before the process.

Two representative views establish the range before the case study moves into the decisions behind them.

OpenWorkspace how-it-works section explaining the workspace workflow

How it works

A visual sequence turns a multi-step desktop workflow into an approachable product story.

OpenWorkspace capabilities page headed The road to a fully restorable desktop with workspace and browser restoration panels

Capabilities

A capability map separates what the product restores today from the wider desktop roadmap.

A product that spans the web, cloud, and installed desktop clients.

I designed the Next.js product and account experience and built the Fastify service running on AWS. Together they support licensing, checkout, accounts, workspace data, and requests from the Windows and macOS clients.

The defining constraint is release timing: installed clients do not all update at once, so the API must evolve without silently breaking software already in use.

01

Product scope

One promise crosses four independently deployed layers.

The website explains the product and handles account flows. Fastify owns service APIs, PostgreSQL stores product state, and native clients perform desktop automation. Users experience those separately shipped layers as one product.

02

Compatibility

The installed client is part of every backend decision.

Before an API field changes, its Windows and macOS callers have to be traced. Server updates preserve the contracts existing clients expect while authentication, licensing, and workspace behavior evolve.

03

Response

Simplify the service without guessing what clients need.

I traced native callers before changing responses, consolidated license creation paths that had drifted, and tightened authentication control flow. Backend changes are grounded in the behavior of the installed software they serve.

A shipped desktop app is a fixed constraint

Installed clients cannot change until a new release ships. Server updates therefore preserve their existing contracts, and client source is checked before any response field is removed.

AWS keys were being handed to every client

License validation returned raw IAM credentials that the desktop client did not use. After confirming that in the client source, I removed the field without changing client behavior.

A missing return left admin routes open

The authentication decorators returned a 401 but did not stop execution, allowing protected handlers to continue. Adding the missing return fixed the control-flow error.

Three ways to create a license became one

Checkout, the external API, and the admin UI created licenses through separate paths with different fields and responses. They now call one shared function instead.

One stack from product story to native client.

The web experience, TypeScript service, PostgreSQL data layer, AWS infrastructure, and native desktop code are designed as one connected product rather than separate deliveries.

What I owned

  1. 01

    Product positioning and responsive Next.js/Vercel frontend

  2. 02

    Complete Fastify backend and web-server development

  3. 03

    AWS EC2 application hosting and AWS RDS integration

  4. 04

    Request handling for Windows and macOS desktop clients

Technology roles

Web experience

  • Next.jsProduct, account, research, and trial experience
  • ReactComponent model across the public web application
  • TypeScriptShared type safety throughout the web and API layers
  • VercelFrontend build and deployment

Cloud service

  • Node.jsRuntime for the application service
  • FastifyLicensing, account, checkout, and client APIs
  • Drizzle ORMTyped queries and database migrations
  • PostgreSQLProduct data hosted through AWS RDS

Desktop clients

  • C++Core Windows desktop automation client
  • .NETWindows application and system integrations
  • SwiftmacOS client built with SwiftUI and AppKit

A web-to-desktop product architecture.

The public frontend, cloud service, database, and desktop clients work as one system designed and developed end to end.

  1. Frontend

    Next.js product experience deployed on Vercel

  2. Backend

    Fastify web server running on AWS EC2

  3. Database

    AWS RDS

  4. Clients

    Windows and macOS desktop applications sending requests to the backend

Readable views of the site and the system behind it.

Live and in production

Available in production today; the live experience reflects the system shown throughout this case study.

Discuss a similar project
Next case study

Pay It Forward Card Shows