@thzero/library_server

0.18.18 • Public • Published

GitHub package.json version David License: MIT

library_server

An opinionated library of common functionality to bootstrap an API application using MongoDb and Firebase. Currently either Fastify or Koa can be used as the web server; Fastify will be the focus going forward due to lack of support and updates with the Koa stack.

Requirements

NodeJs

Requires NodeJs version 18+.

Installation

NPM

Mongo

Mongo is the only currently supposed option as the server side data source.

.\bin\mongorestore --host <mongodb host name> --ssl --username <mongo user name> --password <mongo user password> --authenticationDatabase admin -d production <location of default database>

Recommended tools for managing Mongo database

Firebase

Google Firebase (https://firebase.google.com) provides the social based authentication; currently only Google social accounts are supported.

  • Add a new project
  • Setup Authentication, enabled Google in the Sign-in method.
  • Get the Firebase SDK configuration
    • Go to Project Overview->Settings->Service accounts
    • Select Node.js option
    • Click Generate new private key

Configuration

The following setup for configuration is required for an application using this library_server dependency

  • Setup the configuration found in the config\development.json
    • Note that this is ignored in the .gitignore
  • Configuration looks like the following
{
    "app": {
        "auth": {
          "apiKey": "<generate a GUID as key in standard nomeclature '#######-####-####-####-############'>",
          "claims": {
            "check": <true of false, false by default>,
            "useDefault": <true of false, false by default>
          }
        },
        "cors": {
            "origin": "*"
        },
        "db": {
            "default": "mongo"
            "mongo": {
                "connection": "<mongo connection string>",
                "name": "<environment name>"
            }
        },
        "logging": {
            "level": <see https://github.com/pinojs/pino/issues/123 for logging levels>,
            "prettify": <true of false if you want prettify, if true requres 'pino-prettify' as a dependency>
        },
        "port": <port to run the server on>
    }
}
Environment Variable overrides

The following environmnent variables override the above configuration settings found in the config file.

  • AUTH_API_KEY
  • AUTH_CLAIMS_CHECK
  • AUTH_CLAIMS_USE_DEFAULT
  • CORS_ORIGIN
  • DB_DEFAULT
  • DB_CONNECTION_ATLAS
  • DB_NAME_ATLAS
  • DB_CONNECTION_MONGO
  • DB_NAME_MONGO
  • IP_ADDRESS
  • LOGGING_LEVEL
  • LOGGING_PRETTIFY
  • PORT
Development Tool Configuration
  • Include the following in the package.json for the application.
  "version_major": #,
  "version_minor": #,
  "version_patch": #,
  "version_date": "MM/DD/YYYY",

Readme

Keywords

none

Package Sidebar

Install

npm i @thzero/library_server

Weekly Downloads

346

Version

0.18.18

License

MIT

Unpacked Size

90.1 kB

Total Files

53

Last publish

Collaborators

  • thzero