Skip to content

GeaStack

One TypeScript codebase, compiled native—from microcontrollers to consoles.

TypeScript. JSX. Real CSS. Native binaries for every screen you ship on.

Website · Docs · Examples · CLI

GeaStack is a native device UI stack for building product interfaces with TypeScript, JSX, and real CSS, then compiling them ahead of time to native binaries for microcontrollers, Linux and Windows desktops, macOS, iOS, Android, and Xbox—and to native servers, where the same compiler turns node:http applications into binaries.

The device runs no browser and no JavaScript VM. The compiled binary is the app.

Watch It Run

CSS 3D cube running on ESP32 with GeaStack

Real CSS transforms, perspective, and keyframes running natively on an ESP32-S3 AMOLED board.

What A Gea App Looks Like

This is the shape of a Gea app: a small TypeScript store, a component class that reads it, and normal CSS classes compiled into the native target.

src/counter-store.ts

import { Store } from '@geastack/core'

class CounterStore extends Store {
  count = 0

  decrement() { this.count = this.count - 1 }
  increment() { this.count = this.count + 1 }
  reset() { this.count = 0 }
}

export const counter = new CounterStore()

src/App.tsx

import { ReactiveComponent } from '@geastack/core'
import { counter } from './counter-store'
import './styles.css'

export class App extends ReactiveComponent {
  template() {
    return (
      <div class="screen">
        <span class="eyebrow">GEASTACK</span>
        <span class="title">Shared store</span>
        <span class="count">{counter.count}</span>
        <div class="controls">
          <button class="button secondary" onClick={() => counter.decrement()}>−</button>
          <button class="button primary" onClick={() => counter.increment()}>+</button>
        </div>
        <button class="reset" onClick={() => counter.reset()}>Reset</button>
      </div>
    )
  }
}

src/index.tsx

import { mount } from '@geastack/core'
import { App } from './App'

mount(App)

src/styles.css

.screen {
  display: flex;
  flex-direction: column;
  width: 100vw;
  height: 100vh;
  gap: 16px;
  align-items: center;
  justify-content: center;
  background-color: #080b12;
  color: #f8fafc;
}

.count {
  font-size: 76px;
  line-height: 1;
}

.controls {
  display: flex;
  flex-direction: row;
  gap: 16px;
}

.button {
  width: 92px;
  height: 58px;
  border-radius: 14px;
  border-width: 2px;
  font-size: 30px;
}

Create, set up, and flash an app with:

npx @geastack/create-geastack my-app
cd my-app
npx gea setup
npx gea flash --board <your-board> --monitor

gea setup walks you through your board, names it, and prints the exact gea flash line to run—<your-board> is the alias you pick there.

Packages are published under the @geastack scope: @geastack/create-geastack for project creation and @geastack/cli for the project-local CLI. Both keep the product-facing commands as create-geastack and gea.

Why GeaStack Exists

Modern hardware products usually become several UI products at once: one stack for firmware, another for desktop tooling, another for mobile, and another for web previews. GeaStack keeps the productive app model developers already know—components, state, JSX, CSS, and Canvas-style drawing—and lowers it to native targets.

What you write What GeaStack builds
TypeScript and JSX components Target-native application code
Real CSS Native layout, styling, animation, and media behavior
Canvas-style drawing Native device draw calls for maps, charts, games, and dashboards
One app manifest Web preview, ESP32-class boards, GeaOS/Linux, Windows, macOS, iOS, Android, and Xbox targets

Targets

Target Use it for
Web simulator Fast local iteration and screenshots
ESP32 / ESP32-S3 / ESP32-P4 Watches, panels, knobs, dashboards, and product UI bring-up
GeaOS Linux-backed devices and shellable hardware targets
Linux desktop Desktop apps and Raspberry Pi OS panels
macOS Native desktop apps and companion tools
iOS Native mobile apps and device companion experiences
Windows Win32 desktop apps driven by real child-window controls
Android Native Android apps: compiled with the NDK, rendered with real Android views
Node services node:http servers compiled to native binaries
Xbox Games and 3D scenes on a retail Series X/S in Dev Mode, through ANGLE on D3D11

Start Here

For a new app:

npx @geastack/create-geastack my-app
cd my-app
npx gea setup
npx gea dev

For a Waveshare ESP32-S3 AMOLED board:

npx @geastack/create-geastack my-panel
cd my-panel
npx gea setup
npx gea flash --board <your-board> --monitor

For a richer example:

npx @geastack/create-geastack watch-demo --starter example --example watch
cd watch-demo
npx gea setup
npx gea flash --board <your-board> --monitor

Repository Map

Repository Purpose
cli gea and create-geastack: project creation, setup, build, flash, monitor, examples, and diagnostics
core App-facing API, runtime sources, UI engine scaffolding, host abstractions, and Gea compiler plugin
compiler geatsc, the TypeScript-to-native compiler path
examples Example apps for web, ESP32, GeaOS, Windows, macOS, and iOS
tutorials Step-by-step learning paths for node and embedded targets
targets ESP32, RP2350, board metadata, device helpers, flash, monitor, OTA, and screenshots
apple macOS and iOS native targets
windows Native Windows (Win32) build target and Windows SDK bindings
android Native Android target
linux Native Linux desktop build targets
simulator Web simulator and browser-based development loop
node-compat node:http applications compiled to native binaries
native-webgl-angle Native WebGL compatibility layer for the Three.js path
skills Agent skills for building GeaStack apps and targets

What Makes It Different

  • Ahead-of-time native output. TypeScript, JSX, and CSS compile before the app reaches the device.
  • No browser dependency. The target runs a native binary, not a webview.
  • One app model across product surfaces. MCU displays, Linux panels, Windows and macOS desktops, mobile apps, console games, and native servers can share architecture and source patterns.
  • Real CSS where it matters. Layout, transforms, animations, media queries, custom properties, gradients, shadows, and font rasterization are part of the native UI path.
  • Hardware-aware tooling. Board selection, serial discovery, ESP-IDF setup, flashing, monitoring, OTA, screenshots, and target metadata are built into the CLI.

Contributing

Contributing does not require memorizing the whole stack. Good first contributions usually live at one boundary:

  • improve an example app;
  • add or verify board metadata;
  • improve CLI diagnostics;
  • document a hardware bring-up path;
  • add tests around a target helper;
  • polish docs where a first-time user would get stuck.

If you are bringing up a new board, start with:

npx gea setup

Choose Custom board profile, pick the closest base target, and save the generated .gea/boards/<alias>.json profile with links to the schematic, display controller, touch controller, storage, wireless, audio, GPS, and sensor details.

License

Part License
Framework, compiler, CLI, simulator, and the desktop, mobile, and Node targets Apache-2.0
Embedded board support—the targets repository and @geastack/chips GPL-3.0-only
Examples, tutorials, and skills MIT

The embedded board support is the only part under copyleft. Building a product on the framework, the compiler, or the desktop, mobile, and Node targets carries no obligation to publish your source.

  • Open-source firmware: free.
  • Evaluation, prototypes, and internal devices: free. The GPL's conditions apply when you distribute, not when you use.
  • Closed-source firmware shipped through the embedded target: needs a commercial license. Contact contact@geastack.com.

Links

Popular repositories Loading

  1. examples examples Public

    Example Gea apps, used by the simulator and all targets.

    TypeScript 107 1

  2. compiler compiler Public

    geatsc: compiles TypeScript to C++ for GeaStack targets.

    TypeScript 41 2

  3. core core Public

    Core Gea packages: app API, runtime, UI engine, host abstractions, reactivity.

    C++ 7 2

  4. cli cli Public

    gea CLI: create, build, simulate and flash GeaStack projects.

    JavaScript 5 1

  5. windows windows Public

    Windows target for GeaStack: Win32 renderer and Windows SDK bindings.

    C++ 3

  6. simulator simulator Public

    Browser simulator and web target for Gea apps.

    HTML 3 2

Repositories

Showing 10 of 17 repositories
  • apple Public

    macOS (AppKit) and iOS (UIKit) targets for GeaStack, with Apple SDK bindings.

    geastack/apple's past year of commit activity
    Objective-C++ 2 Apache-2.0 0 0 2 Updated Sep 25, 2026
  • cli Public

    gea CLI: create, build, simulate and flash GeaStack projects.

    geastack/cli's past year of commit activity
    JavaScript 5 Apache-2.0 1 0 0 Updated Sep 25, 2026
  • simulator Public

    Browser simulator and web target for Gea apps.

    geastack/simulator's past year of commit activity
    HTML 3 Apache-2.0 2 0 0 Updated Sep 24, 2026
  • core Public

    Core Gea packages: app API, runtime, UI engine, host abstractions, reactivity.

    geastack/core's past year of commit activity
    C++ 7 Apache-2.0 2 53 1 Updated Sep 24, 2026
  • windows Public

    Windows target for GeaStack: Win32 renderer and Windows SDK bindings.

    geastack/windows's past year of commit activity
    C++ 3 Apache-2.0 0 0 0 Updated Sep 24, 2026
  • examples Public

    Example Gea apps, used by the simulator and all targets.

    geastack/examples's past year of commit activity
    TypeScript 107 MIT 1 0 0 Updated Sep 24, 2026
  • compiler Public

    geatsc: compiles TypeScript to C++ for GeaStack targets.

    geastack/compiler's past year of commit activity
    TypeScript 41 Apache-2.0 2 0 0 Updated Sep 24, 2026
  • .github Public

    geastack organization profile.

    geastack/.github's past year of commit activity
    0 0 0 0 Updated Sep 23, 2026
  • android Public

    Android target for GeaStack: packages Gea apps as a WebView APK.

    geastack/android's past year of commit activity
    C++ 1 Apache-2.0 0 0 0 Updated Sep 23, 2026
  • targets Public

    ESP32 and RP2350 targets for GeaStack: board sources, board catalog, OTA clients, build/flash adapter. GPL-3.0-only.

    geastack/targets's past year of commit activity
    C++ 1 GPL-3.0 1 0 0 Updated Sep 23, 2026

People

This organization has no public members. You must be a member to see who’s a part of this organization.