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

denali

v0.0.46

Published

A batteries-included Node.js API framework

Downloads

117

Readme

Denali

CircleCI Coverage Dependencies npm downloads latest version

An opinionated Node framework for building robust JSON APIs

Denali is a tool to help you build and deliver amibitous JSON APIs. It features:

  • First class JSON serializers, including out of the box JSON-API support
  • A single controller class (called Actions) per endpoint
  • Flexible, declarative filter system
  • An emphasis on developer happiness - a robust CLI, powerful testing primitives, and support for the full lifecycle of app development
  • ORM-agnostic design - choose your favorite Node ORM, or none at all

Why Denali?

Denali should feel familiar to anyone who has worked with popular MVC frameworks like Rails. But Denali has a slightly unique take on each aspect of the MVC pattern:

(M)VC - ORM Adapters instead of ORM lock-in

Unlike many server frameworks, Denali lets you choose which ORM you'd like to use. ORMs are hard, and the Node ecosystem has multiple competing options, each with it's own strengths and weaknesses. Rather than limiting you to a single "official" ORM, or worse, attempting to roll our own, Denali uses an adapter system to ensure that whatever ORM you bring, it can work with the Denali ecosystem.

M(V)C - Serializers instead of Views & Templates

Denali's view layer is unique as well. Rather than traditional HTML rendering, Denali's view layer renders JSON. Instead of the usual templates and view classes, we have Serializers instead, which tell Denali how to render the data you supply as a response. The separation of responsibilties ensures you can tweak how your data is structured in your API without having to change any of the logic of your app. Several common formats, including JSON-API, are supported out of the box, and customization is easy.

MV(C) - Actions instead of Controllers

In Denali, the Action class takes the role of the controller in the application. But rather than a single controller class that responds to many different endpoints, an Action class is responsible for responding to requests against a single endpoint (URL + method) only. The result is powerful - since the Action class directly and completely represents the app's response handler, we can use expressive declarative syntax to succicently define behaviors.

Getting Started

You can install Denali globally via npm:

$ npm install -g denali denali-cli

Create a new application (run with Node 6.0+):

$ denali new my-api
$ cd my-api

You can use the server command to run your API locally in development mode. The API server will automatically restart when you make a change:

$ denali server

To learn more, check out the docs or join us on Slack

License

MIT © Dave Wasmer