‹ BackResume ↓
OVERVIEW

One grid engine, three platforms

This project set out to answer a specific technical question: how much of a spreadsheet app's logic can live in one shared core, reused across web, desktop, and mobile? The grid itself is canvas-rendered rather than DOM-based, which is what keeps a sheet with thousands of cells smooth to scroll through.

It's structured as a Turborepo monorepo with a shared TypeScript core and three platform packages: a Next.js 14 web app (Firebase for persistence, ECharts for in-sheet charting), a Tauri 2.0 desktop app wrapping the same web app in a native shell with Rust filesystem access, and a React Native + Expo app for iOS and Android.

TECH STACK

A shared core, three shells

01

Web

Next.js 14, canvas grid rendering, ECharts, Firebase.

02

Desktop

Tauri 2.0 wrapping the web app natively, with Rust for local file read/write.

03

Mobile

React Native + Expo 51, targeting iOS and Android from the same core.

04

Core

A shared TypeScript package for grid logic, formulas, and state — one engine, three shells.

STATUS

One monorepo, one release process

Structured as a Turborepo monorepo so the web, desktop, and mobile builds share one core rather than three separate implementations.

MORE WORK

See all work