Skip to content

Commit bfc526e

Browse files
authored
Whitelabel, flow quickstart & App triggers (windmill-labs#584)
1 parent 45797e9 commit bfc526e

File tree

11 files changed

+88
-30
lines changed

11 files changed

+88
-30
lines changed

changelog/2024-04-12-aggrid-actions/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version: v1.306.0
44
title: AgGrid Actions
55
tags: ['App Editor']
66
image: ./aggrid_actions.png
7-
description: AgGrid rows now support actions, components that will be displayed at each row of the table.
7+
description: AgGrid and Database Studio rows now support actions, components that will be displayed at each row of the table.
88
features:
99
[
1010
'Support the following components:',

docs/apps/3_app-runnable-panel.mdx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,13 @@ Inputs of runnables that are either connected to an output or [evaluated](#evals
226226

227227
Runnables can "Recompute" and "Recompute others":
228228

229-
- Recompute: Other component can trigger a component to recompute. For example, a button can trigger a table to recompute. When the button is clicked, the table is reloaded. See Recompute Others for more information.
230-
- Recompute others: Button and Form components can trigger other components to recompute. For example, a button can trigger a table to recompute. When the button is clicked, the table is reloaded.
229+
#### Recompute
230+
231+
Other component can trigger a component to recompute. For example, a button can trigger a table to recompute. When the button is clicked, the table is reloaded. See Recompute Others for more information.
232+
233+
#### Recompute others
234+
235+
[Button](./4_app_configuration_settings/button.mdx) & [Form](./4_app_configuration_settings/submit_form.mdx) components and [background scripts](#background-runnables) can trigger other components to recompute. For example, a button can trigger a table to recompute. When the button is clicked, the table is reloaded.
231236

232237
### Manual Dependencies
233238

docs/apps/4_react_components.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ If you're looking for a way to:
1111

1212
:::
1313

14+
Importing Custom React Components is a [Cloud and Self-Hosted-Enterprise-Only](/pricing) feature
15+
1416
Once imported to Windmill, custom React components will be able to interact with the rest of the app.
1517

1618
There are 3 main benefits of using your own components:

docs/core_concepts/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ All details & features on [Pricing page](/pricing).
507507
/>
508508
<DocCard
509509
title="White Labeling Windmill"
510-
description="Windmill offers white labeling capabilities, allowing you to customize the Windmill platform to align with your brand."
510+
description="Windmill offers white labeling capabilities, allowing you to embed and customize the Windmill platform to align with your brand."
511511
href="/docs/misc/white_labelling"
512512
/>
513513
<DocCard

docs/flows/16_architecture.mdx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,22 @@ def main(x: str):
129129
color="teal"
130130
/>
131131
</div>
132+
133+
## Shared Directory
134+
135+
By default, flows on Windmill are based on a result basis (see above). A step will take as input the results of previous steps. And this works fine for lightweight automation.
136+
137+
For heavier ETLs and any output that is not suitable for JSON, you might want to use the `Shared Directory` to share data between steps. Steps share a folder at `./shared` in which they can store heavier data and pass them to the next step.
138+
139+
Get more details on the [Persistent Storage & Databases dedicated page](../core_concepts/11_persistent_storage/index.mdx).
140+
141+
![Flows shared directory](../getting_started/6_flows_quickstart/flows_shared_directory.png.webp)
142+
143+
<div className="grid grid-cols-2 gap-6 mb-4">
144+
<DocCard
145+
color="teal"
146+
title="Persistent Storage & Databases"
147+
description="Ensure that your data is safely stored and easily accessible whenever required."
148+
href="/docs/core_concepts/persistent_storage"
149+
/>
150+
</div>

docs/getting_started/6_flows_quickstart/index.mdx

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ The present document will introduce you to Flows and how to build your first one
1818
1919
<br />
2020

21-
It is important to have in mind that **in Windmill Scripts are at the basis of Flows and Apps**. To sum up roughly, workflows are state machines represented as DAG to compose scripts together. Learn more in the [Script Quickstart](../0_scripts_quickstart/index.mdx) in the previous section. You will not necessarily have to re-build each script as you can reuse them from your workspace or from the [Hub](https://hub.windmill.dev/).
21+
Have in mind that in Windmill, Scripts are at the basis of Flows and Apps. To sum up roughly, workflows are state machines [represented as DAGs](../../flows/16_architecture.mdx) (Directed Acyclic Graphs) to compose scripts together. To learn more about scripts, check the [Script Quickstart](../0_scripts_quickstart/index.mdx). You will not necessarily have to re-build each script as you can reuse them from your workspace or from the [Hub](https://hub.windmill.dev/).
2222

2323
Those workflows can run for-loops, branches (parralellizable) suspend themselves until a timeout or receiving events such as webhooks or approvals. They can be scheduled very frequently and check for new external items to process (what we call "Trigger" script).
2424

25-
The overhead and coldstart between each step is about 20ms, which is faster than any other orchestration engine, by a large margin.
25+
The overhead and coldstart between each step is about 20ms, which is [faster than any other orchestration engine](/blog/launch-week-1/fastest-workflow-engine), by a large margin.
2626

2727
To create your first workflow, you could also pick one from our [Hub](https://hub.windmill.dev/flows) and fork it. Here, we're going to build our own flow from scratch, step by step.
2828

@@ -38,15 +38,24 @@ Follow our [detailed section](../../flows/1_flow_editor.mdx) on the Flow Editor
3838

3939
### Metadata
4040

41-
The first thing you'll see is the [Metadata](../../flows/3_editor_components.mdx#metadata) menu. From there, you can set the [permissions](../../core_concepts/16_roles_and_permissions/index.mdx) of the workflow: User (by default, you), and Folder (referring to read and/or write groups).
41+
The first thing you'll see is the [Metadata](../../flows/3_editor_components.mdx#metadata) menu. From there, you can set the [permissions](../../core_concepts/16_roles_and_permissions/index.mdx) of the workflow: User (by default, you), and [Folder](../../core_concepts/8_groups_and_folders/index.mdx) (referring to read and/or write groups).
4242

4343
Also, you can give succinctly a Name, a Summary and a Description to your flow. Those are supposed to be explicit, we recommend you to give context and make them as self-explanatory as possible.
4444

4545
![Flows metadata](./flows_metadata.png.webp)
4646

47+
<div className="grid grid-cols-2 gap-6 mb-4">
48+
<DocCard
49+
title="Roles and Permissions"
50+
description="Control access and manage permissions within your instance and workspaces."
51+
href="/docs/core_concepts/roles_and_permissions"
52+
color="teal"
53+
/>
54+
</div>
55+
4756
### Schedule
4857

49-
On another tab, you can configure a [Schedule](../../core_concepts/1_scheduling/index.mdx)\* to trigger your flow. Flows can be [triggered](../9_trigger_flows/index.mdx) by any schedules, their [webhooks](../../core_concepts/4_webhooks/index.mdx) or their UI but they only have only one primary schedule with which they share the same path. This menu is where you set the primary schedule with CRON. The default schedule is none.
58+
On another tab, you can configure a [Schedule](../../core_concepts/1_scheduling/index.mdx) to trigger your flow. Flows can be [triggered](../9_trigger_flows/index.mdx) by any schedules, their [webhooks](../../core_concepts/4_webhooks/index.mdx) or their UI but they only have only one primary schedule with which they share the same path. This menu is where you set the primary schedule with CRON. The default schedule is none.
5059

5160
![Flows schedule](./flows_schedule.png.webp)
5261

@@ -63,7 +72,7 @@ On another tab, you can configure a [Schedule](../../core_concepts/1_scheduling/
6372

6473
Last tab of the settings menu is the [Shared Directory](../../core_concepts/11_persistent_storage/within_windmill.mdx#shared-directory).
6574

66-
By default, flows on Windmill are based on a result basis. A step will take as inputs the results of previous steps. And this works fine for lightweight automation.
75+
By default, flows on Windmill are based on a [result basis](#how-data-is-exchanged-between-steps). A step will take as inputs the results of previous steps. And this works fine for lightweight automation.
6776

6877
For heavier ETLs and any output that is not suitable for JSON, you might want to use the `Shared Directory` to share data between steps. Steps share a folder at `./shared` in which they can store heavier data and pass them to the next step.
6978

@@ -82,7 +91,7 @@ Get more details on the [Persistent Storage & Databases dedicated page](../../co
8291

8392
### Worker Group
8493

85-
When a worker group is defined at the flow level, any steps inside the flow will run on that worker group, regardless of the steps' worker group. If no worker group is defined, the flow controls will be executed by the default worker group 'flow' and the steps will be executed in their respective worker group.
94+
When a [worker group](../../core_concepts/9_worker_groups/index.mdx) is defined at the flow level, any steps inside the flow will run on that worker group, regardless of the steps' worker group. If no worker group is defined, the flow controls will be executed by the default worker group 'flow' and the steps will be executed in their respective worker group.
8695

8796
<div className="grid grid-cols-2 gap-6 mb-4">
8897
<DocCard
@@ -105,7 +114,7 @@ Inputs are either:
105114
- [Dynamically linked to others](../../flows/16_architecture.mdx): with [JSON objects](../../core_concepts/13_json_schema_and_parsing/index.md) as result that allow to refer to the output of any step.
106115
You can refer to the result of any step:
107116
- using the id associated with the step
108-
- clicking on the plug logo that will let you pick flow inputs or previous steps' results (after testing flow or step)
117+
- clicking on the plug logo that will let you pick flow inputs or previous steps' results (after testing flow or step).
109118

110119
![Static & Dynamic Inputs](./static_and_dynamic_inputs.png.webp)
111120

@@ -120,13 +129,13 @@ Inputs are either:
120129

121130
## Flow editor
122131

123-
On the left you'll find a graphical view of the flow. From there you can architecture your flow and take action at each step.
132+
On the left of the editor, you'll find a graphical view of the flow. From there you can architecture your flow and take action at each step.
124133

125134
![Flow editor menu](./flow_editor_menu.png.webp)
126135

127136
There are four kinds of scripts: [Action](../../flows/3_editor_components.mdx#flow-actions), [Trigger](../../flows/10_flow_trigger.mdx), [Approval](../../flows/11_flow_approval.mdx) and [Error handler](../../flows/7_flow_error_handler.md). You can sequence them how you want. Action is the default script type.
128137

129-
Each script can be called from Workspace or [Hub](https://hub.windmill.dev/), you can also decide to **write them inline**.
138+
Each script can be called from Workspace or [Hub](https://hub.windmill.dev/), you can also decide to write them inline.
130139

131140
![Import or write scripts](./import_or_write_scripts.png.webp)
132141

@@ -207,7 +216,7 @@ At each step, Windmill allows you to [customize the number of retries](../../flo
207216

208217
At each step you can add [Approval Scripts](../../flows/11_flow_approval.mdx) to manage security and control over your flows.
209218

210-
Request approvals can be sent by email, Slack, anything. Then you can **automatically resume workflows with secret webhooks** after the approval steps.
219+
Request approvals can be sent by email, Slack, anything. Then you can automatically resume workflows with secret webhooks after the approval steps.
211220

212221
<video
213222
className="border-2 rounded-xl object-cover w-full h-full dark:border-gray-800"
@@ -250,9 +259,9 @@ There are several ways to trigger a flow with Windmill.
250259
/>
251260
</div>
252261

253-
## Time to test
262+
## Test your flow
254263

255-
You don't have to explore all flows editor possibilities at once. At each step, **test what you're building** to keep control on your wonder. You can also test up to a certain step by clicking on an action (x) and then on `Test up to x`.
264+
You don't have to explore all Flow editor possibilities at once. At each step, test what you're building to keep control on your wonder. You can also test up to a certain step by clicking on an action (x) and then on `Test up to x`.
256265

257266
<video
258267
className="border-2 rounded-xl object-cover w-full h-full dark:border-gray-800"

docs/misc/7_plans_details/index.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,14 @@ We share our pricing grid and the features of each plan on the [Pricing page](/p
5050

5151
## White Labeling Windmill
5252

53-
Windmill offers white labeling capabilities, allowing you to customize the Windmill platform to align with your brand. We do provide a library to embed the entire Windmill app or specific components - such as the flow builder or the app builder - into your own application or website. This enables you to provide Windmill's services to your clients while maintaining your brand's identity.
53+
Windmill offers white labeling capabilities, allowing you to embed and customize the Windmill platform to align with your brand. We do provide a library to embed the entire Windmill app or specific components - such as the flow builder or the app builder - into your own application or website. This enables you to provide Windmill's services to your clients while maintaining your brand's identity.
5454

5555
For more information about white labeling and customization options, see:
5656

5757
<div className="grid grid-cols-2 gap-6 mb-4">
5858
<DocCard
5959
title="White Labeling Windmill"
60-
description="Windmill offers white labeling capabilities, allowing you to customize the Windmill platform to align with your brand."
60+
description="Windmill offers white labeling capabilities, allowing you to embed and customize the Windmill platform to align with your brand."
6161
href="/docs/misc/white_labelling"
6262
/>
6363
</div>

docs/misc/8_white_labelling/index.mdx

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,35 @@ import DocCard from '@site/src/components/DocCard';
22

33
# White Labeling Windmill
44

5-
Windmill offers white labeling capabilities, allowing you to customize the Windmill platform to align with your brand.
6-
7-
We do provide a library to embed the entire Windmill app or specific components - such as the flow builder or the app builder - with a simplified UI into your own application or website. This enables you to provide Windmill's services to your clients while maintaining your brand's identity.
5+
Windmill provides a library to embed the entire Windmill app or specific components - such as the [Flow editor](../../flows/1_flow_editor.mdx) or the [App editor](../../apps/0_app_editor/index.mdx) - with a simplified UI into your own application or website. This enables you to provide Windmill's services to your clients while maintaining your brand's identity.
86

97
Windmill offers an [SDK compatible with any framework](../15_react_sdk/index.md), simplifying its integration across various platforms. It can be built in collaboration with us using React/Svelte and our full SDK.
108

11-
Whitelabel SDKs are also available for cloud with any package. Please contact us for more details.
9+
In particular, for React, we have a [webpack](https://github.com/windmill-labs/windmill-whitelabelling-react-webpack) that uses an SDK that will contain all components from Windmill frontend.
10+
For now, the App Viewer and Flow Builder are already available. The embed was made easy.
11+
Check our [Demo](https://windmill-sdk-example.com/) of using the Windmill SDK backed by app.windmill.dev to whitelabel Windmill's Flow Builder and App Viewer in a React app using the default create-react-app template.
1212

13-
[Private Hub](../../core_concepts/32_private_hub/index.mdx) is available for white labeling. It allows you to have your own platorm and approval process for scripts, flows, apps and resource types suggested within app.
13+
Also, [Private Hub](../../core_concepts/32_private_hub/index.mdx) is available for white labeling. It allows you to have your own platorm and approval process for scripts, flows, apps and resource types suggested within app.
1414

15-
For more information about white labeling and customization options, please reach out to us at contact@windmill.dev, [Discord](https://discord.com/invite/V7PM2YHsPB), or schedule a [meeting](https://www.windmill.dev/book-demo).
15+
Whitelabelling requires a special license and the package @windmill-labs/windmill-react-sdk is not public. Please contact us at sales@windmill.dev,
16+
on [Discord](https://discord.com/invite/V7PM2YHsPB), or schedule a [meeting](https://www.windmill.dev/book-demo) to get stated.
1617

1718
<div className="grid grid-cols-2 gap-6 mb-4">
1819
<DocCard
19-
title="Get in Touch"
20-
description="Send email to contact@windmill.dev to talk about partnership."
21-
href="mailto:contact@windmill.dev"
20+
title="Windmill React App Whitelabelling"
21+
description="This project demonstrates how Windmill can be whitelabelled in a React app using webpack."
22+
href="https://github.com/windmill-labs/windmill-whitelabelling-react-webpack?tab=readme-ov-file"
2223
/>
2324
<DocCard
2425
title="Windmill React SDK"
2526
description="The Windmill React SDK provides a suite of tools and components to integrate Windmill applications into React-based projects."
2627
href="/docs/misc/react_sdk"
2728
/>
29+
<DocCard
30+
title="Private Hub"
31+
description="Get a private Windmill Hub instance that is only accessible by your team."
32+
href="/docs/core_concepts/private_hub"
33+
/>
2834
</div>
2935

3036
<br />

docs/misc/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Get to know more Windmill.
4242
/>
4343
<DocCard
4444
title="White Labeling Windmill"
45-
description="Windmill offers white labeling capabilities, allowing you to customize the Windmill platform to align with your brand."
45+
description="Windmill offers white labeling capabilities, allowing you to embed and customize the Windmill platform to align with your brand."
4646
href="/docs/misc/white_labelling"
4747
/>
4848
</div>

sidebars.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,13 @@ const sidebars = {
284284
type: 'doc',
285285
id: 'apps/connecting_components/index'
286286
},
287-
items: ['apps/app-runnable-panel', 'apps/outputs'],
287+
items: [
288+
{
289+
type: 'doc',
290+
id: 'apps/app-runnable-panel',
291+
label: 'Runnable Editor (Scripts & Flows)'
292+
},
293+
'apps/outputs'],
288294
collapsed: false
289295
},
290296
{

0 commit comments

Comments
 (0)