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

starbucket

v1.1.1

Published

Quickly create a dynamic, distributed and auto-syncing git server in a local network.

Downloads

8

Readme

Starbucket Build Status

Quickly create a dynamic, distributed and auto-syncing git server in a local network.

Reasoning

Starbucket was created to reintroduce “distributed” aspect of the GIT source control system. With centralised codebases at Github, Bitbucket or any other custom configuration, it happens too often, that due to a platform unavailability, teams can't make ANY progress.

See a blogpost: http://www.jakubniewczas.pl/#/blog/starbucket-reintroduce-distributed-aspect-of-git

Installation

npm install -g starbucket

Usage

To start a starbucket node on your computer type:

starbucket

and then point your git remote to localhost. For example:

git remote add starbucket http://localhost:7070/awesome-project

Notice that we comunicate ONLY with a server on a localhost.

You can provide custom ports for both network (default: 7070) and git server (default: 7000), as well as temp Starbucket folder with repositories (default: .tmp/repos)

GIT_SERVER_PORT=9999 GATEWAY_PORT=8888 STORAGE_PATH=/tmp/starbucket/ starbucket

Session Example:

$ starbucket


|
| Starting Starbucket...
| Configure your git remote as (we assume the repo name is "awesome-project"):
|   git remote add starbucket http://localhost:7070/awesome-project
|


[2017-01-15T14:12:23.187Z]  git - git server started at http://localhost:7000
[2017-01-15T14:12:23.670Z]  net - new node discovered: 172.20.10.4
[2017-01-15T14:12:23.671Z]  net - other node is a MASTER: 172.20.10.4
[2017-01-15T14:12:23.672Z] prxy - starting proxy server, entry address: http://localhost:7070 (pointing at: http://172.20.10.4:9999)
[2017-01-15T14:17:44.405Z]  net - update available for: awesome-project
[2017-01-15T14:17:44.500Z]  git - mirroring http://172.20.10.4:9999/awesome-project -> .tmp/repos/awesome-project.git/

Technical Details

After a few tries I ended up with a following architecture:

Each node starts 3 services:

  • Network Discovery - discovers nodes in a network and setups simple event-based communication.

  • Git server - a local git server. If a node is a master, it will inform the Network about any new changes, so other nodes can pull from this server. If a node is a slave, it will fetch to this server from currently chosen master server based on Network events.

  • Proxy server - proxy server will proxy all traffic from localhost to currently chosen master. If a node is a master, proxy will proxy traffic back to same machine. Proxy will reconfigure itself automatically when a new master is announced.

In short we keep a master-slaves network architecture but with an ability to reconfigure node roles at any given time.

Tests

npm run spec

License

MIT