awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
dotnet-state-machine avatar

dotnet-state-machine/stateless

0
View on GitHub↗
6,191 stars·806 forks·C#·16 views

Stateless

Stateless is a .NET state machine library used to manage complex object behaviors and lightweight workflows through C# code. It functions as an asynchronous workflow engine that executes state transitions, guards, and entry-exit actions using asynchronous tasks.

The library implements a hierarchical state machine, allowing child states to inherit transitions and properties from parent superstates. It includes a state persistence framework that decouples state tracking from machine logic by reading and writing the current state to external properties or databases. Additionally, it features a graph visualization exporter that generates DOT or Mermaid formats to render workflow configurations as visual diagrams.

The system covers transition mapping with support for reentrant and internal transitions, predicate-based guard clauses, and parametric trigger dispatch. It also provides capabilities for machine configuration introspection, state change notifications, and the execution of synchronous or asynchronous logic during state entries and exits.

Features

  • Application State Machines - Implements a .NET state machine library for managing behavioral transitions and lifecycles of application-level objects.
  • Architectural State Machines - Provides a .NET state machine library for managing transitions between complex object states within an application architecture.
  • Application State Management - Manages complex object behaviors and application logic through defined states and transitions to eliminate nested conditionals.
  • External State Stores - Provides an external state store mechanism to decouple state tracking from machine logic via getter and setter delegates.
  • State Transition Handlers - Executes synchronous or asynchronous logic during state changes with access to trigger and source state details.
  • State Lifecycle Actions - Automatically runs specific setup and cleanup logic when a state is entered or exited.
  • Asynchronous State Transition Orchestration - Orchestrates state transitions and guard conditions using asynchronous tasks to ensure application responsiveness.
  • Hierarchical State Composition - Supports hierarchical state organization where child states inherit transitions and behaviors from superstates.
  • Asynchronous State Transitions - Executes state transitions, entry, and exit handlers asynchronously to prevent thread blocking.
  • Transition Guard Predicates - Evaluates boolean predicate functions at runtime to determine the destination state when multiple transitions exist.
  • Transition Guards - Evaluates conditional logic via predicate functions to resolve destination states for triggers.
  • Hierarchical State Machines - Implements hierarchical state machines that organize workflows into parent and child states with behavioral inheritance.
  • State Persistence Frameworks - Provides a framework for reading and writing the current state to external properties or databases to maintain continuity.
  • State Transition Mapping - Maps trigger events to source and destination states to define the system's logical flow.
  • State Graph Export - Exports internal state machine configurations into visual graph formats like DOT and Mermaid.
  • State Machine Visualizations - Generates DOT and Mermaid graph definitions to visualize state machine configurations as diagrams.
  • Parametric Transitions - Enables sending data along with a trigger to influence the behavior of state transitions or resulting actions.
  • Parametric Trigger Dispatch - Allows passing strongly typed data through triggers to dynamically resolve the next state or influence transition logic.
  • Fluent Configuration APIs - Offers a fluent-API configuration for defining state transitions and behaviors using method-chaining.
  • Internal Transitions - Processes triggers that execute logic without altering the current state of the machine.
  • State Change Observers - Provides mechanisms to trigger callbacks and synchronize application logic when state transitions occur.
  • Delegate-Based Action Execution - Implements state entry, exit, and transition actions by invoking registered C# delegates and asynchronous tasks.
  • State Transition Validation - Verifies if a trigger can be fired and provides details on unmet guard conditions.
  • Workflow Visualizations - Generates visual representations of business logic and state flows using DOT and Mermaid diagram formats.
  • Scheduling and Automation - State machine creation library.
  • Architecture Patterns - State machine implementation for managing application logic.
  • State Machines - Library for creating state machines in code.

Star history

Star history chart for dotnet-state-machine/statelessStar history chart for dotnet-state-machine/stateless

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Stateless

Similar open-source projects, ranked by how many features they share with Stateless.
  • jakesgordon/javascript-state-machinejakesgordon avatar

    jakesgordon/javascript-state-machine

    8,751View on GitHub↗

    This library is a finite state machine framework for JavaScript designed to manage application states and valid transitions. It provides a system for executing state changes with lifecycle hooks, conditional guards, and transition cancellation. The project is distinguished by its ability to inject state machine logic and transition capabilities directly into existing JavaScript class instances or objects. It also includes a visualization tool that exports state configurations into Graphviz DOT language for auditing system logic. The framework covers asynchronous transition execution and paus

    JavaScript
    View on GitHub↗8,751
  • pytransitions/transitionspytransitions avatar

    pytransitions/transitions

    6,548View on GitHub↗

    Transitions is an object-oriented finite state machine library for Python. It provides a framework for managing valid states and the logic for moving between them, including implementations for asynchronous state machines and thread-safe state managers. The library supports hierarchical state machines that allow states to be nested to organize complex subtasks and logical contexts. It includes tools for generating visual diagrams of states and transitions to document machine logic. The project covers state management primitives such as lifecycle callbacks, conditional transition guarding, an

    Python
    View on GitHub↗6,548
  • aasm/aasmaasm avatar

    aasm/aasm

    5,219View on GitHub↗

    This library provides a framework for defining finite state machines within Ruby classes to manage complex object lifecycles. It functions as a declarative workflow engine, allowing developers to model object states, events, and transitions through a readable domain-specific language. By integrating directly with database persistence layers, the framework ensures that state changes are synchronized with storage records while maintaining data integrity through transaction management and row locking. The library distinguishes itself by enforcing strict business rules through conditional transit

    Ruby
    View on GitHub↗5,219
  • pluginaweek/state_machinepluginaweek avatar

    pluginaweek/state_machine

    3,722View on GitHub↗

    This project is a Ruby library for defining and managing object lifecycles through states, events, and transition rules. It functions as a declarative workflow engine that enforces business logic by restricting attribute changes to predefined, valid paths within Ruby classes. The library distinguishes itself through deep integration with database persistence layers, allowing it to automatically synchronize state changes with data models, validation frameworks, and transaction management. It supports dynamic configuration, enabling the construction of lifecycle rules at runtime from external d

    Ruby
    View on GitHub↗3,722
See all 30 alternatives to Stateless→

Frequently asked questions

What does dotnet-state-machine/stateless do?

Stateless is a .NET state machine library used to manage complex object behaviors and lightweight workflows through C# code. It functions as an asynchronous workflow engine that executes state transitions, guards, and entry-exit actions using asynchronous tasks.

What are the main features of dotnet-state-machine/stateless?

The main features of dotnet-state-machine/stateless are: Application State Machines, Architectural State Machines, Application State Management, External State Stores, State Transition Handlers, State Lifecycle Actions, Asynchronous State Transition Orchestration, Hierarchical State Composition.

What are some open-source alternatives to dotnet-state-machine/stateless?

Open-source alternatives to dotnet-state-machine/stateless include: pytransitions/transitions — Transitions is an object-oriented finite state machine library for Python. It provides a framework for managing valid… jakesgordon/javascript-state-machine — This library is a finite state machine framework for JavaScript designed to manage application states and valid… aasm/aasm — This library provides a framework for defining finite state machines within Ruby classes to manage complex object… pluginaweek/state_machine — This project is a Ruby library for defining and managing object lifecycles through states, events, and transition… day8/re-frame — re-frame is a functional framework for building single-page applications in ClojureScript. It provides a centralized,… effector/effector — Effector is a reactive state management library designed for building complex, event-driven applications. It functions…