Skip to content

Synapse

Architecture framework for Kotlin/Compose that eliminates the coordination problem.

Zero coupling between features

Components share only impulse types. Adding Feature B never requires modifying Feature A.

Cross-cutting concerns, first-class

Auth, analytics, and session management are interceptors — not bolted onto a repository layer.

Real-bus testing, no mocks

Tests run through the actual SwitchBoard with interceptor-based capture.

Compose-native

CreateContext and Node replace the ViewModel entirely — no ceremony.

KSP-wired DI

@SynapseProvider plus Hilt or Koin. Multi-module out of the box.

Benchmarked

~200 ns per SwitchBoard op, ~20 µs per Node in Compose composition, linear scaling at every layer.

Every component in a Synapse application is an isolated state machine with typed inputs and outputs. Components never reference each other — they communicate exclusively through a central SwitchBoard that routes state, reactions, and data requests with a composable interceptor pipeline at every stage.

The coupling between any two components is zero beyond the impulse types they share. This gives you a property most architectures can’t: compositional correctness. If Component A works through the SwitchBoard and Component B works through the SwitchBoard, then A + B works — because the bus is real, never mocked, and the type system enforces the contract.

There are no ViewModels. Compose screens use the Node / CreateContext DSL. Non-Compose contexts use Coordinator. Data fetching is handled by Providers wired automatically via KSP through Hilt or Koin.

Synapse Core

A standalone utility library of reactive operators for Kotlin Flowgate, squash, pace, combo, chunk, shutter, and logic gates on StateFlow<Boolean>. Usable on its own, no Arch required.

Synapse Navigator

An IntelliJ / Android Studio plugin that makes the bus legible in the editor — gutter icons between producers and consumers, a project-wide topology tool window, inlay hints, and an inspection that catches unconnected channels. Read more.