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

@floortech/vulcrumjs

v0.1.2

Published

FloorTech's own web framework, based on TypeScript!

Readme

VulcrumJS

The current version now has a CLI tool, and you can access the documentation with npx vulcrum -h

You may have used React before, and fell in love with JSX. However, the rest of React's tools (like the Virtual DOM) are not right for you. You may also want automatic SSG by default. VulcrumJS solves these problems, and more! It is designed very similar to JSX, but in vanilla JavaScript. The design also takes Next.js's idea of separate functions for metadata, and extended it. Not only that, but custom components work. Because VulcrumJS uses JavaScript functions for components that return strings, you can use a custom string, too! The components are only for ease of typing and complex, custom elements.

Examples

import cool from "./cool.js"

export function stylesheets() {
    return [
        "/css/site.css",
    ]
}

export function metadata() {
    return {
        title: "home page",
    }
}

export default function home({ p, div, }) {
    return div([
        p("Hello!", {
            class: "heading",
        }),
        div([
            p("Container paragraph!"),
            p("Second container paragraph!"),
            p([
                "Paragraph with multiple children!",
                ` <a href="https://www.example.com" parent="_blank">This is a link inside a paragraph!</a>`,
            ]),
        ]),
        cool({ p, }),
    ])
}

As you can see in the example, default components are passed through an object in the main function. If a component does not exist, you can just use a normal string, or make your own! As you can also see, a custom component named cool is being used. Below is that file you saw being imported:

export default function cool({ p, }) {
    return p("YASSSS!!!")
}

Non-primary components are more free because you don't actually have to follow VulcrumJS's standards. You only need some way to return a string. This brings up a great point: VulcrumJS's components are just functions that return a string!

Developers's Guide

Step 1 Configuring

Copy the example, and edit/create components.

Step 2 Compiling & Testing

Run the commands below to start up the program.

npx vulcrum -m build -p path-to-component.js

# Optional
npx vulcrum -m build -p path-to-component.js -t path-to-template.html

Step 3 Uploading

Upload every file/folder required to load the page onto a host. For this example, a .css file at examples/css/site.css is required. In the stylesheet configuration, the stylesheet path is set to /css/site.css (a request URL.) This means some of the files we need to upload are inside examples/. Another file the example needs is examples/home/index.html, which equates to home/ in a request URL. If you named your component index.js, it will output a file at examples/index.html instead. If you want to publically disclose the component's source code, you can upload the JavaScript files.