npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@thzero/library_server

v0.18.41

Published

An opinionated library of common functionality to bootstrap an API using either Fastify or Koa as the web server.

Readme

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 22+.

NodeMon

npm -g i nodemon

Installation

NPM

NPM Dependencies

Install the NPM dependencies for the server.

npm install

Mongo

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

  • Install the MongoDb (either locally or in the cloud) server
    • Recommendation is MongoDb Atlas (https://www.mongodb.com/cloud/atlas) for development/sandbox
  • Create a new MongoDb database in the Mongo server
  • Restore the default SocietySidekick MongoDb
    • Use the following MongoDb CLI tool to restore the default database located at (https://github.com/thzero/societySidekick-database)
.\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

  • MongoDb Compass (https://www.mongodb.com/products/compass)
  • Robo3T (https://robomongo.org)

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

ServiceAccountKey.json

  • Copy the contents of the file that was downloaded when generating a new private key into the 'config\ServiceAccountKey.json' file.

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",

Development

Compile and hot-reloads for development

NPM CLI

Run the application server locally in debug mode with hot reloading via Nodemon.

npm run debug

Visual Code

Install VisualCode, open the 'server' folder via 'Open Folder'.

Using the Menu->Run->Start Debugging will launch the application in debug mode with hot reloading via Nodemon

Hosting

See Google Cloud Hosting.

Google Cloud Hosting

Login to Google Cloud hosting, select the same account that was setup for Firebase.

Enable the following APIs in the Enable APIs & Services section for the project.

  • Cloud Source Repositories API
  • Cloud Build API

Project's cloudbuild.yaml

Update the cloudbuild.yaml file in the source project and change the following based on your account name

https://source.developers.google.com/p/<account name>/r/github_thzero_rocket_sidekick-common

Setup Google Cloud Source Repositories

This is a mirror of the GitHub repo for the following repos:

  • https://img.shields.io/github/package-json/v/thzero/rocket_sidekick-common

  • https://img.shields.io/github/package-json/v/thzero/rocket_sidekick-server

  • Add Repository

  • Connect external repository

  • Select the project setup by Firebase, then GitHub

  • Select the web-common repo

  • Connect selected repositories

Select repository, then permissions. Verify that the Cloud Build Service Account is listed.

Deploy to CloudRun

https://cloud.google.com/run/docs/continuous-deployment-with-cloud-build https://cloud.google.com/run/docs/deploying#service

Settings for Cloud Run configuration

Cloud Run
  • Continuously deploy new revisions from a source repository
  • Use Set Up With Cloud Build
  • Select the Repository Provide and Repository
  • Click Next
  • Branch: ^master$
  • Build Type: Dockerfile
  • Source location: /Dockerfile
  • Click Save
CPU Allocation
  • CPU is only allocated during request processing
Revision Autoscaling
  • Minimum 0
  • Maximum 1000
Ingress Control
  • All
Authentication
  • Allow unauthenticated invocations
Capacity
  • 512mb 1 cpu
  • Requested Timeout 300
  • Max Request per Container 80
Variables & Secrets

Add these variables:

  • SERVICE_ACCOUNT_KEY -
  • AUTH_API_KEY -
  • DB_DEFAULT - atla
  • DB_CONNECTION_ALTAS -
  • DB_NAME_ALTAS - production
  • DB_CONNECTION_MONGO -
    • optional
  • DB_NAME_MONGO - production
    • optional
  • LOG_LEVEL - debug
  • IP_ADDRESS - 0.0.0.0

Cloud Source Repository

In Cloud Build, go to the Repositories section.

  • Select an appropriate region, should be for the same region as your Cloud Run is running on
  • Select 2nd Gen
  • Link Repository to create a link to your repository
Link Repository
Connection
  • Create a new Host Connection
Region
  • Select the same region as your Cloud Run is running on
Name
  • Set name for the connection

  • Click Connect to create the connection

  • You may require the Security Manager API to be enabled

  • Click Continue in the confirmation dialog

Github Installation
  • Select an installation user or Install a new account

Cloud Build Trigger

Event
  • Push to branch
Region
  • Select the same region as used with the Cloud Source Repository
Repository Generation
  • Select 2nd
Source
  • Select the repository
  • Select "^master$" branch
Configuration
Type
  • Cloud Build configuration file (yaml or json)
Location
  • Repository
  • Cloud Build configuration file location
  • / cloudbuild.yaml
Deploy

Run the trigger to kick of a deploy.