This quick start guide will get you setup with Trigger.dev and Supabase inside a new Next.js project.

Preparing Supabase & Next.js

Create an account with Supabase or login if you have one already: Once on the dashboard, click the ‘New project’ button to create a new project in Supabase. create a new project From inside your new project, click the ‘SQL Editor’ button in the side menu and then click the “User Management Starter” from the Quickstarts menu:
Feel free to choose another starter or use hand-crafted tables, anything will work for purposes of this quick start
management starter Over in a terminal window, create a new Next.js app with Supabase support:
npx create-next-app@latest -e with-supabase my-supabase-app
cd my-supabase-app
Next, rename the .env.local.example file to .env.local and add your Supabase URL and public key:
NEXT_PUBLIC_SUPABASE_URL=your-project-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
You can find your API keys in Supabase by clicking the cog (⚙️) icon in the left menu and selecting ‘API’ from the Project Settings menu: find your api keys Finally, in the terminal, go ahead and Generate the Typescript types now as we’ll be using them shortly:
You may need to login to the supabase CLI first. For more info see the supabase login docs
npx supabase gen types typescript --project-id <your project id> --schema public --schema auth > supabase-types.ts

Setup Trigger.dev

Now it’s time to create a Trigger.dev account. You can either: Once you’ve created an account, follow the steps in the app to:
  1. Complete your account details.
  2. Create your first Organization and Project.
Next, initialize Trigger.dev in the project by running this command:
npx @trigger.dev/cli@latest init
Edit the middleware.ts file and add the following code to exclude the Trigger.dev endpoint from the Supabase auth middleware:
// Match all routes other than /api/trigger
export const config = {
  matcher: ["/((?!api/trigger).*)"],
};

Add the Supabase Integration

Add the Supabase package to your project by running this command:
npm add @trigger.dev/supabase
Edit the jobs/examples.ts file and replace with the following code:
import { client } from "@/trigger";
import { Database } from "@/supabase-types";
import { SupabaseManagement } from "@trigger.dev/supabase";

// Use OAuth to authenticate with Supabase Management API
const supabaseManagement = new SupabaseManagement({
  id: "supabase-management",
});

// Use the types we generated earlier
const db = supabaseManagement.db<Database>(process.env.NEXT_PUBLIC_SUPABASE_URL!);

client.defineJob({
  id: "supabase-test-job",
  name: "My Supabase Test Job",
  version: "1.0.0",
  trigger: db.onInserted({
    schema: "auth",
    table: "users",
  }),
  run: async (payload, io, ctx) => {},
});

Authenticate to the Supabase Management API

The Supabase Triggers use the Supabase Management API to register the triggers in your Supabase projects. You can authenticate using a Personal Access Token or via the new Supabase Management API OAuth implementation, which we are using in this example. Login to Trigger.dev and navigate to the project “Integrations” page. Select the “Supabase Management” integration and configure it like so: configure Authorize access to your Supabase project and then you’ll be ready to run the Job. oauth

Run and test the Job

Now you are ready to run the Next.js app and test the Job. Run the following command to start the Next.js app:
npm run dev
And then in a separate terminal, run the following command to start the Trigger.dev agent:
npx @trigger.dev/cli dev
Head back to your Supabase Dashboard -> Auth, and create a new user (keep “Auto Confirm User?” checked) create user Then navigate over to your Trigger.dev project dashboard and you should see the job running. job running

What’s next?

Checkout our fully-functioning Supabase Onboarding Email example to learn how to build an email drip campaign in 62 lines of code.