0.19.2 • Published 5 months ago
@12deg/saas-fastify v0.19.2
@12deg/saas-fastify
A Fastify plugin that provides an easy integration of saas.
Requirements
- @dzangolab/fastify-config
- @dzangolab/fastify-mailer
- @dzangolab/fastify-slonik
- @dzangolab/fastify-user
- slonik
- supertokens-node
Installation
Install with npm:
npm install @dzangolab/fastify-config @dzangolab/fastify-mailer @dzangolab/fastify-slonik @dzangolab/fastify-user slonik supertokens-node @12deg/saas-fastify
Install with pnpm:
pnpm add --filter "@scope/project" @dzangolab/fastify-config @dzangolab/fastify-mailer @dzangolab/fastify-slonik @dzangolab/fastify-user slonik supertokens-node @12deg/saas-fastify
Configuration
import { supertokensRecipesConfig } from "@12deg/saas-fastify";
const config: ApiConfig = {
...
saas: {
rootDomain: process.env.APP_ROOT_DOMAIN as string,
mainAppSubdomain: process.env.MAIN_APP_SUBDOMAIN as string || "app",
subdomains: "optional" // "disabled", "optional", "required",
},
user: {
...
supertokens: {
recipes: supertokensRecipesConfig,
}
}
...
};
Usage
Register the saas plugin with your Fastify instance:
import saasPlugin, { accountMigrationPlugin } from "@12deg/saas-fastify";
import configPlugin from "@dzangolab/fastify-config";
import mailerPlugin from "@dzangolab/fastify-mailer";
import slonikPlugin, { migrationPlugin } from "@dzangolab/fastify-slonik";
import userPlugin from "@dzangolab/fastify-user";
import Fastify from "fastify";
import config from "./config";
import type { ApiConfig } from "@dzangolab/fastify-config";
import type { FastifyInstance } from "fastify";
const start = async () => {
// Create fastify instance
const fastify = Fastify({
logger: config.logger,
});
// Register fastify-config plugin
await fastify.register(configPlugin, { config });
// Register database plugin
await fastify.register(slonikPlugin, config.slonik);
// Register mailer plugin
await fastify.register(mailerPlugin, config.mailer);
// Register fastify-user plugin
await fastify.register(userPlugin);
// Register saas-fastify plugin
await api.register(saasPlugin);
// Run app database migrations
await fastify.register(migrationPlugin, config.slonik);
// Run accounts database migrations
await api.register(accountMigrationPlugin);
try {
await fastify.listen({
port: 3000,
host: "0.0.0.0",
});
} catch (error) {
fastify.log.error(error);
}
};
start();
0.19.2
5 months ago
0.19.1
5 months ago
0.19.0
5 months ago
0.18.1
5 months ago
0.18.0
7 months ago
0.17.1
7 months ago
0.17.0
7 months ago
0.16.2
7 months ago
0.16.1
7 months ago
0.16.0
7 months ago
0.15.0
7 months ago
0.14.0
8 months ago
0.13.0
8 months ago
0.12.0
8 months ago
0.11.1
8 months ago
0.11.0
8 months ago
0.10.0
8 months ago
0.9.0
8 months ago
0.8.2
8 months ago
0.8.1
8 months ago
0.8.0
8 months ago
0.7.0
8 months ago
0.6.0
8 months ago
0.5.0
9 months ago
0.4.0
9 months ago
0.3.4
9 months ago
0.3.3
9 months ago
0.3.2
9 months ago
0.3.1
9 months ago
0.3.0
9 months ago
0.2.1
10 months ago
0.2.0
10 months ago
0.1.0
11 months ago