> ## Documentation Index
> Fetch the complete documentation index at: https://docs.readdy.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Readdy Backend

> Readdy's built-in Database, Functions, and Secrets to power your app without setting up a separate third-party backend service

Readdy Backend is Readdy's built-in backend foundation. It lets your project use a database and server-side functions directly inside Readdy, without first subscribing to and setting up a separate third-party backend service such as Supabase. It is designed to feel low-friction for non-technical users — in many cases, the connection and setup flow happens through Readdy with very little manual infrastructure work.

Readdy Backend includes three core modules:

* **Database**: manage and inspect your project's data
* **Functions**: run custom server-side logic for your project
* **Secrets**: store private values for server-side workflows without exposing them in your frontend code

With Readdy Backend, you can:

* **Skip separate backend setup**: add backend capability to your project inside Readdy instead of first configuring a separate database service
* **Start simple and go deeper**: begin from Readdy's UI and Chat, then move into direct data tools only when you need more control
* **Choose your level of control**: use visual tools for everyday work, and use SQL, Functions, or Secrets when your workflow becomes more advanced
* **Support real product scenarios**: manage leads, forms, products, orders, internal data, automations, and custom server-side workflows

<Info>
  **Prerequisites:** Readdy Backend and [Supabase](/integrations/supabase) **cannot** be connected to the same project at the same time. If your project already uses Supabase, disconnect it first before connecting Readdy Backend.
</Info>

<Warning>
  Disconnecting either Supabase or Readdy Backend from a project is a high-risk action. It may break existing features, cause function failures, or result in data loss on your website. If the project is already in use, make sure you understand the current setup and back up any important data before disconnecting.
</Warning>

## Application Layer & Use Cases

Readdy Backend gives your project the core backend tools behind the scenes. But for many users, that does not mean working in **Database**, **Functions**, or **Secrets** every day. Readdy also offers simpler, task-focused tools for common business needs, so you can manage your work through pages that match what you are trying to do.

* Use **Database**, **Functions**, and **Secrets** when you need direct backend access and control.
* Use a Readdy application when you want a simpler workflow built for a specific job.

E-commerce users should usually start with [Shop](/features/shop) to manage products and orders, instead of manually editing product and order tables in the database. The backend is still powering that experience underneath, but the [Shop](/features/shop) workflow is easier, safer, and more intuitive for non-technical users.

Use this rule of thumb:

* If a Readdy application already exists for your use case, start there.
* If you need direct data access, use **Database**.
* If you need custom server-side logic, use **Functions**.
* If you need to store private configuration for backend workflows, use **Secrets**.

<Tip>
  Use application modules (Shop) first when available. They are usually easier and safer for non-technical users.
</Tip>

## Terminology

| Term              | Meaning                                                                                            |
| ----------------- | -------------------------------------------------------------------------------------------------- |
| Database          | The place where your project's structured data is stored.                                          |
| Table             | A collection of records, like a spreadsheet for one type of data.                                  |
| Row               | One record inside a table.                                                                         |
| Column            | One field inside a table, such as `name`, `email`, or `price`.                                     |
| Schema            | A grouping layer inside the database. In Readdy Backend, `public` is the main schema for app data. |
| Table Editor      | A visual way to browse and edit data without writing SQL.                                          |
| SQL Editor        | A text editor for writing custom database queries.                                                 |
| Function          | A piece of server-side code you can deploy and run for custom backend logic.                       |
| Endpoint URL      | The URL you can call to trigger a deployed function.                                               |
| Secret            | A private project-level value, such as an API key or token, used by backend workflows.             |
| Application layer | A higher-level Readdy module built on top of the backend foundation, such as Shop.                 |

## How to Connect

<Steps>
  <Step title="Open the Connects Panel">
    Click the **Connects** button in your project.

    <Frame>
      <img src="https://mintcdn.com/readdy/JZkFt_dgmEZNdUCV/images/go-to-connects.png?fit=max&auto=format&n=JZkFt_dgmEZNdUCV&q=85&s=6213cbc5b4fcf9366c507d45f40cdd40" alt="Open Connects Window" width="3086" height="1328" data-path="images/go-to-connects.png" />
    </Frame>
  </Step>

  <Step title="Find Readdy Backend">
    Locate **Readdy Backend** in the Connects panel.

    <Frame>
      <img src="https://mintcdn.com/readdy/aOmJVT6nLnOKbJ3V/images/choose-backend.png?fit=max&auto=format&n=aOmJVT6nLnOKbJ3V&q=85&s=5355bdd79b1dbb2a9882d5f166b4e021" alt="Find Readdy Backend in the Connects panel" width="3086" height="1842" data-path="images/choose-backend.png" />
    </Frame>
  </Step>

  <Step title="Click Connect">
    Click **Connect**. Readdy takes you back to the Editor and sends the setup request automatically.
  </Step>

  <Step title="Verify the Connection">
    When the connection is ready, Readdy Backend shows as **Connected**.

    <Frame>
      <img src="https://mintcdn.com/readdy/aOmJVT6nLnOKbJ3V/images/backend-connected.png?fit=max&auto=format&n=aOmJVT6nLnOKbJ3V&q=85&s=3748b04c323dddbf85a8b72ea30ac0c8" alt="Backend is connected" width="3086" height="1852" data-path="images/backend-connected.png" />
    </Frame>
  </Step>
</Steps>

You can also connect Readdy Backend through Chat. Describe your needs — for example, tell Readdy that you need backend storage for sign-up data, products, orders, leads, bookings, or any other feature that requires stored data.

<Frame>
  <img src="https://mintcdn.com/readdy/aOmJVT6nLnOKbJ3V/images/connect-backend-in-chat.png?fit=max&auto=format&n=aOmJVT6nLnOKbJ3V&q=85&s=7213e6800f4a712698cd564e634ace26" alt="Adding backend through Chat" width="3086" height="1852" data-path="images/connect-backend-in-chat.png" />
</Frame>

<Tip>
  Start from Chat when you are creating a new backend structure from scratch. Describe the outcome you want before jumping into tables.
</Tip>

## Using Database

**Database** gives you two working modes: **Table Editor** and **SQL Editor**.

<Columns cols={2} className="gap-4">
  <Frame>
    <img src="https://mintcdn.com/readdy/JZkFt_dgmEZNdUCV/images/database-table-view.png?fit=max&auto=format&n=JZkFt_dgmEZNdUCV&q=85&s=136aed08be9aa16782ce4d67019603c0" alt="Table Editor view" width="3086" height="1852" data-path="images/database-table-view.png" />
  </Frame>

  <Frame>
    <img src="https://mintcdn.com/readdy/JZkFt_dgmEZNdUCV/images/database-sql-view.png?fit=max&auto=format&n=JZkFt_dgmEZNdUCV&q=85&s=970f512d5f870f3e51ba9252946b0552" alt="SQL Editor view" width="3086" height="1852" data-path="images/database-sql-view.png" />
  </Frame>
</Columns>

### How to Use It

1. Open **Backend** in the sidebar, then open **Database**.

   <Frame>
     <img src="https://mintcdn.com/readdy/QoEVL23NXZja4t7P/images/open-backend-in-sidebar.png?fit=max&auto=format&n=QoEVL23NXZja4t7P&q=85&s=55ba7f0d1a5dcf0c0b4de1655fadb0f5" alt="Expand Backend and select Database" width="3086" height="2040" data-path="images/open-backend-in-sidebar.png" />
   </Frame>

2. Select a table from the left panel.

   <Frame>
     <img src="https://mintcdn.com/readdy/fqxptV8GGH2UozGv/images/table-view-swith-table.gif?s=277b754b70ac7fb5540f40b59a8bfb86" alt="Switch between tables" width="1856" height="1118" data-path="images/table-view-swith-table.gif" />
   </Frame>

3. Use **Table Editor** for most everyday actions.

4. Switch to **SQL Editor** when you need a custom query.

   <Frame>
     <img src="https://mintcdn.com/readdy/uy8icQxE9cVA9XNl/images/sql-view-query.gif?s=149d12c33fa38fd16397a8b1abaea48e" alt="Run a query in SQL Editor" width="1854" height="1120" data-path="images/sql-view-query.gif" />
   </Frame>

5. If there are no tables yet, go to Chat and ask Readdy to create the data structure you need.

### What You Can Do in Database

* Search tables and switch between visible schemas
* View table rows with pagination
* Edit cells directly in **Table Editor**
* Insert a row, edit a row, or delete a row
* Add, edit, or delete columns
* Use a picker for foreign-key fields

<Tip>
  Review data carefully before deleting rows or columns, because this can affect page content or app behavior.
</Tip>

### Table Editor vs SQL Editor

* Choose **Table Editor** if you want a visual, low-risk workflow.
* Choose **SQL Editor** if you need a custom query and you already understand SQL.

## Using Functions

**Functions** lets you create and deploy custom backend endpoints for your project.

<Frame>
  <img src="https://mintcdn.com/readdy/JZkFt_dgmEZNdUCV/images/function-example.png?fit=max&auto=format&n=JZkFt_dgmEZNdUCV&q=85&s=25f1dd1c8618000b6a285a42d420160f" alt="An example of adding a function" width="3086" height="1864" data-path="images/function-example.png" />
</Frame>

### Why Use Functions

* You need logic that should run on the server side instead of in the page.
* You want an endpoint your project or an external service can call.
* You need to handle custom workflows that go beyond simple data editing.

### Common Scenarios

* Handling webhook-style requests
* Connecting with third-party services
* Running custom processing logic
* Building automation behind forms, orders, or internal tools
* Creating backend endpoints for features that need more than UI-level logic

### What You Can Do in Functions

* View all deployed functions in one list
* Search functions by name
* Create a new function
* Edit and redeploy an existing function
* Copy a function URL
* Delete functions you no longer need

### How to Use It

1. Open **Backend** in the sidebar, then open **Functions**.
2. Click **"Deploy a New Function"**.
3. Enter a function name (function name is mandatory).
4. Write your code in the editor.
5. Click **"Deploy Function"**.
6. Copy the generated URL from the list when you need to call the function.

<Frame>
  <img src="https://mintcdn.com/readdy/JZkFt_dgmEZNdUCV/images/function-list.png?fit=max&auto=format&n=JZkFt_dgmEZNdUCV&q=85&s=4282323ddb99af2d4b1ef40208d7bec0" alt="View Function list" width="3086" height="1864" data-path="images/function-list.png" />
</Frame>

## Using Secrets

**Secrets** lets you store sensitive values for your project, such as API keys, access tokens, and other backend-only configuration.

These values are designed for server-side use. They help your functions and backend workflows access private credentials without hardcoding them directly into your project code or exposing them in the page.

### Why Use Secrets

* You need to keep an API key or token out of your frontend code
* You want your backend logic to read private configuration safely
* You need one place to manage project-level secrets used by functions or backend workflows

### What You Can Do in Secrets

* View all existing secret names in one list
* Add a new secret
* Replace the value of an existing secret
* Delete secrets you no longer need

### How to Use It

1. Open **Backend** **Secrets** in the sidebar.
2. Click **Add Secret**.
3. Enter the **Name** and **Value**.
4. Click **Save Secret**.
5. **If a secret with the same name already exists, confirm that you want to replace it.**

### Important Behavior to Understand

* Secret values are write-only. After saving, Readdy does not show the value again in the list.
* Secret names are unique within a project. Adding a name that already exists replaces the previous value after confirmation.
* Updates may take up to 60 seconds to take effect in backend usage.

## Usage Limits and Out-of-Scope Cases

* **Database** is not the best place for everyday business operations if a dedicated Readdy application already exists for your use case.
* In **SQL Editor**, only **one SQL statement** can run at a time.
* In **SQL Editor**, write operations are only allowed in the `public` schema. Other visible schemas are read-only.
* Primary-key cells cannot be edited directly in **Table Editor**.
* Some rows or columns may not be deletable if other data depends on them or if the table is protected.
* **Functions** supports deploying and managing functions, but it is not a full backend operations suite. Items such as local debugging, logs/monitoring, migration management, and backup/restore are not part of this module.
* **Secrets** stores private configuration values, but it is not a full secret lifecycle or audit-management system.

## Tips and Best Practices

<Tip>
  Keep functions focused. One clear purpose per function is usually easier to manage than one large all-purpose function.
</Tip>

<Tip>
  Use Database to verify what is really stored, especially when your UI is driven by dynamic data.
</Tip>

## FAQ

<AccordionGroup>
  <Accordion title="I connected Readdy Backend, but Database looks empty">
    That usually means your project does not have any tables yet. Go to Chat and describe what data you want to store, such as users, products, orders, forms, or leads.
  </Accordion>

  <Accordion title="Should I use Shop or Database?">
    Use [Shop](/features/shop) for normal e-commerce operations like managing products and orders. Use **Database** when you need direct access to the underlying records or when you are working with data outside the Shop workflow.
  </Accordion>

  <Accordion title="Why can't I edit a cell in Table Editor?">
    Direct cell editing only works when the table has a primary key. Primary-key fields themselves are not editable in the inline editor.
  </Accordion>

  <Accordion title="Why didn't my SQL run?">
    Check these common causes:

    * You tried to run more than one statement at once
    * You tried a blocked system-level operation
    * You tried to write outside the `public` schema
    * Your SQL has a syntax or table-name issue
  </Accordion>

  <Accordion title="Why can't I delete a row or column?">
    The record may still be referenced by other data, or the table/column may be protected. Remove or update the dependent data first, then try again.
  </Accordion>

  <Accordion title="Where do I find my function URL?">
    After deployment, the URL appears in the **Functions** list. You can copy it directly from there.
  </Accordion>

  <Accordion title="Why can't I view a secret value after saving it?">
    Secret values are write-only for security reasons. Readdy shows the secret name and description, but not the saved value.
  </Accordion>

  <Accordion title="I updated a secret, but my backend workflow still uses the old value">
    Secret updates may take up to 60 seconds to take effect. Wait a moment, then run your function or workflow again.
  </Accordion>
</AccordionGroup>

## Need Help?

If this guide doesn't resolve your issue, [submit a support ticket](https://readdy.ai/feedback). We're here to help!
