You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: blog/2023-11-23-stately-studio-2-0-changelog/index.mdx
+1-1
Original file line number
Diff line number
Diff line change
@@ -66,4 +66,4 @@ This is an excellent time to mention that annotations are now called notes! Note
66
66
67
67
In the machine’s bottom bar, you can now find undo/redo, zoom options and the help button on the bottom right. And managing machine versions, including switching and creating new versions, can now be done from the bottom left. While viewing a version, the buttons for restoring or duplicating the machine are still in the top bar.
68
68
69
-
When you import code into the editor without a project, We’ll now automatically create a new project for you.
69
+
When you import code into the editor without a project, We’ll now automatically create a new project for you.
When it came to navigating the complexities of business context and application state, Koordinates found their solution in Stately's tools, reshaping their coding practices and ensuring a seamless user experience.
12
22
{/* truncate */}
13
23
14
-
15
-
16
24
For more than 15 years, the team at [Koordinates](https://koordinates.com/) has been hard at work reimagining and building streamlined and equitable ways for customers to manage geospatial data. Koordinates have built a massively scaled GIS (Geographic Information Systems) platform for users to upload their own data, query over 18,000 open datasets, and securely merge openly available data with proprietary information.
17
25
Unlike competing products that require vendor lock-in and lack compatibility across the entire GIS stack, Koordinates’ offerings are modular: users may use as much or as little of the tooling as they like, and the tooling is interoperable with existing GIS environments.
@@ -48,36 +57,36 @@ In the case of Kart, many of these operations can be long-running and have sever
48
57
49
58
## Breaking complex UI’s into manageable components
50
59
51
-
In the case of both their products, Koordinates was able to use Stately’s tooling to break their “big” problems down into several, distinct smaller ones. Taylor Lodge, an engineer on the core team, explained that with Sta tely’s visual editor and simulation tooling, they were able to break their application logic into several small, testable state machines. For example, the UI for Koordinates Cloud has several components, but the logic for loading elements in their list view is represented rather succinctly in this state machine:
52
-
60
+
In the case of both their products, Koordinates was able to use Stately’s tooling to break their “big” problems down into several, distinct smaller ones. Taylor Lodge, an engineer on the core team, explained that with Sta tely’s visual editor and simulation tooling, they were able to break their application logic into several small, testable state machines. For example, the UI for Koordinates Cloud has several components, but the logic for loading elements in their list view is represented rather succinctly in this state machine:
There are several potential events that _can_ happen, but the core states are relatively few to model this behavior. Instead of representing their entire app state in a monolith, the team decided to go with a more modular approach, making use of the [actor model](https://en.wikipedia.org/wiki/Actor_model). This makes maintaining and testing individual components much easier, and it allows for extensibility down the line as project complexity grows.
59
68
60
69
Handling several logical components does come with some considerations, however. Taylor noted that now that the team had several small components, they needed a way to orchestrate and communicate between them in a cohesive manner. Thankfully, the [XState](https://github.com/statelyai/xstate) framework for composing machines is open source, and the team used it as their base for [`xstate-tree`, an open source framework](https://github.com/koordinates/xstate-tree) for modeling complex UIs as a tree of XState machines. `xstate-tree` couples React views with state machines and composes them as actors in “slots”, allowing them to be exposed to their respective React views. Learn more about all the features `xstate-tree` provides in their [well-documented GitHub repo](https://github.com/koordinates/xstate-tree).
61
70
62
-
While there are other state management platforms for developers, the team at Koordinates also wanted the ability to co-locate their implementation logic alongside their machines’ definitions, or “blueprints”. This reduces the surface area developers when revisions need to made to their machines. From Taylor:
71
+
While there are other state management platforms for developers, the team at Koordinates also wanted the ability to co-locate their implementation logic alongside their machines’ definitions, or “blueprints”. This reduces the surface area developers when revisions need to made to their machines. From Taylor:
63
72
64
73
> “I love the first class support in XState for side effects. That the side effects can be co-located with my code that triggers it and uses it, instead of having to put them _somewhere else_ like with Redux”
65
74
66
-
67
75
## Handling complex, long-running tasks and edge cases
68
76
69
77
Being a source control solution for complex datasets, Kart has a naturally complex set of problems to solve as well. Merging, cloning, and loading data all have plenty of considerations, edge cases, and possible failure scenarios, so the team had to take care to address all of them. The ability to map this logic using the Stately Editor proved to be extremely useful.
Stately tooling isn’t just for managing UI state. In fact, the logic representing Kart repos is all managed using an XState actor. That actor then watches the filesystem to execute Kart-specific commands and update its own in-memory state.
84
+
Stately tooling isn’t just for managing UI state. In fact, the logic representing Kart repos is all managed using an XState actor. That actor then watches the filesystem to execute Kart-specific commands and update its own in-memory state.
76
85
77
86
Taylor and the team love Stately’s visual editor. Even without domain knowledge of their core product, the logic is still human readable and understandable. Questions like “what happens when a user cancels a clone operation?” and “when is the data model for branches updated?” are easily answered by reading the diagram. Diagramming logic in this way ensured the team was able to build Kart’s functionality in a way that is inherently less prone to bugs and plan for potential errors where possible without wasting time over-engineering for cases that could never occur.
78
87
79
88
## Moving forward with Stately
80
89
81
-
By building with Stately’s tooling, the Koordinates team not only simplified their UI and repository state management, but they in turn gave back to the technical community with `xstate-tree`, allowing React developers to better wrangle hosts of machines. Koordinates and Stately are aligned on many core goals: enhancing productivity for their users, strongly committing to open source, and facilitating team collaboration. Naturally, the Stately team was eager for feedback and have committed to the development of features that enhance collaboration without compromise. This includes GitHub synchronization to maintain the repo as the authoritative source and system-wide statechart visualization to facilitate deeper interdisciplinary communication and understanding.
90
+
By building with Stately’s tooling, the Koordinates team not only simplified their UI and repository state management, but they in turn gave back to the technical community with `xstate-tree`, allowing React developers to better wrangle hosts of machines. Koordinates and Stately are aligned on many core goals: enhancing productivity for their users, strongly committing to open source, and facilitating team collaboration. Naturally, the Stately team was eager for feedback and have committed to the development of features that enhance collaboration without compromise. This includes GitHub synchronization to maintain the repo as the authoritative source and system-wide statechart visualization to facilitate deeper interdisciplinary communication and understanding.
82
91
83
-
Koordinates saw a significant leap in efficiency and team collaboration with Stately's tools. [Book a demo with us today](https://calendly.com/d/yc8-3hq-rpc/request-a-demo) to learn how Stately can empower your team to build better software, faster.
92
+
Koordinates saw a significant leap in efficiency and team collaboration with Stately's tools. [Book a demo with us today](https://calendly.com/d/yc8-3hq-rpc/request-a-demo) to learn how Stately can empower your team to build better software, faster.
Actors can also have [output](/docs/output), which represents their “done data” when they have reached their final state. It’s not just state machines that can have output; promise logic naturally resolves with output, and it may be possible to specify output for other actor logic types in the future.
Copy file name to clipboardexpand all lines: blog/2023-12-07-tidefi-and-stately-case-study/index.mdx
+10-4
Original file line number
Diff line number
Diff line change
@@ -59,10 +59,16 @@ I was able to showcase the machine visualizer to the rest of the company, which
59
59
60
60
Several months down the road, our team was running into some challenges of transmitting data between pages. Most pages had a machine that controlled the flow, and then there were other machines meant for data subscriptions, connection handling, etc. I decided to model a traditional hub-and-spoke actor system by:
61
61
62
-
<olstyle={{'list-style-type': 'lower-alpha'}}>
63
-
<li>nesting actors underneath a root actor</li>
64
-
<li>broadcasting an INIT event to register actors and facilitate storing references</li>
65
-
<li>handle some communication via broadcasts, and others as direct events or data queries</li>
62
+
<olstyle={{ 'list-style-type': 'lower-alpha' }}>
63
+
<li>nesting actors underneath a root actor</li>
64
+
<li>
65
+
broadcasting an INIT event to register actors and facilitate storing
66
+
references
67
+
</li>
68
+
<li>
69
+
handle some communication via broadcasts, and others as direct events or
70
+
data queries
71
+
</li>
66
72
</ol>
67
73
68
74
In the [XState Discord](https://discord.stately.ai), this concept came up several times, and my implementation was tweaked until it was fairly easy to reason with, and performant. To my delight, the XState team created an RFC to introduce actor systems and the “receptionist” pattern! It was a joy to have real-world experience to contribute to the discussion and prove or challenge parts of the API. Now it is a built-in part of XState v5! I can remove dozens of lines of code and instead utilize my root actor as a system with individually named actors in a tree underneath.
Copy file name to clipboardexpand all lines: blog/2023-12-29-end-of-year-changelog/index.mdx
+2-2
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@ Your machine’s context is now displayed on the canvas. You can add your contex
22
22
23
23
## Add transition
24
24
25
-
When a transition selected, you can now use the arrow icon button to add another transition for quick conditional logic. Using the button will add a transition from the same source state, making the original transition into an *if* transition and the new transition into an *else* transition, where you can then add your [guard logic](/docs/guards).
25
+
When a transition selected, you can now use the arrow icon button to add another transition for quick conditional logic. Using the button will add a transition from the same source state, making the original transition into an _if_ transition and the new transition into an _else_ transition, where you can then add your [guard logic](/docs/guards).
26
26
27
27

28
28
@@ -45,4 +45,4 @@ You can now use the **Show/hide effects on canvas** option in the editor menu vi
45
45
- We fixed a bug where you could sometimes be redirected to the Project settings page when creating a new machine.
46
46
- You can now remove [state and event descriptions](/docs/descriptions) without any issues. To delete a description, remove its text. To remove the description area from a state or event, delete its text from the details panel.
47
47
- We fixed a bug with the CodeSandbox and StackBlitz exports when using XState V5.
48
-
- You can now undo when you use the **Clear** button on a machine at [state.new](https://state.new).
48
+
- You can now undo when you use the **Clear** button on a machine at [state.new](https://state.new).
Copy file name to clipboardexpand all lines: blog/2024-01-02-office-hours/index.mdx
+2-3
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ tags:
11
11
stately inspect,
12
12
github sync,
13
13
sources,
14
-
roadmap
14
+
roadmap,
15
15
]
16
16
authors: [laura]
17
17
date: 2024-01-02
@@ -43,5 +43,4 @@ Watch the video to find out about our new features and plans for 2024. Use the l
43
43
-[47:04 Can guards assign new data to the machine state?](https://youtube.com/watch?v=x-F1TPjz_lI&t=2824s)
44
44
-[50:52 How to stay updated with the Stately team](https://youtube.com/watch?v=x-F1TPjz_lI&t=3052s)
45
45
46
-
47
-
Be the first to find out about our next office hours by subscribing to [our YouTube channel](https://www.youtube.com/@Statelyai), [Twitch channel](https://www.twitch.tv/statelyai), or [following us on LinkedIn](https://www.linkedin.com/company/statelyai/).
46
+
Be the first to find out about our next office hours by subscribing to [our YouTube channel](https://www.youtube.com/@Statelyai), [Twitch channel](https://www.twitch.tv/statelyai), or [following us on LinkedIn](https://www.linkedin.com/company/statelyai/).
0 commit comments