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

ssb-patchboard

v0.1.0

Published

a pluggable patchwork

Downloads

5

Readme

ssb-patchboard

Prototype of a pluggable patchwork.

Patchboard uses depject to provide a highly composable api. all scripts in the ./modules directory are loaded and combined using depject

This makes in very easy to create say, a renderer for a new message type, or switch to a different method for choosing user names.

Currently, this is a proof of concept, there is a basic way to switch between tabs, and you can view the main log, user feeds, or threads. This should obviously be improved with a module that can scroll properly scoll through a feed.

No "write" methods have been implemented yet.

overview

Currently, the main module is tabs.js which plugs into the app socket, and provides the screen_view socket. when you click a link, screen_view socket with the link path, which returns a html element which becomes a new tab.

currently, main.js feed.js and thread.js plug into screen_view and then in turn, call the message_render socket, which calls message_content avatar message_meta message_action and message_link.

avatar.js plugs into avatar, and provides the avatar_name socket. it just returns a link to the public key, labled with what it gets back from avatar_name socket. this is in turn provided by the names.js module.

Two modules plug into message_content, post.js and like.js

No plugs into the message_action socket have been implemented yet, but whatever is returned from this will inserted into the dom at the bottom of the message (by the message module) so this would be the plug to use for implementing a like/+1/fav/dig/yup button, or a reply button.

other ideas

Editable messages would probably need to plug into several sockets. firstly they would render content differently, so probably use the message_content socket. secondly they would need to show edit state, which would probably use message_meta and finially they'd need to provide the ability to edit the message! that would use message_action

Implementing a "events" message type would be easy, just implement another plug for message_content, that renders events.

Instead of reading all the modules in a directory, it would be better to load these from configuration. Then, modules could be distributed as browserify bundles, and distributed over ssb. Configuration could just be a list of hashes - but you could also disable specific sockets or plugs if necessary (leaving them unconnected).

Then, that configuration could be shared over ssb!

higher level ui

Instead of just taking the latest 100 messages, what would actually be useful is ways to efficiently view messages, open threads, etc. but if we can create a plug for rendering a stream of messages, we can provide a socket for that in a module that implements tabs, or columns, or whatever.

Running

# assuming that [email protected] is already running...
git clone https://github.com/dominictarr/patchboard.git
cd patchboard
npm install electro electron-prebuilt -g
patchwork plugins.install ssb-links # must have patchwork >=2.8
electro index.js

License

MIT