Back to Supabase

Use Supabase with SolidJS

apps/docs/content/guides/getting-started/quickstarts/solidjs.mdx

1.26.043.1 KB
Original Source
<StepHikeCompact>

<StepHikeCompact.Step step={1}>

<$Partial path="quickstart_db_setup.mdx" />

</StepHikeCompact.Step>

<StepHikeCompact.Step step={2}>

<StepHikeCompact.Details title="Create a SolidJS app">

Create a SolidJS app using the `degit` command.

</StepHikeCompact.Details>

<StepHikeCompact.Code>

  ```bash name=Terminal
  npx degit solidjs/templates/js my-app
  ```

</StepHikeCompact.Code>

</StepHikeCompact.Step>

<StepHikeCompact.Step step={3}> <StepHikeCompact.Details title="Install the Supabase client library">

The fastest way to get started is to use the `supabase-js` client library which provides a convenient interface for working with Supabase from a SolidJS app.

Navigate to the SolidJS app and install `supabase-js`.

</StepHikeCompact.Details>

<StepHikeCompact.Code>

  ```bash name=Terminal
  cd my-app && npm install @supabase/supabase-js
  ```

</StepHikeCompact.Code>

</StepHikeCompact.Step>

<StepHikeCompact.Step step={4}> <StepHikeCompact.Details title="Declare Supabase Environment Variables">

Create a `.env.local` file and populate with your Supabase connection variables:

<ProjectConfigVariables variable="url" />
<ProjectConfigVariables variable="publishable" />


</StepHikeCompact.Details>

<StepHikeCompact.Code>

  <$CodeTabs>

    ```text name=.env.local
    VITE_SUPABASE_URL=<SUBSTITUTE_SUPABASE_URL>
    VITE_SUPABASE_PUBLISHABLE_KEY=<SUBSTITUTE_SUPABASE_PUBLISHABLE_KEY>
    ```

  </$CodeTabs>

  <$Partial path="api_settings_steps.mdx" variables={{ "framework": "solidjs", "tab": "frameworks" }} />

</StepHikeCompact.Code>

</StepHikeCompact.Step>

<StepHikeCompact.Step step={5}> <StepHikeCompact.Details title="Query data from the app">

In `App.jsx`, create a Supabase client to fetch the instruments data.

Add a `getInstruments` function to fetch the data and display the query result to the page.

</StepHikeCompact.Details>
<StepHikeCompact.Code>


  ```jsx name=src/App.jsx
  import { createClient } from "@supabase/supabase-js";
  import { createResource, For } from "solid-js";

  const supabase = createClient('https://<project>.supabase.co', '<sb_publishable_key>');

  async function getInstruments() {
    const { data } = await supabase.from("instruments").select();
    return data;
  }

  function App() {
    const [instruments] = createResource(getInstruments);

    return (
      <ul>
        <For each={instruments()}>{(instrument) => <li>{instrument.name}</li>}</For>
      </ul>
    );
  }

  export default App;
  ```

</StepHikeCompact.Code>

</StepHikeCompact.Step>

<StepHikeCompact.Step step={6}> <StepHikeCompact.Details title="Start the app">

Start the app and go to http://localhost:3000 in a browser and you should see the list of instruments.

</StepHikeCompact.Details>

<StepHikeCompact.Code>

  ```bash name=Terminal
  npm run dev
  ```

</StepHikeCompact.Code>

</StepHikeCompact.Step> </StepHikeCompact>