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

@risecorejs/core

v3.0.33

Published

Risecorejs - The Node.js Framework

Downloads

164

Readme

Risecorejs - The Node.js Framework

Setup

npm install -g @risecorejs/core
npm install -g nodemon

npx risecorejs init my-project

cd my-project

npm install

# One of the following:
npm install pg pg-hstore # Postgres
npm install mysql2 # MySQL

Note: Don't forget to set up your database for the next step!

Copy ".env.example" -> ".env" and set up the #DATABASE section.

To run the application, use the following commands:

npm run dev or npm run start

CLI

npx risecorejs --help
risecorejs <command> [options]

Commands:
  risecorejs init [folder]                                                    Init Risecorejs template
  risecorejs dev [port] [host] [multiprocessing] [multiprocessingWorkers]     Run server in live-reload mode
  risecorejs start [port] [host] [multiprocessing] [multiprocessingWorkers]   Run server
  risecorejs make:controller [entityName] [entityExtendedName]                Creating a base controller
  risecorejs make:model [entityName]                                          Creating a base model
  risecorejs make:docs [entityName] [entityExtendedName]                      Creating a base docs
  risecorejs make:routes [entityExtendedName]                                 Creating a base routes
  risecorejs make:entity [entityName] [entityExtendedName]                    Creating a base entity
  risecorejs make:migrations                                                  Automatic creation of migrations    

Options:
      --help     Show help                                                    [boolean]
  -v, --version  Show version number                                          [boolean]

Directory structure

  • controllers
  • database:
    • joins
    • migrations
    • models
    • order-by
    • seeders
  • docs
  • middleware
  • routes
  • storage
  • structs

Config.js

import { IConfig } from '@risecorejs/core/interfaces'

export default <IConfig>{
  global: {
    test: 123
  },

  server: {
    host: '0.0.0.0', // default: 'localhost'
    port: 5000, // default
    multiprocessing: true, // default: undefined (if:true ? mode:multiprocessing : mode:singleProcess)
    multiprocessingWorkers: 3, // default: undefined
  },

  // Add your module aliases so they are always at hand
  moduleAliases: {
    '~': __dirname, // default
    '@some-folder': __dirname + '/directory/some-folder'
  },

  storage: true, // default: undefined

  structs: {
    setGlobal: true, // default
    enableAPI: true, // default,
    dir: __dirname + '/structs' // default
  },

  cron: {
    childProcess: true, // if:true ? mode:childProcess : mode:inside
    jobs: {
      '0 0 * * * *'() {
        console.log(123)
      }
    }
  },

  processes: {
    notifications: {
      vars: {
        filePath: __dirname + '/processes/notifications.js',
        notificationWorkers: env('NOTIFICATION_WORKERS', 3)
      },
      dev: {
        cmd: 'node {{ filePath }}'
      },
      prod: {
        cmd: 'pm2 start {{ filePath }} -i {{ notificationWorkers }}',
        await: true
      },
      default: {
        cmd: 'node {{ filePath }}'
      }
    }
  },

  validator: {
    locale: 'ru' // default: 'en'
  },

  router: {
    baseUrl: '/', // default
    routesDir: '/', // default
    apiDocs: {
      title: 'API-docs' // default
    }
  },

  middleware: {
    // docs: https://www.npmjs.com/package/express-rate-limit
    rateLimit: {
      windowMs: 5 * 60 * 1000, // default
      max: 1000 // default 
    },

    // docs: https://www.npmjs.com/package/cors#configuring-cors
    cors: {}, // default

    // Add your global middleware
    extends: () => [
      require('~/middleware/global/some-middleware') // or require('./middleware/global/some-middleware')
    ]
  },

  init(config) {
    // Will be executed before launching the application

    console.log('Hi, I am an initialization function')
  },

  master(config) {
    console.log('I am working in the wizard when multiprocessing is running')
  },

  start({ config, app, server }) {
    // Will be executed when the application starts

    // Calling a global variable
    console.log('Hello!', $.test) // Hello 123
  }
}