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

schedyx

v0.1.0

Published

Local-first timeblocking assistant for macOS

Readme

SchedyX

CI License: MIT macOS Node

Local-first timeblocking and scheduling assistant for macOS. SchedyX reads tasks (initially Apple Reminders), finds open time around meetings, and blocks time on your calendar while respecting work hours and constraints. No cloud account required. Optional AI planning can be added later.

Status: Pre-alpha v0.1.0 — core scheduling engine ready for testing.

Why SchedyX

  • Local-first: data stays on your Mac.
  • Safe by design: only touches events it created (tagged with #autoblock).
  • Deterministic core: rules engine decides; AI (optional) only suggests.
  • Mock-first: develop and test without touching real calendars.

Key Features

  • ✅ CLI commands: init, plan, apply, reconcile, check, clear
  • ✅ Smart locking (free → busy at lock window)
  • ✅ Task splitting for long tasks (>90m)
  • ✅ Diff previews for apply and safe reconciliation
  • ✅ Mock adapters for safe development
  • ✅ Comprehensive test suite

Screenshots & Demo

CLI demo output

Want a live demo? Run the mock workflow below and compare output with the screenshot.

Installation

Prerequisites

  • Node.js 18+ (recommended)
  • macOS (for real Calendar/Reminders integration)

Install

npm install
npm run build

Quick Start (Mock Mode)

  1. Create config at ~/.config/schedyx/config.yaml:
mode: mock
writesEnabled: false
workHours:
  start: "09:00"
  end: "17:00"
lockMinutes: 30
breakMinutes: 10
cooldownMinutes: 5
writeCalendar: "SchedyX Auto"
readCalendar: "SchedyX Auto"
busyCalendars:
  - "Work"
remindersList: "SchedyX Test"
fixtures:
  tasks: "data/fixtures/tasks.json"
  events: "data/fixtures/events.json"
  1. Run the planner:
npm start plan
  1. Preview apply (no writes):
npm start apply --diff
  1. Simulate reconciliation:
npm start reconcile --dry-run

Full walkthrough: docs/QUICKSTART.md

Usage Examples

Initialize real config (interactive)

npm start init

Plan (dry-run)

npm start plan
npm start plan --json

Apply blocks

npm start apply --diff
npm start apply --write

Reconcile after calendar changes

npm start reconcile --dry-run
npm start reconcile

Check recently ended blocks

npm start check
npm start check --write
npm start check --window 10

Manual: run schedyx check after a block ends to confirm completion.

Periodic: wire it into cron or launchd to poll every few minutes. Example (cron, every 5 minutes):

*/5 * * * * /usr/local/bin/node /path/to/schedyx/dist/cli/index.js check --write

Clear auto-blocks and stored state

npm start clear

How It Works (High-Level)

  1. Load tasks and calendar events
  2. Build available slots (work hours minus meetings + buffers)
  3. Schedule tasks into slots (split long tasks as needed)
  4. Apply locking (blocks become busy at lockMinutes)
  5. Write blocks only when explicitly enabled

State is stored in a local SQLite database at ~/.config/schedyx/state.db.

Troubleshooting

“Config not found”

  • Ensure ~/.config/schedyx/config.yaml exists
  • Use the exact YAML structure shown above

“Writes are disabled”

  • SchedyX is safe-by-default. Use --write or enable writesEnabled: true in config.

“Cannot find module”

  • Run npm install and npm run build

AppleScript / Permissions errors

  • Grant Calendar/Reminders access in System Settings → Privacy & Security → Automation
  • Run npm start init to regenerate config

Documentation

AI-Assisted Development

This project uses AI tools to assist with research, drafting, and code/documentation improvements. All changes are reviewed and tested by a human maintainer before merging.

License

MIT — see LICENSE.