Skip to content
Projects

grlt-hub/app-compose has 27 GitHub stars and 1 forks. GitHot measured 0 stars in 24 hours and 0 in 7 days. Last checked 2026-11-14 08:53 UTC. Last push 2026-10-29.

How these counts are measured

What you can do

  • Simplicity — lightweight, no containers/providers/decorators, zero dependencies. Framework-agnostic.
  • Clarity — no magic, no globals; context flows through typed wiring.
  • Reusability — same code, different context per compose.
  • Testability — missing context, duplicates, unused wires fail in CI.

Measured star growth

in 24h
0
in 7 days
0
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

About

App Compose helps you build front-end applications from isolated tasks with explicit dependencies and predictable execution order—without containers, decorators, or framework-specific APIs.

Web & Apps

README.md

Original

App Compose

App Compose helps you build front-end applications from isolated tasks with explicit dependencies and predictable execution order—without containers, decorators, or framework-specific APIs.

npm version bundle size Ask DeepWiki llms.txt

Learn | Guides | Reference

[!NOTE] Beta: This project is currently in beta. The API may change before the stable release.

Features

  • Simplicity — lightweight, no containers/providers/decorators, zero dependencies. Framework-agnostic.
  • Clarity — no magic, no globals; context flows through typed wiring.
  • Reusability — same code, different context per compose.
  • Testability — missing context, duplicates, unused wires fail in CI.
  • Observability — your app as plain JSON; hooks for start, complete, fail.

Adopt it gradually

If you want to use App-Compose for a part of your existing app, you don't have to rewrite the rest. Add it to your stack, and bring in more when you're ready.

See it run

A minimal example built on the three key pieces: Task, Tag, and Wire (how they connect). Two features share data without knowing about each other.

import { compose, createTask, createWire, tag } from "@app-compose/core"

const name = tag<string>("name")
const user = createTask({
  name: "user",
  run: { fn: () => ({ name: "World" }) },
})
const greeting = createTask({
  name: "greeting",
  run: {
    context: name.value,
    fn: (name) => console.log(`Hello, ${name}!`),
  },
})

await compose()
  .step(user)
  .step(createWire({ from: user.result.name, to: name }))
  .step(greeting)
  .run() // Hello, World!

Get started

Try App Compose in the online sandbox without installing anything, or add @app-compose/core with your package manager:

  • npm: npm install --save-exact @app-compose/core
  • pnpm: pnpm add --save-exact @app-compose/core
  • Yarn: yarn add --exact @app-compose/core
  • Bun: bun add --exact @app-compose/core

Continue with the Quick Start.

AI tools

Give your coding assistant the documentation index to find the pages relevant to your task.

DeepWiki

Open deepwiki and ask anything about the codebase.

License

App Compose is available under the MIT License.

Explore related projects