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 🙏

© 2025 – Pkg Stats / Ryan Hefner

littoral

v0.0.7

Published

A self contained server for examples and demos.

Readme

Littoral

A self contained, modular, exhibition server.

Littoral, is a simple, reliable way to host example projects in a self contained way. You provide a directory full of example applications and Littoral loads them up and serves them.

Meant to run on docker Littoral has a pre built docker container paperelectron/littoral-docker it is also a good fit for hosting behind OctoRP if hosting multiple docker apps is your kind of thing.

Installation

Production - No Docker

$ npm install -g littoral
$ littoral

The above will load up the demo content and theme. You probably dont want that, so to get going quickly you can do.

$ npm install -g littoral
$ git clone https://github.com/PaperElectron/littoral-boilerplate.git ~/.littoral
$ littoral

This will start a server on localhost:8080 with a very generic theme, and some dummy content to use as a starting point.

You can also pass a path to the littoral executable and it will attempt to use that directory for its content.

$ littoral ~/my/projects

Production - Docker.

The docker image is built when this repo is committed to. It comes ready to run this app with your data passed in as a volume.

$ docker run -p 8080:8080 \
-v ~/my/content:/var/littoral/.littoral \
paperelectron/littoral-docker

Development.

$ git clone https://github.com/PaperElectron/littoral
$ cd littoral && npm install
$ npm start

This will give you a running server on localhost:8080 with the demo content loaded.

$ npm start ~/my/littoral_content

This will give you a running server on localhost:8080 with your content loaded.

Configuration

Configuration is provided by the settings.js file found in the root of your content directory. It is pretty self explanatory. You can read more here

Themes

Themes are loaded from the themes/ directory inside of your content root, they consist of a directory with a package.json file, a views directory and a public directory.

The littoral-boilerplate repo contains a simple theme with all of the nessesary components written in jade. (handlebars coming soon). It is fairly well commented, and pretty easy to spot what is going on, if you want to create your own (You do, the boilerplate is just that.)

Content

Your content is loaded from the routes/ directory inside your content root. They consist of a directory containing an index.js file, a views/ directory and a public/directory (similar to a theme). You can have as many of these as you want, within reason I havent tested the limits but certainly hundreds. Read more

Roadmap

This project started as a quick solution to a problem I had, and as a platform to test one of my other projects. As such its api and design are going to be rather fluid for a bit as things get nailed down.

Planned features.

  • Recursive loading of projects. ie: /javascript, /javascript/demo1, /javascript/demo2
  • Full example themes in handlebars as well as Jade. Currently EJS and plain html are supported. EJS doent have the features needed for a full theme implementation so it will probably be removed.
  • Backend management
    • git integration, hooks.
    • Server restarts.
    • Basic metrics.