StructFS
One interface. Every system.
Test anything. Swap anything. Compose everything.
Every data source your application touches (APIs, databases, file systems, cloud services) has its own client library, its own error model, its own testing story. You learn, test, and replace each one separately.
StructFS makes them all the same thing.
Test without mocking
Swap a store at a path. No network, no mock server, no test doubles for six client libraries.
Compose without glue
Mount stores at prefixes. Caching, routing, proxying: tree configuration, not application code.
Port without rewriting
Same logic, different stores. Local, remote, in-process. Change the wiring, keep the code.
How it works
Two operations
Every interaction is read(path) or write(path, value). The simplicity is the point: complexity lives in the paths and values, not the verb set.
Structured values
Data crosses boundaries as typed values: the same model every serialization format converges on. No parsing, no encoding, no format negotiation.
Paths carry meaning
A path names a resource, an action, or a capability. Different paths for different things, not different verbs for the same thing.
Stores compose into a tree
Mount a database at /users, a cache at /cache, a clock at /time. The tree is the wiring diagram. Rewire it without changing application code.