Ukasyah Rahmatullah Zada · l7aromeo

What you describe, lowered until it is pixels.

Jakarta · WIB
Rust · TypeScript · Skia
7 years · 6 packages

The same descent, twice

scroll to descendtap a depth below
representation · text
// meo-canvas — a scene, not a component
await Root({
  width: 880,
  padding: 24,
  backgroundColor: '#0B0C0E',
  flexDirection: 'column',
  gap: 12,
  children: [
    Text('Lowering', { fontSize: 32, color: '#E9E6E0' }),
    Text('one pass at a time', { fontSize: 13, color: '#8A8F98' }),
    Row({
      gap: 8,
      children: [Box({ width: 64, height: 26 }), Box({ width: 64, height: 26 })],
    }),
  ],
})
meo-canvas, drawing through meo-skia-canvas · image bytes, on a server with no browser in it

Two descents. @meonode/ui writes source that @meonode/compiler lowers, and it ends at a React element tree. meo-canvas solves its own scenes with Taffy and meo-skia-canvas paints them on Skia, server-side, with no React anywhere in it. Neither line covers all five depths, and switching between them shows where each one stops.

The stack, as owned

all repositories ↗
the react line: source, compiled, then React
depth 00 · source
00source

@meonode/ui

TypeScript · React · Emotion · source ↗

Type-safe React components without JSX: function-based composition, CSS properties as props, context theming and opt-in per-node memoization, with full Server Components support.

42,256 pulls / yr
depth 00 · source
00source

@meonode/mui

TypeScript · React · MUI · source ↗

A lightweight wrapper putting @mui/material components behind MeoNode factories, so an MUI tree composes the way the rest of a @meonode/ui page does.

12,567 pulls / yr
depth 01 · compile
01compile

@meonode/compiler

Rust · SWC · WebAssembly · TypeScript · source ↗

Experimental SWC plugin (Rust compiled to wasm32-wasip1) that rewrites @meonode/ui call sites at build time so the runtime can skip its own per-render work.

10,745 pulls / yr
the image line: scenes, solved and painted, server-side
depth 00 · source
00source

meo-canvas

Rust · Skia · Taffy · Neon · TypeScript · source ↗

Turns a declarative scene description into a rendered image, laying it out with CSS flexbox, grid and block rules and drawing it on Skia.

30,682 pulls / yr
depth 04 · raster
04raster

meo-skia-canvas

Rust · Skia · N-API · Node.js · TypeScript · fork of samizdatco/skia-canvas ↗ · source ↗

The HTML Canvas 2D API, off-screen and on-screen, on Skia. Output matches Chrome's <canvas> closely, while doing things the browser's canvas cannot.

7,180 pulls / yr
also published: neither descent, and Chu Tao runs on it
depth 00 · source
00source

meocord

TypeScript · Discord.js · Node.js · source ↗

Decorator-based framework for building Discord bots on Node, bringing controllers, services and dependency injection to discord.js.

33,436 pulls / yr

Nothing here sits at 02 element and 03 layout. React owns the element tree, and the React line stops there. The image line passes through both (meo-canvas builds a tree and solves it with Taffy), but a package is placed by what it is, not by every step it performs.

Built on it

what the layers are for
depth 00 · source
00source

Chu Tao

TypeScript · Rust · meocord · Discord.js · axum · Next.js · PostgreSQL · Redis · RabbitMQ · private source

Multi-service Discord bot across four live-service games (Genshin Impact, Honkai: Star Rail, Zenless Zone Zero and Neverness to Everness): a bot on meocord (chutao-djs), a Rust REST API on axum and SeaORM (chutao-api), and a Next.js portal (chutao-web) for OAuth and account linking.

— deployed

What comes out

server-rendered · cached hourly

The image below was not screenshotted. meo-canvas drew it inside this server, and because it is a Neon addon it cannot run in your browser. The WebP is encoded from the same figures the panels above report.

A card listing both stacks by depth, drawn by meo-canvas on the server

Ledger

2016 —
JUN 2026 — PRESENT

Senior Software Engineer

PT Media Info Grup Indonesia · Jakarta
  • Rewrote modules of a long-running Delphi system as TypeScript services, verifying each module against the original implementation's behaviour and enforcing a per-endpoint OpenAPI contract.
  • Sole author of the shared Elasticsearch client library used across the company's services, published as an internal npm package.
  • Migrated a production search backend off a legacy IDOL engine onto Elasticsearch.
  • Hardened write paths: made multi-step writes atomic and correctly scoped, and reshaped validation errors so the front-end could localize them.
JUN 2024 — MAY 2026

Frontend Programmer

PT Administrasi Medika · Jakarta
  • Built a bridge API using NestJS to integrate Indonesia's SatuSehat platform into existing TPA insurance systems, translating bidirectionally between FHIR and internal structures with OAuth2 authentication.
  • Developed a Progressive Web App with Next.js for marketing promos and food-outlet sales, integrated with a Flutter application via access token passing.
  • Built a provider management system for hospital medicine-order workflows, with real-time verification and Redux state management.
2022 — PRESENT

Open Source Framework Developer

Self-directed
  • The packages above, in two unrelated lines: a type-safe React composition layer without JSX, with its Rust SWC compiler, and a Taffy-and-Skia scene renderer over a Canvas 2D rasteriser. Plus a Discord bot framework for Node, which belongs to neither.
  • Implemented CI/CD pipelines and automated testing for every published package.
2019 — 2021

Freelance Application Developer

Self-employed
  • Delivered full-stack web and mobile solutions with React Native, Next.js and Laravel.
  • Managed deployment pipelines with Docker and GitLab CI/CD.
2016 — 2019

Associate of Communication, Informatics Management

Politeknik Informatika Nasional Makassar · Makassar