Added turborepo and prisma docs (#1807)
* Added python links in guides intro * Added example 1 * Updated intro * Added example 2 * Typo * Improved intro
This commit is contained in:
@@ -312,6 +312,7 @@
|
||||
"pages": [
|
||||
"guides/example-projects/batch-llm-evaluator",
|
||||
"guides/example-projects/claude-thinking-chatbot",
|
||||
"guides/example-projects/turborepo-monorepo-prisma",
|
||||
"guides/example-projects/realtime-fal-ai",
|
||||
"guides/example-projects/realtime-csv-importer",
|
||||
"guides/example-projects/vercel-ai-sdk-image-generator"
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
---
|
||||
title: "Turborepo monorepo with Prisma"
|
||||
sidebarTitle: "Turborepo monorepo with Prisma"
|
||||
description: "Two example projects demonstrating how to use Prisma and Trigger.dev in a Turborepo monorepo setup."
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
These examples demonstrate two different ways of using Prisma and Trigger.dev in a Turborepo monorepo. In both examples, a task is triggered from a Next.js app using a server action, which uses Prisma to add a user to a database table. The examples differ in how Trigger.dev is installed and configured.
|
||||
|
||||
- Example 1: Turborepo monorepo demo with Trigger.dev and Prisma packages
|
||||
- Example 2: Turborepo monorepo demo with a Prisma package and Trigger.dev installed in a Next.js app
|
||||
|
||||
<Note>
|
||||
|
||||
You can either fork the repos below, or simply check out the project structures and code to get an idea of how to set up Trigger.dev in your own monorepos.
|
||||
|
||||
</Note>
|
||||
|
||||
## Example 1: Turborepo monorepo demo with Trigger.dev and Prisma packages
|
||||
|
||||
This simple example demonstrates how to use Trigger.dev and Prisma as packages inside a monorepo created with Turborepo. The Trigger.dev task is triggered by a button click in a Next.js app which triggers the task via a server action.
|
||||
|
||||
### GitHub repo
|
||||
|
||||
Fork the GitHub repo below to get started with this example project.
|
||||
|
||||
<Card
|
||||
title="Check out the Turborepo monorepo demo with Trigger.dev and Prisma packages"
|
||||
icon="GitHub"
|
||||
href="https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package"
|
||||
>
|
||||
Click here to view the full code for this project in our examples repository on GitHub. You can
|
||||
fork it and use it as a starting point for your own project.
|
||||
</Card>
|
||||
|
||||
### Features
|
||||
|
||||
- This monorepo has been created using the [Turborepo CLI](https://turbo.build/repo), following the official [Prisma and Turborepo docs](https://www.prisma.io/docs/guides/turborepo), and then adapted for use with Trigger.dev.
|
||||
- [pnpm](https://pnpm.io/) has been used as the package manager.
|
||||
- A tasks package (`@repo/tasks`) using [Trigger.dev](https://trigger.dev) is used to create and execute tasks from an app inside the monorepo.
|
||||
- A database package (`@repo/db`) using [Prisma ORM](https://www.prisma.io/docs/orm/) is used to interact with the database. You can use any popular Postgres database supported by Prisma, e.g. [Supabase](https://supabase.com/), [Neon](https://neon.tech/), etc.
|
||||
- A [Next.js](https://nextjs.org/) example app (`apps/web`) to show how to trigger the task via a server action.
|
||||
|
||||
### Project structure
|
||||
|
||||
Simplified project structure for this example:
|
||||
|
||||
```
|
||||
|
|
||||
| — apps/
|
||||
| | — web/ # Next.js frontend application
|
||||
| | | — app/ # Next.js app router
|
||||
| | | | — api/
|
||||
| | | | | — actions.ts # Server actions for triggering tasks
|
||||
| | | | — page.tsx # Main page with "Add new user" button
|
||||
| | | | — layout.tsx # App layout
|
||||
| | | — package.json # Dependencies including @repo/db and @repo/tasks
|
||||
| |
|
||||
| | — docs/ # Documentation app (not fully implemented)
|
||||
|
|
||||
| — packages/
|
||||
| | — database/ # Prisma database package (@repo/db)
|
||||
| | | — prisma/
|
||||
| | | | — schema.prisma # Database schema definition
|
||||
| | | — generated/ # Generated Prisma client (gitignored)
|
||||
| | | — src/
|
||||
| | | | — index.ts # Exports from the database package
|
||||
| | | — package.json # Database package dependencies
|
||||
| |
|
||||
| | — tasks/ # Trigger.dev tasks package (@repo/tasks)
|
||||
| | | — src/
|
||||
| | | | — index.ts # Exports from the tasks package
|
||||
| | | | — trigger/
|
||||
| | | | — index.ts # Exports the tasks
|
||||
| | | | — addNewUser.ts # Task implementation for adding users
|
||||
| | | — trigger.config.ts # Trigger.dev configuration
|
||||
| | | — package.json # Tasks package dependencies
|
||||
| |
|
||||
| | — ui/ # UI components package (referenced but not detailed)
|
||||
|
|
||||
| — turbo.json # Turborepo configuration
|
||||
| — package.json # Root package.json with workspace config
|
||||
```
|
||||
|
||||
### Relevant files and code
|
||||
|
||||
#### Database package
|
||||
|
||||
- Prisma is added as a package in [`/packages/database`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/database/) and exported as `@repo/db` in the [`package.json`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/database/package.json) file.
|
||||
- The schema is defined in the [`prisma/schema.prisma`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/database/prisma/schema.prisma) file.
|
||||
|
||||
#### Tasks package
|
||||
|
||||
<Note>
|
||||
|
||||
to run `pnpm dlx trigger.dev@latest init` in a blank packages folder, you have to add a `package.json` file first, otherwise it will attempt to add Trigger.dev files in the root of your monorepo.
|
||||
|
||||
</Note>
|
||||
|
||||
- Trigger.dev is added as a package in [`/packages/tasks`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/tasks) and exported as `@repo/tasks` in the [`package.json`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/tasks/package.json) file.
|
||||
- The [`addNewUser.ts`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/tasks/src/trigger/addNewUser.ts) task adds a new user to the database.
|
||||
- The [`packages/tasks/src/index.ts`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/tasks/src/index.ts) file exports values and types from the Trigger.dev SDK, and is exported from the package via the [`package.json`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/tasks/package.json) file.
|
||||
- The [`packages/tasks/src/trigger/index.ts`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/tasks/src/trigger/index.ts) file exports the task from the package. Every task must be exported from the package like this.
|
||||
- The [`trigger.config.ts`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/packages/tasks/trigger.config.ts) file configures the Trigger.dev project settings. This is where the Trigger.dev [Prisma build extension](https://trigger.dev/docs/config/extensions/prismaExtension) is added, which is required to use Prisma in the Trigger.dev task.
|
||||
|
||||
<Info>
|
||||
You must include the version of Prisma you are using in the `trigger.config.ts` file, otherwise the Prisma build extension will not work. Learn more about our [Prisma build extension](/config/extensions/prismaExtension).
|
||||
|
||||
</Info>
|
||||
|
||||
#### The Next.js app `apps/web`
|
||||
|
||||
- The app is a simple Next.js app using the App Router, that uses the `@repo/db` package to interact with the database and the `@repo/tasks` package to trigger the task. These are both added as dependencies in the [`package.json`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/apps/web/package.json) file.
|
||||
- The task is triggered from a button click in the app in [`page.tsx`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/apps/web/app/page.tsx), which uses a server action in [`/app/api/actions.ts`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/apps/web/app/api/actions.ts) to trigger the task with an example payload.
|
||||
|
||||
### Running the example
|
||||
|
||||
To run this example, check out the full instructions [in the GitHub repo README file](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package/README.md).
|
||||
|
||||
## Example 2: Turborepo monorepo demo with a Prisma package and Trigger.dev installed in a Next.js app
|
||||
|
||||
This example demonstrates how to use Trigger.dev and Prisma in a monorepo created with Turborepo. Prisma has been added as a package, and Trigger.dev has been installed in a Next.js app. The task is triggered by a button click in the app via a server action.
|
||||
|
||||
### GitHub repo
|
||||
|
||||
Fork the GitHub repo below to get started with this example project.
|
||||
|
||||
<Card
|
||||
title="Check out the Turborepo monorepo demo with a Prisma package and Trigger.dev installed in a Next.js app"
|
||||
icon="GitHub"
|
||||
href="https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-trigger"
|
||||
>
|
||||
Click here to view the full code for this project in our examples repository on GitHub. You can
|
||||
fork it and use it as a starting point for your own project.
|
||||
</Card>
|
||||
|
||||
### Features
|
||||
|
||||
- This monorepo has been created using the [Turborepo CLI](https://turbo.build/repo), following the official [Prisma and Turborepo docs](https://www.prisma.io/docs/guides/turborepo), and then adapted for use with Trigger.dev.
|
||||
- [pnpm](https://pnpm.io/) has been used as the package manager.
|
||||
- A database package (`@repo/db`) using [Prisma ORM](https://www.prisma.io/docs/orm/) is used to interact with the database. You can use any popular Postgres database supported by Prisma, e.g. [Supabase](https://supabase.com/), [Neon](https://neon.tech/), etc.
|
||||
- A [Next.js](https://nextjs.org/) example app (`apps/web`) to show how to trigger the task via a server action.
|
||||
- Trigger.dev initialized and an `addNewUser` task created in the `web` app.
|
||||
|
||||
### Project structure
|
||||
|
||||
Simplified project structure for this example:
|
||||
|
||||
```
|
||||
|
|
||||
| — apps/
|
||||
| | — web/ # Next.js frontend application
|
||||
| | | — app/ # Next.js app router
|
||||
| | | | — api/
|
||||
| | | | | — actions.ts # Server actions for triggering tasks
|
||||
| | | | — page.tsx # Main page with "Add new user" button
|
||||
| | | — src/
|
||||
| | | | — trigger/
|
||||
| | | | — addNewUser.ts # Task implementation for adding users
|
||||
| | | — trigger.config.ts # Trigger.dev configuration
|
||||
| | | — package.json # Dependencies including @repo/db
|
||||
| |
|
||||
| | — docs/ # Documentation app
|
||||
| | — app/
|
||||
| | — page.tsx # Docs landing page
|
||||
|
|
||||
| — packages/
|
||||
| | — database/ # Prisma database package (@repo/db)
|
||||
| | | — prisma/
|
||||
| | | | — schema.prisma # Database schema definition
|
||||
| |
|
||||
| | — ui/ # UI components package
|
||||
|
|
||||
| — turbo.json # Turborepo configuration
|
||||
| — package.json # Root package.json with workspace config
|
||||
```
|
||||
|
||||
## Relevant files and code
|
||||
|
||||
### Database package (`@repo/db`)
|
||||
|
||||
- Located in [`/packages/database/`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-trigger/packages/database/) and exported as `@repo/db`
|
||||
- Schema defined in [`schema.prisma`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-trigger/packages/database/prisma/schema.prisma)
|
||||
- Provides database access to other packages and apps
|
||||
|
||||
### Next.js app (`apps/web`)
|
||||
|
||||
- Contains Trigger.dev configuration in [`trigger.config.ts`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-trigger/apps/web/trigger.config.ts)
|
||||
- Trigger.dev tasks are defined in [`src/trigger/`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-trigger/apps/web/src/trigger/) (e.g., [`addNewUser.ts`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-trigger/apps/web/src/trigger/addNewUser.ts))
|
||||
- Demonstrates triggering tasks via server actions in [`app/api/actions.ts`](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-trigger/apps/web/app/api/actions.ts)
|
||||
|
||||
### Running the example
|
||||
|
||||
To run this example, check out the full instructions [in the GitHub repo README file](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-trigger/README.md).
|
||||
@@ -19,33 +19,37 @@ mode: "center"
|
||||
|
||||
Get set up fast using our detailed walk-through guides.
|
||||
|
||||
| Guide | Description |
|
||||
| :----------------------------------------------------------------------------------------- | :------------------------------------------------------ |
|
||||
| [AI Agent: Generate and translate copy](/guides/ai-agents/generate-translate-copy) | Chain prompts to generate and translate content |
|
||||
| [AI Agent: Route questions](/guides/ai-agents/route-question) | Route questions to different models based on complexity |
|
||||
| [AI Agent: Content moderation](/guides/ai-agents/respond-and-check-content) | Parallel check content while responding to customers |
|
||||
| [AI Agent: News verification](/guides/ai-agents/verify-news-article) | Orchestrate fact checking of news articles |
|
||||
| [AI Agent: Translation refinement](/guides/ai-agents/translate-and-refine) | Evaluate and refine translations with feedback |
|
||||
| [Prisma](/guides/frameworks/prisma) | How to setup Prisma with Trigger.dev |
|
||||
| [Sequin database triggers](/guides/frameworks/sequin) | Trigger tasks from database changes using Sequin |
|
||||
| [Supabase edge function hello world](/guides/frameworks/supabase-edge-functions-basic) | Trigger tasks from Supabase edge function |
|
||||
| [Supabase database webhooks](/guides/frameworks/supabase-edge-functions-database-webhooks) | Trigger tasks using Supabase database webhooks |
|
||||
| [Using webhooks in Next.js](/guides/frameworks/nextjs-webhooks) | Trigger tasks from a webhook in Next.js |
|
||||
| [Using webhooks in Remix](/guides/frameworks/remix-webhooks) | Trigger tasks from a webhook in Remix |
|
||||
| [Stripe webhooks](/guides/examples/stripe-webhook) | Trigger tasks from incoming Stripe webhook events |
|
||||
| Guide | Description |
|
||||
| :----------------------------------------------------------------------------------------- | :------------------------------------------------------------------- |
|
||||
| [AI Agent: Generate and translate copy](/guides/ai-agents/generate-translate-copy) | Chain prompts to generate and translate content |
|
||||
| [AI Agent: Route questions](/guides/ai-agents/route-question) | Route questions to different models based on complexity |
|
||||
| [AI Agent: Content moderation](/guides/ai-agents/respond-and-check-content) | Parallel check content while responding to customers |
|
||||
| [AI Agent: News verification](/guides/ai-agents/verify-news-article) | Orchestrate fact checking of news articles |
|
||||
| [AI Agent: Translation refinement](/guides/ai-agents/translate-and-refine) | Evaluate and refine translations with feedback |
|
||||
| [Prisma](/guides/frameworks/prisma) | How to setup Prisma with Trigger.dev |
|
||||
| [Python image processing](/guides/python/python-image-processing) | Use Python and Pillow to process images |
|
||||
| [Python web crawler](/guides/python/python-crawl4ai) | Use Python, Crawl4AI and Playwright to create a headless web crawler |
|
||||
| [Python PDF form extractor](/guides/python/python-pdf-form-extractor) | Use Python, PyMuPDF and Trigger.dev to extract data from a PDF form |
|
||||
| [Sequin database triggers](/guides/frameworks/sequin) | Trigger tasks from database changes using Sequin |
|
||||
| [Supabase edge function hello world](/guides/frameworks/supabase-edge-functions-basic) | Trigger tasks from Supabase edge function |
|
||||
| [Supabase database webhooks](/guides/frameworks/supabase-edge-functions-database-webhooks) | Trigger tasks using Supabase database webhooks |
|
||||
| [Using webhooks in Next.js](/guides/frameworks/nextjs-webhooks) | Trigger tasks from a webhook in Next.js |
|
||||
| [Using webhooks in Remix](/guides/frameworks/remix-webhooks) | Trigger tasks from a webhook in Remix |
|
||||
| [Stripe webhooks](/guides/examples/stripe-webhook) | Trigger tasks from incoming Stripe webhook events |
|
||||
|
||||
## Example projects
|
||||
|
||||
Example projects are full projects with example repos you can fork and use. These are a great way of learning how to encorporate Trigger.dev into your project.
|
||||
|
||||
| Example project | Description | Framework | GitHub |
|
||||
| :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :-------- | :---------------------------------------------------------------------------------------------------- |
|
||||
| [Batch LLM Evaluator](/guides/example-projects/batch-llm-evaluator) | Evaluate multiple LLM models and stream the results to the frontend. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/batch-llm-evaluator) |
|
||||
| [Claude thinking chatbot](/guides/example-projects/claude-thinking-chatbot) | Use Vercel's AI SDK and Anthropic's Claude 3.7 model to create a thinking chatbot. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/claude-thinking-chatbot) |
|
||||
| [Realtime Fal.ai image generation](/guides/example-projects/realtime-fal-ai) | Generate an image from a prompt using Fal.ai and show the progress of the task on the frontend using Realtime. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/realtime-fal-ai-image-generation) |
|
||||
| [Realtime CSV Importer](/guides/example-projects/realtime-csv-importer) | Upload a CSV file and see the progress of the task streamed to the frontend. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/realtime-csv-importer) |
|
||||
| [Vercel AI SDK image generator](/guides/example-projects/vercel-ai-sdk-image-generator) | Use the Vercel AI SDK to generate images from a prompt. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/vercel-ai-sdk-image-generator) |
|
||||
| [Python web crawler](/guides/python/python-crawl4ai) | Use Python, Crawl4AI and Playwright to create a headless web crawler with Trigger.dev. | — | [View the repo](https://github.com/triggerdotdev/examples/tree/main/python-crawl4ai) |
|
||||
| Example project | Description | Framework | GitHub |
|
||||
| :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :-------- | :------------------------------------------------------------------------------------------------------------ |
|
||||
| [Batch LLM Evaluator](/guides/example-projects/batch-llm-evaluator) | Evaluate multiple LLM models and stream the results to the frontend. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/batch-llm-evaluator) |
|
||||
| [Claude thinking chatbot](/guides/example-projects/claude-thinking-chatbot) | Use Vercel's AI SDK and Anthropic's Claude 3.7 model to create a thinking chatbot. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/claude-thinking-chatbot) |
|
||||
| [Turborepo monorepo with Prisma](/guides/example-projects/turborepo-monorepo-prisma) | Use Prisma in a Turborepo monorepo with Trigger.dev. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/monorepos/turborepo-prisma-tasks-package) |
|
||||
| [Realtime Fal.ai image generation](/guides/example-projects/realtime-fal-ai) | Generate an image from a prompt using Fal.ai and show the progress of the task on the frontend using Realtime. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/realtime-fal-ai-image-generation) |
|
||||
| [Realtime CSV Importer](/guides/example-projects/realtime-csv-importer) | Upload a CSV file and see the progress of the task streamed to the frontend. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/realtime-csv-importer) |
|
||||
| [Vercel AI SDK image generator](/guides/example-projects/vercel-ai-sdk-image-generator) | Use the Vercel AI SDK to generate images from a prompt. | Next.js | [View the repo](https://github.com/triggerdotdev/examples/tree/main/vercel-ai-sdk-image-generator) |
|
||||
| [Python web crawler](/guides/python/python-crawl4ai) | Use Python, Crawl4AI and Playwright to create a headless web crawler with Trigger.dev. | — | [View the repo](https://github.com/triggerdotdev/examples/tree/main/python-crawl4ai) |
|
||||
|
||||
## Example tasks
|
||||
|
||||
|
||||
Reference in New Issue
Block a user