Reactive flows built on async iterators.
Small bundle. Pull-based execution. Familiar operator API.
This is the streamix solution repository — the monorepo where the library is built. It holds the core reactive flows package, its optional add-ons, five demo applications, the documentation sources, and the tooling that ties them together.
A taste of what lives here:
import { interval, map, pipe, take } from '@epikodelabs/streamix';
const ticks = pipe(interval(1000), map(n => `tick ${n}`), take(5));
for await (const t of ticks) console.log(t);Just want to use streamix? You don't need this repo — the library installs from npm:
npm install @epikodelabs/streamixStart with the library README for install and core concepts, or the live documentation for guides and the full API reference.
Want to contribute, explore the demos, or build from source? Read on.
streamix/
├── projects/
│ ├── libraries/
│ │ └── streamix/ # Core npm package (@epikodelabs/streamix)
│ │ ├── src/ # Flows, atoms, scopes, operators
│ │ ├── aggregates/ # Aggregate operators (average, min/max, etc.)
│ │ ├── dom/ # DOM observation utilities
│ │ └── networking/ # HTTP client, WebSocket, JSONP
│ └── apps/
│ ├── app1/ # Stream monitor — live operator demos
│ ├── app2/ # Reactive wizard — scopes + custom renderer
│ ├── app3/ # Brownian motion — animationFrame + Angular
│ ├── app4/ # Travel blog — scroll-driven DOM animations
│ └── app5/ # HTTP client — networking demos
├── docs/ # VitePress documentation source
├── scripts/ # Build, SEO, and docs automation
├── dist/ # Build output & VitePress site
├── README.md # ← You are here
└── package.json # Workspace scripts & dependencies
You'll need Node.js (LTS recommended) and npm.
# Install dependencies
npm install
# Build the library
npm run build
# Run the test suite (or `npm run jasmine:coverage` for coverage)
npm test
# Serve a demo app
ng serve app1
# Build the documentation site
npm run docs:buildThe static site lands in dist/.vitepress/dist/.
| Package | Path | Description |
|---|---|---|
@epikodelabs/streamix |
projects/libraries/streamix/src |
Core reactive flows |
@epikodelabs/streamix/aggregates |
projects/libraries/streamix/aggregates |
Aggregate operators |
@epikodelabs/streamix/dom |
projects/libraries/streamix/dom |
DOM observers |
@epikodelabs/streamix/networking |
projects/libraries/streamix/networking |
HTTP / WebSocket |
Some former companion modules now live as separate packages, compatible with streamix v3:
| Package | Purpose |
|---|---|
@epikodelabs/coroutines |
Workers, structured task ownership, channels, actors |
@epikodelabs/waypoint |
Server-authorized routing for Angular |
@epikodelabs/forms |
Reactive form engine for TypeScript |
| Script | What it does |
|---|---|
npm run build |
Build the Angular/library workspace |
npm run typecheck |
Type-check the workspace with tsc --noEmit |
npm run lint |
Lint with ESLint (lint:fix to auto-fix) |
npm test |
Run the testify test suite |
npm run jasmine |
Run tests headlessly in Chrome |
npm run pack:check |
Dry-run npm pack against the built package |
npm run docs:build |
Full docs pipeline (prepare → generate → build) |
npm run docs:prepare |
Copy markdown & assets into dist/ |
npm run clean |
Auto-fix ESLint issues |
npm run minify |
Minify bundles & regenerate types |
We'd love to hear what you build.
- ⭐ Star the public docs repo if streamix helps you.
- Join GitHub Discussions.
- Share feedback.
GNU AGPL v3 or later
