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

@schwingbat/punch

v2.3.0

Published

A CLI time tracker that syncs.

Downloads

13

Readme

Punch

Punch is a cross-platform time tracker for your terminal. You just punch in when you start working and punch out when you stop. You can also punch sync to sync your data with Amazon S3 and other backends, so your work can follow you between computers and operating systems throughout the day.

Track time on multiple projects (simultaneously even), view summaries of your time and earnings in marvelous Technicolor and generate invoices using your own custom Handlebars templates. Write custom export functions in JavaScript to get your data in any format you need it, whether you want to pop it in a spreadsheet or import into another time tracker application. Punch is a timesheet program for geeks.

Thanks to the stateless nature of Punch, nothing actually runs in the background while punched in. You can punch in on one computer and punch out on another as long as both computers sync with the same source.

Punch is personally battle tested. I've been relying on it to track and invoice projects every day for the past year.

Requirements

  • A macOS, Linux or Windows computer
  • A terminal emulator (ideally with Unicode support)

Installation

Punch is distributed as a single dependency-free binary (courtesy of zeit/pkg). Download the latest release over on the releases page, follow the install instructions and you're ready to roll!

Development To Do

  • [ ] Add comprehensive setup for fresh installs (generate directories, create skeleton config, ask for user info)
  • [ ] Implement weekly log

Configuration

TODO: Add configuration guide.

Commands

Output from punch help:


  punch v2.2.0

  a <param> is required
  a [param] is optional
  a param... groups any arguments after this point into one argument

  Run punch <command> --help with any of the following commands for more information.

  Commands:
    in <project>
      start tracking time on a project
    out [project]
      stop tracking time
    log [when...]
      show a summary of punches for a period ("last month", "this week", "two days ago", etc)
    comment <comment...>
      add a comment to remember what you worked on
    add-comment <punchID> <comment...>
      add a comment to a specific punch
    replace-comment <punchID> <commentIndex> <newComment>
      replace the text of an existing comment
    delete-comment <punchID> <commentIndex>
      delete a comment from a punch
    create <project>
      create a punch
    delete <punchID>
      delete a punch
    adjust <punchID>
      adjust punch start/end times
    invoice <project> <startDate> <endDate> <outputFile>
      automatically generate an invoice using punch data
    sync [services...]
      synchronize with any services in your config file
    config
      open config file in editor - uses EDITOR env var unless an editor flag is specified.
    purge <project>
      destroy all punches for a given project
    watch
      continue running to show automatically updated stats of your current session
    projects [names...]
      show statistics for all projects in your config file
    rename-project <from> <to>
      move all punches with project alias <from> to <to>
    adjust-rate <project> <newRate>
      adjust pay rate for punches
    import <file>
      imports punch data from a file