Stately

Stately is a composable state management framework for building full-stack applications with Rust and TypeScript/React.

What is Stately?

Stately shines with applications that are heavily configuration-driven, but the use cases are not intentionally limited to any particular use case. By establishing a foundation around elementary concepts, in Stately's case 'entities' and 'collections', much of the "how" of application development is simplified, allowing the developer to focus on the "what" and the "why".

Stately provides a unified approach to state management across your backend and frontend:

  • Backend (Rust): Define entities with derive macros, get automatic CRUD APIs, OpenAPI generation, and type-safe state management
  • Frontend (TypeScript/React): Consume your API with full type safety, render schema-driven forms, and extend with plugins

Why Stately?

The goal of Stately is to drastically reduce the boilerplate needed to take the denotational semantics of your application into a fully functioning, production-ready state in a fraction of the time. With this foundation in mind, the Stately platform is designed to grow around type-safe, sound architectures. This has an outsized benefit, in my opinion, for the next phase of application development as I see it: dynamic, AI-native applications. To learn more about the direction this is headed, check out the docs on how Stately aims to be AI-friendly.

Core Packages

Backend (Rust)

CrateDescription
statelyCore types, traits, and collections for state management
stately-deriveProcedural macros for entity, state, and API generation

Frontend (TypeScript)

PackageDescription
@statelyjs/statelyFull runtime with entity hooks, views, and codegen CLI
@statelyjs/uiBase UI components, layout, and plugin infrastructure
@statelyjs/schemaSchema type system and runtime creation

Plugins

Stately is designed to be extended with plugins that provide both backend and frontend capabilities. Currently, Stately provides two out-of-the-box plugins:

PluginBackendFrontendDescription
Filesstately-files@statelyjs/filesFile upload, versioning, and management
Arrowstately-arrow@statelyjs/arrowData connectivity and SQL query execution

Next Steps

Installation is easy, follow the Installation guide to get setup. If you are setup and ready to go, follow the Quick start to learn how to build your first Stately application.

For more details on the motivation behind Stately, check out Why Stately.