0.19.2 • Published 7 months ago

@12deg/saas-fastify v0.19.2

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

@12deg/saas-fastify

A Fastify plugin that provides an easy integration of saas.

Requirements

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

7 months ago

0.19.1

7 months ago

0.19.0

7 months ago

0.18.1

7 months ago

0.18.0

9 months ago

0.17.1

9 months ago

0.17.0

9 months ago

0.16.2

9 months ago

0.16.1

9 months ago

0.16.0

9 months ago

0.15.0

9 months ago

0.14.0

10 months ago

0.13.0

10 months ago

0.12.0

10 months ago

0.11.1

10 months ago

0.11.0

10 months ago

0.10.0

10 months ago

0.9.0

10 months ago

0.8.2

10 months ago

0.8.1

10 months ago

0.8.0

10 months ago

0.7.0

10 months ago

0.6.0

10 months ago

0.5.0

11 months ago

0.4.0

11 months ago

0.3.4

11 months ago

0.3.3

11 months ago

0.3.2

11 months ago

0.3.1

11 months ago

0.3.0

11 months ago

0.2.1

1 year ago

0.2.0

1 year ago

0.1.0

1 year ago