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 🙏

© 2024 – Pkg Stats / Ryan Hefner

beamjs

v1.4.9

Published

Enterprise full stack web development framework (Backend-JS - ExpressJS - AngularJS - MongoDB)

Downloads

123

Readme

beamjs Codacy Badge

0_00

Enterprise full stack web development framework (Backend-JS - ExpressJS - AngularJS - MongoDB)

Introduction

  • BeamJS is built above Backend-JS to provide data controllers for SQL and No-SQL databases. It also includes file system controllers that work on a local file system or cloud storage.
  • These data controllers are abstract adapters above ODM/ORM patterns of MongooseJS and SequelizeJS. The objective of these adapters is to define unified query APIs to work across different database engines even across NO-SQL and SQL.
  • BeamJS is an abbreviation for the following technology stack:
    • Backend-JS - A NodeJS module and library built above ExpressJS check here.
    • ExpressJS - A minimal and flexible Node.js web application framework check here.
    • Angular - A single-page application front-end framework check here.
    • MongoDB - A NO-SQL database engine check here.
  • BeamJS can be configured to work within different technology stacks of database engines and front-end frameworks.

Why BeamJS and Backend-JS?

  • It is built for agility and highly configurable, modular, and adapting systems.
  • It is an enterprise-level framework so you can code your organizational and customer behaviors seamlessly.
  • It supports DB encryption for pseudonymization and GDPR compliance.
  • It provides a built-in data mapping pipeline.
  • It supports CQRS architecture through mixed model definitions over different DBs.
  • It supports Horizontal/DB multi-tenancy by automatically handling multi-DB connection mapping.
  • It provides a deep route-based load balancing through a built-in queuing service.
  • It provides a built-in static files server decoupling the file source that could be a local file system or cloud storage from HTTP static request handling.
  • It supports complex file streaming and transformations within the built-in queue system and load balancing.
  • It provides a built-in forward- and reverse-proxy server utilizing the queuing system for fast load-balancing, virtual hosts, and complex domain routing.
  • It supports connectionless long-polling HTTP requests.
  • It supports event-driven architecture above mixed protocols HTTP/WebSocket for pulling and pushing.
  • It provides abstract HTTP-secured WebSockets for highly secured and scalable real-time events and other unique features like sub-rooms.
  • It is ready for event-sourcing applications.
  • Backend-JS introduces the terminology of API Behavior represents organizational and customer behavior that is implemented vertically based on a built-in customizable enterprise algorithmic mental model inspired by BDD applying Behavior-first pattern check here.
  • It supports micro-services architecture by vertically implementing Behaviors (APIs) besides the built-in services abstraction layer.
  • To define a Behavior (API), The framework drives you to write the contract/specification first which can be viewed later by integrators for simple REST integrations.
  • Integrating applications made using BeamJS and Backend-JS is a SOAP-like above REST APIs. It comes with 7 front-end integration libraries as follows:
  • Integration between applications made using BeamJS and Backend-JS is like calling internal function.
  • The whole framework is the backbone of the Behaviours product where code is generated by dragging and dropping. Taking in mind that the code generated is downloadable, editable, and maintainable not like other code generators you know.

Benchmarking

  • The code of the framework is scoring between class A and C in the static analyzer of Codacy.
  • The load testing of applications made using this framework with heavy server workload scored 10k sessions per minute and above 1K concurrent connections on 1G RAM 1vCPU AWS EC2.
  • The dependencies of the framework do not exceed 30 and vulnerabilities 0 or 1.

Installation

npm install beamjs

Usage

var backend = require("beamjs").backend();
var behaviour = backend.behaviour("/api/v1");

var model = backend.model();
var User = model(
  {
    name: "User",
  },
  {
    username: String,
    password: String,
  }
);

behaviour(
  {
    name: "GetUsers",
    version: "1",
    path: "/users",
    method: "GET",
  },
  function (init) {
    return function () {
      var self = init.apply(this, arguments).self();
      self.begin("Query", function (key, businessController, operation) {
        operation.entity(new User()).append(true).apply();
      });
    };
  }
);

Starter project

A sample project that you can learn from examples of how to use BeamJS.

https://github.com/QuaNode/BeamJS-Start