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

minivcs

v1.0.5

Published

A Lightweight Version Control System in C++ with S3 Remote Support

Downloads

497

Readme

MiniVCS 🚀

A lightweight snapshot-based distributed version control system written in modern C++. Demonstrates how real VCS tools manage staging, commit snapshots, remote syncing, and repository reconstruction.

Read Docs

npm GitHub


Prerequisites

  • Node.js
  • AWS CLI configured with valid credentials (aws configure)
  • An S3 bucket named minivcs-bucket

Installation

npm install -g minivcs

Quick Start

minivcs init           # initialize a repo
minivcs add .          # stage all files
minivcs commit "msg"   # snapshot and upload
minivcs log            # view history

Commands

minivcs init

Initializes a new repository in the current directory. Creates a .miniVCS/ folder with all internal metadata — index, commits, object store, and config.

minivcs init
# Enter username: gulshan

Run this once per project before any other command.


minivcs add <path>

Stages files for the next commit. Accepts a single file, a directory, or . for everything. Respects rules in .miniVCSignore.

minivcs add file.cpp
minivcs add src/
minivcs add .

Files are copied into .miniVCS/index/ preserving their relative paths.


minivcs commit "<message>"

Takes a snapshot of all staged files, writes metadata, uploads to AWS S3, then clears the staging area.

minivcs commit "added auth module"
# Commit: commit_20260321_010203
# Message: added auth module

Commit IDs are timestamp-based (commit_YYYYMMDD_HHMMSS), so they sort lexicographically.


minivcs checkout <commit-id>

Restores the working directory to a specific commit snapshot. Syncs from S3, wipes current files (except .miniVCS/), and reconstructs from the snapshot.

minivcs checkout commit_20260321_010203

Stage or commit any pending changes before running checkout — it will abort if the index is not empty.


minivcs log

Syncs commit history from S3 and prints a timeline of all commits with their messages.

minivcs log
# commit_20260321_010203 -> added auth module
# commit_20260320_183045 -> initial commit

minivcs status

Lists all files currently staged in the index.

minivcs status
# Staged files are:
# src/main.cpp
# README.md

minivcs clone <username>

Clones another user's remote repository from S3 into a new local folder. Automatically checks out their latest commit.

minivcs clone gulshan
# Latest commit: commit_20260321_010203
# Clone completed safely!

Repository Structure

.miniVCS/
├── index/      # staging area (files added, not yet committed)
├── commits/    # local commit snapshots
├── object/     # reserved for future use
└── config      # stores username

How it Works

MiniVCS uses a full snapshot model — no deltas, no content hashing. Each commit is a complete copy of the staged files, uploaded to a shared S3 bucket under the user's namespace (s3://minivcs-bucket/<username>/<commit-id>).

User → CLI → .miniVCS (local) → AWS S3 (remote)
  • add → copies files into .miniVCS/index/
  • commit → snapshots index → uploads to S3 → clears index
  • checkout / log → syncs from S3 → reads local commits
  • clone → downloads all commits from S3 → checks out latest

Links


Author

Built by Gulshan Kumar · MIT License