Turborepo is a popular monorepo management tool. Mailing works great with Turborepo but there are a few ways to set it up depending on your needs.
Option 1: different email templates per app
This is the simpler setup and is best if you're just using Mailing to send emails from a single app or if each one of your apps has its own templates. You can still share template components across apps via a shared package but each app will have it's own emails directory with templates and previews.
To set this up, go to your app’s directory and install
mailing-core then setup with
npx mailing init as usual. Full setup instructions in the Readme should just work in your app's directory.
Option 2: package with shared emails across apps
This is a more complicated setup intended for cases where you have different apps that should all be able to send the same emails.
- Add an internal package called packages/emails. You'll want to install
react-domin here. If you're using typescript, you'll also need to add
- Add an packages/emails/index.ts that exports your templates and emails/index.
- Refer to this as your packages/emails/package.json entrypoint. Add a dev script to this as well to boot up the preview server when you boot your other apps.
- Import this package into apps where you want to use it. For a next app, you'll want to add it to
transpilePackagesin your next.config.js. Then you can import it into API routes that run on the server (hello world example).