Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion library/modules/supabase/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,15 @@ hide_title: true

> This is currently a private extension to Fluxscape. The documentation is still under development and will be improved over time.

Fluxscape's Supabase integration provides a first-class way to sync data, authenticate users, and trigger serverless workflows directly from within Fluxscape apps.
Fluxscape’s Supabase integration provides a first-class way to sync data, authenticate users, and trigger serverless workflows directly from within Fluxscape apps.

The integration is designed for teams building production-grade applications that require a robust backend, strong data modeling, row-level security, and scalable serverless functions, all while staying inside the Fluxscape visual workflow.

### Access to the Supabase integration

The Supabase integration is currently available by request.

If you are interested in using it or evaluating it for your team or customers, please contact the Fluxscape team via
https://fluxscape.io/contact

We use this process to ensure proper onboarding, feedback.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-call-function.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-create-record.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-delete-files.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-download-file.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-login.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-logout.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-set-presence.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-update-record.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-upload-file.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added library/modules/supabase/fs-sb-user.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 10 additions & 3 deletions library/modules/supabase/nodes/auth/log-in.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,16 @@ hide_title: true
{/*##head##*/}

# Log In
<br />
Logs in an existing user using an email and password or a phone number and password.

Log in an existing user with an email and password or phone and password.
<div className="ndl-image-with-background l">
![Log In node](../../fs-sb-login.png)
</div>

{/*##head##*/}
This node authenticates the user against your connected Supabase project and, on success, creates an active user session. The session can then be used by other Supabase nodes in the app to access protected data, apply row-level security policies, and perform authenticated operations.

The Log In node is typically used as part of an authentication flow together with input fields for credentials and conditional logic to handle successful and failed login attempts.

This is based on the [Supabase Client SDK - Sign in a user](https://supabase.com/docs/reference/javascript/auth-signinwithpassword).
This functionality is based on the Supabase Client SDK sign-in method. For implementation details and behavior, see
[Supabase Client SDK – Sign in a user](https://supabase.com/docs/reference/javascript/auth-signinwithpassword).
14 changes: 11 additions & 3 deletions library/modules/supabase/nodes/auth/log-out.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,17 @@ hide_title: true
{/*##head##*/}

# Log Out
<br />
Logs out the currently authenticated user from the connected Supabase project.

Log in an existing user with an email and password or phone and password.
<div className="ndl-image-with-background l">
![Log Out node](../../fs-sb-logout.png)
</div>

This node clears the active user session and removes the user’s authentication state from the app. After logging out, any subsequent Supabase operations will be executed without an authenticated user until a new login occurs.

The Log Out node is typically used in navigation flows, account menus, or security-related actions where the user explicitly ends their session.

{/*##head##*/}

This is based on the [Supabase Client SDK - Sign out a user](https://supabase.com/docs/reference/javascript/auth-signout).
This functionality is based on the Supabase Client SDK sign-out method. For reference, see
[Supabase Client SDK – Sign out a user](https://supabase.com/docs/reference/javascript/auth-signout).
12 changes: 12 additions & 0 deletions library/modules/supabase/nodes/auth/user.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,17 @@ hide_title: true
{/*##head##*/}

# User
<br />
Returns the currently authenticated user from the active Supabase session.

<div className="ndl-image-with-background l">
![User node](../../fs-sb-user.png)
</div>

This node provides access to the user object associated with the current session. The returned data includes identifiers and metadata such as the user ID, email address, phone number, and any custom user metadata defined in Supabase.

The User node is commonly used to display account information, personalize the UI, or drive conditional logic based on whether a user is logged in or not. If no active session exists, the node returns `null`.

The returned user data reflects the authentication state managed by Supabase and automatically updates as the session changes.

{/*##head##*/}
13 changes: 9 additions & 4 deletions library/modules/supabase/nodes/data/call-a-postgres-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,15 @@
hide_title: true
---

{/*##head##*/}
# Supabase Call a Postgres Function
<br />
Calls a Postgres function (RPC) defined in your Supabase database.

# Supabase Call a Postgres function
The Supabase Call a Postgres Function node allows you to execute a Postgres function directly on the database. This is commonly used for encapsulating complex queries, enforcing business logic close to the data, or performing operations that are difficult or inefficient to express using standard CRUD nodes.

{/*##head##*/}
Postgres functions are executed within the database context and can return scalar values, records, or sets of rows. This makes them well suited for aggregations, computed results, permission-aware queries, and reusable backend logic.

This is based on the [Supabase Client SDK - Call a Postgres function](https://supabase.com/docs/reference/javascript/rpc).
The node returns the raw result of the function execution. If the function returns multiple rows, the result will be an array. If no active session exists or permissions are insufficient, the call will fail according to your Supabase security and RLS configuration.

This functionality is based on the Supabase Client SDK RPC method. For reference, see
[Supabase Client SDK – Call a Postgres function](https://supabase.com/docs/reference/javascript/rpc).
47 changes: 26 additions & 21 deletions library/modules/supabase/nodes/data/create-new-record.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,43 +2,48 @@
hide_title: true
---

{/*##head##*/}

# Create New Record
<br />
Creates a new record in a specified Supabase table.

<div className="ndl-image-with-background l">
![Create New Record node](../../fs-sb-create-record.png)
</div>

The Create New Record node creates a new record in a specified table. You can define its field values and optionally set access control rules to manage who can read or write the record.
The Create New Record node inserts a new row into a selected table in your connected Supabase database. You define the field values either directly in the property panel or dynamically by connecting inputs from other nodes.

{/*##head##*/}
This node is commonly used for creating application data such as users, orders, content items, or any custom domain objects defined in your database schema. Insert operations respect Supabase Row Level Security (RLS) policies and the authentication context of the current user.

This is based on the [Supabase Client SDK - Insert data](https://supabase.com/docs/reference/javascript/insert).
This functionality is based on the Supabase Client SDK insert method. For reference, see
[Supabase Client SDK – Insert data](https://supabase.com/docs/reference/javascript/insert).

## Inputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| -------------------------------------------- | ---- | --------------------------------- |
| <span className="ndl-data">Table Name</span> | enum | List of all the available tables. |
| Data | Type | Description |
| -------------------------------------------- | ---- | ----------- |
| <span className="ndl-data">Table Name</span> | enum | The table where the new record will be created. |

</div>

Under the group "Data" all the table fields will be, and are designed to both be exist dynamically in the property panel (for supported types) and by making a connection.
Under the **Data** group, all available fields for the selected table are exposed. These fields can be set directly in the property panel for supported types or populated dynamically through node connections.

## Outputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| --------------------------------------------- | ------- | ----------- |
| <span className="ndl-data">Object ID</span> | string | |
| <span className="ndl-data">Success</span> | signal | |
| <span className="ndl-data">Failure</span> | signal | |
| <span className="ndl-data">Finally</span> | signal | |
| <span className="ndl-data">Is Fetching</span> | boolean | |
| <span className="ndl-data">Is Fetched</span> | boolean | |
| <span className="ndl-data">Status</span> | string | |
| <span className="ndl-data">Is Success</span> | boolean | |
| <span className="ndl-data">Is Error</span> | boolean | |
| <span className="ndl-data">Error Text</span> | string | |

</div>
| <span className="ndl-data">Object ID</span> | string | Internal identifier for this insert operation. |
| <span className="ndl-data">Success</span> | signal | Triggered when the record is successfully created. |
| <span className="ndl-data">Failure</span> | signal | Triggered if the insert operation fails. |
| <span className="ndl-data">Finally</span> | signal | Triggered after the operation completes, regardless of outcome. |
| <span className="ndl-data">Is Fetching</span> | boolean | True while the insert request is in progress. |
| <span className="ndl-data">Is Fetched</span> | boolean | True once the request has completed. |
| <span className="ndl-data">Status</span> | string | Status returned from the insert operation. |
| <span className="ndl-data">Is Success</span> | boolean | True if the record was created successfully. |
| <span className="ndl-data">Is Error</span> | boolean | True if an error occurred. |
| <span className="ndl-data">Error Text</span> | string | Error message returned by Supabase, if any. |

</div>
52 changes: 17 additions & 35 deletions library/modules/supabase/nodes/edge-functions/call-edge-function.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,60 +2,42 @@
hide_title: true
---

{/*##head##*/}

# Call Edge Function
<br />
Calls a specific Supabase Edge Function by name and sends an optional request body.

The Call Edge Function node calls a specific Supabase Edge Function. You provide the unique function name, and the request body.
<div className="ndl-image-with-background l">
![Call Edge Function node](../../fs-sb-call-function.png)
</div>

{/*##head##*/}
The Call Edge Function node invokes a Supabase Edge Function deployed in your Supabase project. Provide the function name and an optional payload, and Fluxscape will execute the request and return the response object.

This is based on the [Supabase Client SDK - Invokes a Supabase Edge Function](https://supabase.com/docs/reference/javascript/functions-invoke).
This node is based on the Supabase Client SDK invoke method. For reference, see
[Supabase Client SDK – Invokes a Supabase Edge Function](https://supabase.com/docs/reference/javascript/functions-invoke).

## Inputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| ----------------------------------------------- | ---------- | ----------- |
| <span className="ndl-data">Function Name</span> | string | |
| <span className="ndl-data">Options</span> | javascript | |
| <span className="ndl-data">Function Name</span> | string | The name of the Edge Function to invoke (without a URL). |
| <span className="ndl-data">Options</span> | javascript | A script that returns an options object for the request. |

</div>

Similar to how the Function node works, you can use `Inputs.Value` inside the Options script to create a custom request.
Similar to how other scriptable nodes work, you can use `Inputs.Value` inside the Options script to build a dynamic request.

### Options

```js
// Write your query script here, check out the reference documentation for examples
// Return an options object for the Edge Function invocation.
// Examples: headers, method, responseType, body, etc.
return {
// headers: {
// "my-custom-header": 'my-custom-header-value',
// "my-custom-header": "my-custom-header-value",
// },
// method: 'POST',
// responseType: 'text',
// method: "POST",
// responseType: "text",
body: JSON.stringify(Inputs.Data),
};
```

## Outputs

> The response you get back is a pure object, and will not be converted to a Noodl Object.

<div className="ndl-table-35-65">

| Data | Type | Description |
| --------------------------------------------- | ------- | ----------- |
| <span className="ndl-data">Object ID</span> | string | |
| <span className="ndl-data">Success</span> | signal | |
| <span className="ndl-data">Failure</span> | signal | |
| <span className="ndl-data">Finally</span> | signal | |
| <span className="ndl-data">Is Fetching</span> | boolean | |
| <span className="ndl-data">Is Fetched</span> | boolean | |
| <span className="ndl-data">Status</span> | string | |
| <span className="ndl-data">Is Success</span> | boolean | |
| <span className="ndl-data">Is Error</span> | boolean | |
| <span className="ndl-data">Error Text</span> | string | |

</div>
};
30 changes: 17 additions & 13 deletions library/modules/supabase/nodes/events/create-record.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,27 @@
hide_title: true
---

{/*##head##*/}

# Supabase Client Event Create Record
<br />
Emits a signal when a record is created by the client in Supabase.

<div className="ndl-image-with-background l">
![Supabase Client Event Create Record node](../../fs-sb-client-create-record.png)
</div>

This node is used to receive a signal when a Supabase record is created by the client. Similiar to the [Receive Event node](/nodes/events/receive-event), just the Send Event node is built into the Create Record node.
This node listens for record creation events triggered by client-side actions in Supabase. It allows your app to react immediately when new data is created, such as updating UI state, triggering workflows, or chaining additional logic.

{/*##head##*/}
It works similarly to the [Receive Event node](/nodes/events/receive-event), but in this case the event emission is built directly into the Create Record flow, removing the need for a separate Send Event node.

## Inputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| ------------------------------------------------ | ------- | ----------------------------------------------------------------------------------- |
| <span className="ndl-data">Enable</span> | boolean | Allow filtering on a specific table events, otherwise this will receive all events. |
| <span className="ndl-data">Table Name</span> | string | Visible when "Enable" is true. |
| <span className="ndl-data">Data Object ID</span> | string | |
| Data | Type | Description |
| ------------------------------------------------ | ------- | ----------- |
| <span className="ndl-data">Enable</span> | boolean | Enables filtering by a specific table. When disabled, events from all tables are received. |
| <span className="ndl-data">Table Name</span> | string | The table to listen to. Only visible when **Enable** is true. |
| <span className="ndl-data">Data Object ID</span> | string | Optional identifier used to scope or correlate the event. |

</div>

Expand All @@ -28,8 +32,8 @@ This node is used to receive a signal when a Supabase record is created by the c

| Data | Type | Description |
| -------------------------------------------- | ------ | ----------- |
| <span className="ndl-data">On</span> | signal | |
| <span className="ndl-data">Table Name</span> | string | |
| <span className="ndl-data">Record ID</span> | string | |
| <span className="ndl-data">On</span> | signal | Triggered when a matching record creation event is received. |
| <span className="ndl-data">Table Name</span> | string | The name of the table where the record was created. |
| <span className="ndl-data">Record ID</span> | string | The identifier of the newly created record. |

</div>
</div>
26 changes: 15 additions & 11 deletions library/modules/supabase/nodes/events/delete-records.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,26 @@
hide_title: true
---

{/*##head##*/}

# Supabase Client Event Delete Records
<br />
Emits a signal when one or more records are deleted by the client in Supabase.

<div className="ndl-image-with-background l">
![Supabase Client Event Delete Records node](../../fs-sb-client-delete-record.png)
</div>

This node is used to receive a signal when a Supabase record is deleted by the client. Similiar to the [Receive Event node](/nodes/events/receive-event), just the Send Event node is built into the Delete Records node.
This node listens for record deletion events triggered by client-side actions in Supabase. It allows your app to react immediately when records are removed, such as updating lists, refreshing views, or triggering follow-up workflows.

{/*##head##*/}
It works similarly to the [Receive Event node](/nodes/events/receive-event), but in this case the event emission is built directly into the Delete Records flow, removing the need for a separate Send Event node.

## Inputs

<div className="ndl-table-35-65">

| Data | Type | Description |
| -------------------------------------------- | ------- | ----------------------------------------------------------------------------------- |
| <span className="ndl-data">Enable</span> | boolean | Allow filtering on a specific table events, otherwise this will receive all events. |
| <span className="ndl-data">Table Name</span> | string | Visible when "Enable" is true. |
| Data | Type | Description |
| -------------------------------------------- | ------- | ----------- |
| <span className="ndl-data">Enable</span> | boolean | Enables filtering by a specific table. When disabled, events from all tables are received. |
| <span className="ndl-data">Table Name</span> | string | The table to listen to. Only visible when **Enable** is true. |

</div>

Expand All @@ -27,7 +31,7 @@ This node is used to receive a signal when a Supabase record is deleted by the c

| Data | Type | Description |
| -------------------------------------------- | ------ | ----------- |
| <span className="ndl-data">On</span> | signal | |
| <span className="ndl-data">Table Name</span> | string | |
| <span className="ndl-data">On</span> | signal | Triggered when a matching record deletion event is received. |
| <span className="ndl-data">Table Name</span> | string | The name of the table where records were deleted. |

</div>
</div>
Loading