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

@planvokter/riotplan-core

v1.1.4

Published

Core domain services for RiotPlan

Readme

@planvokter/riotplan-core

Core domain services for RiotPlan plan lifecycle management.

This package owns the domain logic that operates on plans independent of any transport layer (HTTP, CLI, etc.). It defines the contracts other packages program against and provides the default implementations backed by @planvokter/riotplan-format (SQLite).

What lives here

Contracts (src/contracts/)

TypeScript interfaces that define how the rest of the system interacts with plan data. Nothing in this layer depends on SQLite, HTTP, or any framework.

  • PlanStore -- read/write interface for plan metadata, files, steps, and timeline events.
  • PlanLifecycleService -- stage transitions (idea -> shaping -> built -> executing -> done).
  • PlanStepService -- start, complete, add, move, remove steps.
  • PlanStatusService -- read and regenerate plan status summaries.
  • PlanShapingService -- manage approaches and approach selection.

Services (src/services/)

Stateless functions that implement domain operations. Each service works against the contracts above or directly against @planvokter/riotplan for directory-based plan operations that haven't been abstracted yet.

  • lifecycle -- SQLite stage transitions with timeline logging.
  • steps -- directory-based step start/complete/add/remove/move with STATUS.md regeneration.
  • status -- read a status snapshot from a SQLite plan.
  • idea -- append bullets to IDEA.md sections inside a SQLite plan.
  • build -- resolve project root for plan generation context.

Adapters (src/adapters/)

  • SqlitePlanStore -- implements PlanStore using @planvokter/riotplan-format's SQLite provider.

Composition (src/composition.ts)

resolveCoreServices() returns a bag of all service instances, acting as the dependency-injection root for consumers.

Dependencies

| Package | Role | |---|---| | @planvokter/riotplan | Types (PlanStep, TaskStatus, etc.) and directory-based plan operations (loadPlan, generateStatus, step mutations) | | @planvokter/riotplan-format | SQLite provider (createSqliteProvider) |

Status

Extraction in progress. The code here is real and tested through the riotplan test suite (which still contains the identical source under src/core/). Standalone build, tests, and npm publishing are not yet configured.