npm.io
100.0.1 • Published 1 year agoCLI

@moneypot/caas

Licence
Version
100.0.1
Deps
15
Size
1.1 MB
Vulns
0
Weekly
0

@moneypot/caas

(caas = "controller as a server", a silly but hopefully memorable name.)

This library implements a controller server that manages users and balances across any number of Moneypot casinos.

You can use it to quickly create your own controller.

Example implementations:

  1. https://github.com/moneypot/wheel-controller/: A wheel of fortune game (frontend)
  2. https://github.com/moneypot/dice-controller/: A dice game (frontend)

Manual

View our docs: https://moneypot.com/docs/caas

Install

$ npm install @moneypot/caas

Usage

import { defaultPlugins, ServerOptions, startAndListen } from "@moneypot/caas";
import path from "path";

const options: ServerOptions = {
  // Name of the postgres schemas you're exposing to the GraphQL API (if any)
  extraPgSchemas: ["app"],
  plugins: [
    ...defaultPlugins,
    // And any custom plugins you've written
  ],
  // Where to save the GraphQL schema (derived from your database + plugins)
  exportSchemaSDLPath: path.join(import.meta.dirname, "../schema.graphql"),
  // Where your database migration files are located (if any)
  userDatabaseMigrationsPath: path.join(import.meta.dirname, "../pg-versions"),
};

startAndListen(options)
  .then(({ port }) => {
    console.log(`Listening on ${port}`);
  })
  .catch(console.error);

Development

To work on this library , there's a mini project in the ./demo directory that uses @moneypot/caas as a lib.

createdb caas_demo

Ensure this role exists:

CREATE ROLE app_postgraphile LOGIN PASSWORD 'pass';

Create .env:

DATABASE_URL="postgres://app_postgraphile:pass@localhost/caas_demo"
SUPERUSER_DATABASE_URL="postgres://app_superuser:pass@localhost/caas_demo"
GRAPHILE_ENV=development
NODE_ENV=development

Run the demo:

cd demo
npm install
npm run dev

The caas-demo server should be running at http://localhost:8888/graphql.

Dashboard development

To work on the ./dashboard react app, ensure that caas-demo is running.

Terminal 1: Run demo controller inside this repo's demo dir:

cd demo
npm run dev
# Listening on :8888

Terminal 2: Run dashboard project pointed at demo controller

cd dashboard
npm install
VITE_GRAPHQL_URL=http://localhost:8888/graphql npm run dev

Now visit the localhost url that it prints out.

(The VITE_GRAPHQL_URL override is necessary since the dashboard defaults to window.location.origin + "/graphql" as its api endpoint since it usually runs bundled with the caas server.)

Change log

  • 1.0.0: Initial release.