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

catalysis

v1.0.4

Published

A Node.js based web framework

Readme

Currently under construction

Catalysis.js

Install

$ npm install -g catalysis-init

Create Project

enter the directory where you want your project to be located and write command:

$ catalysis-init new example-project

Features

  • Controller
  • Model
  • Service
  • Middleware
  • WebSocket
  • Dependency Injection
  • Routing
  • REST API
  • Static file serving
  • Template Engine
  • Multipart support
  • Cache
  • Email
  • Validation
  • Markdown
  • Plugin

Introduction

Here is an example of how to write a hello world application. Let's get started!

We first create a file named HelloController.js within folder api/controllers/ and here we define the Controller with an Action named hello:

module.exports = {
  hello: (req, res) => {
    res.end("Hello world!");
  }
}

After controller has been defined, then we have to define a route in order to routing requests to the action. Let's edit the Configuration config/setting.js:

module.exports = {
  ...
  actions: [
    { method: "GET", url: "/", action: "HelloController.hello" }
  ]
  ...
}

That's it! Let's enter the command and run:

$ node app

Open browser and type the url "localhost:80", then you should see "Hello world!" in the page.

Controllers

Overview

Controllers (the C in MVC) are the objects in your Catalysis application that are responsible for responding to requests from a web browser, mobile application or any other system capable of communicating with a server. They often act as a middleman between your services and views.

Actions

Controllers are comprised of a set of methods called actions. Actions are bound to routes in your application, so that when a client requests the route, the action is executed to perorm some bussiness logic and send a response. For example the GET /hello route in your application cound be bound to an action like:

module.exports = {
  ...
  hello: function(req, res) {
    res.end("Hi there!");
  }
  ...
}

Any time a web browser is pointed to /hello URL on your app's server, the page will display the message: "Hi there!".

Where are controllers defined?

Controllers are defined in the api/controllers/ folder. By convention, Catalysis controllers are usually Pascal-cased, so that every word in the filename (including the first word) is capitalized: for example, UserController.js, MyController.js and SomeGreatBigController.js are all valid, Pascal-cased names.

What does a controller file look like?

A controller file defines a JavaScript dictionary (aka "plain object") whose keys are action names, and whose values are the corresponding action method. Here's a simple example of a full controller file:

module.exports = {
  hi: function(req, res) {
    res.end("Hi there!");
  },
  byte: function(req, res) {
    res.redirect("http://www.example.com");
  }
}

This controller defines two actions: hi and byte. The hi action responds to request with a string message, while the bye action responds by redirecting to another web site.