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

linux_reminder

v1.1.0

Published

⏰ simple crontab based reminder designed to be used in daily tasks on linux.

Downloads

14

Readme

:trumpet: Overview

Schedule daily reminders easily with a simple config file. Organize and receive alerts for important tasks efficiently.

:question: Motivation

My primary motivation for developing this tool was to ensure I don't miss my main daily tasks, such as those related to nutrition, due to being overly focused on work.

:warning: warning: The reason I opted for the at command to schedule tasks, instead of the popular crontab, was because the latter couldn't properly execute the spd-say and notify-send commands. Despite searching for about 2 hours, I didn't find a successful solution.

:dart: Features

   ✔️ type safe api methods by using zod validation;    ✔️ three ways to specify task frequency: weekday, weekend or everyday;    ✔️ option to speach the name of the task;    ✔️ option to choose the notification style between: notify-send or zenity.

:warning: Requirements

In order to use this project in your computer, you need to have the following items:

  • npm: To install the package. Npm is installed alongside nodejs;
  • nodejs: To actually run the package.
  • at: To schedule the tasks to run on specified times.
  • zenity: to show custom notifications (optional).

:bulb: Usage

First, make sure to install the at command on linux, which will be used to schedule the reminders:

sudo apt install at

Install the linux_reminder npm package:

# Install the package
npm install linux_reminder -g

Create a reminder configs file such as this (which follows this schema):

{
  "options": {
    "playTextToSpeech": true
  },
  "reminders": [
    {
      "name": "launch",
      "category": "NUTRITION",
      "time": "13:15",
      "days": "everyday"
    },
    {
      "name": "shutdown PC",
      "category": "habits",
      "time": "23:00",
      "days": "everyday"
    }
  ]
}

After that, open a terminal and paste this:

echo $(which node) $(which linux_reminder)
# /home/lucasvtiradentes/.nvm/versions/node/v18.19.0/bin/node /home/lucasvtiradentes/.nvm/versions/node/v18.19.0/bin/linux_reminder

Get the above command result and join with the -s path_of_your_config.json, in my case it would be:

/home/lucasvtiradentes/.nvm/versions/node/v18.19.0/bin/node /home/lucasvtiradentes/.nvm/versions/node/v18.19.0/bin/linux_reminder -s "/home/lucasvtiradentes/Desktop/configs.json"

# tip: make sure to specify the absolute path, do not use $USER/Desktop or ~/Desktop

Finally you can copy the above command and past it on a new instance of Ubuntu's Startup Applications.

And thats it! Now everytime your Ubuntu startup, it will setup all the current day's reminders!

Available configs options

{
  "playTextToSpeech": true,
  "useZenitAsNotifierSender": false,
  "notificationExpireSeconds": 1000
}

Notice that if you specify to use zenity, you'll need to have it installed.

Available CLI options

Usage: linux_reminder [options]

⏰ simple crontab based reminder designed to be used in daily tasks on linux.

Options:
  -V, --version       output the version number
  -s, --setup <file>  setup the reminders to run on the specified datetimes
  -r, --remove        remove all configured reminders
  -l, --list          list all configured reminders
  -h, --help          display help for command

:wrench: Development

Development setup

To setup this project in your computer, download it in this link or run the following commands:

# Clone this repository
$ git clone https://github.com/lucasvtiradentes/linux_reminder

# Go into the repository
$ cd linux_reminder

After download it, go to the project folder and run these commands:

# Install dependencies using npm
$ npm install

# Run the typescript code in development mode
$ npm run dev

If you want to contribute to the project, after you make the necessary changes, run these commands to check if everything is working fine:

# Compile the code into javascript
$ npm run build

# Run the compiled code in production mode
$ npm run start

Used technologies

This project uses the following thechnologies:

:books: About

License

This project is distributed under the terms of the MIT License Version 2.0. A complete version of the license is available in the LICENSE file in this repository. Any contribution made to this project will be licensed under the MIT License Version 2.0.