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

rosemary-js

v1.1.1

Published

A knowledge management tool for organizing and connecting notes.

Downloads

264

Readme

Rosemary.js 🌿

Rosemary.js is a flexible and powerful knowledge management library that serves as a canvas for your ideas and data. It provides a foundation for organizing, connecting, and analyzing information in ways that are meaningful to you.

🚨 Important Notice

Version 1.0.0 is now deprecated due to critical bugs. Please upgrade to version 1.1.0 (Tuscan Blue) for a more stable and reliable experience.

🚀 What's New in 1.1.0

  • 🛠️ Improved flexibility and robustness in core functionality
  • 🐛 Fixed critical bugs in data management and leaf connections
  • 🛡️ Enhanced error handling and edge case management
  • 🧪 Expanded test suite for increased reliability

🎨 Your Data, Your Way

Rosemary.js doesn't dictate how you should organize your information. Instead, it offers a set of tools that you can use to create your own unique knowledge management system. Whether you're organizing research notes, analyzing stock market data, or connecting seemingly unrelated ideas, Rosemary.js adapts to your needs.

I'm excited to see the creative ways you'll use Rosemary.js! Every dataset, every collection of ideas, and every problem space is unique. Rosemary.js is designed to be flexible enough to handle this diversity while providing powerful tools for connection and analysis.

🌱 Growing Together

I believe that the true potential of Rosemary.js will be realized through the creativity of its users. I encourage you to experiment, to push the boundaries of what's possible, and to share your experiences with the community.

  • Have you found an innovative way to use Rosemary.js?
  • Did you create a unique visualization of your data?
  • Have you integrated Rosemary.js into a larger system in an interesting way?

I'd love to hear about it! Your experiences and use cases can inspire others and help shape the future development of Rosemary.js.

🚀 Getting Started

Installation

npm install rosemary-js

Quick Start

const Rosemary = require('rosemary-js');

const brain = new Rosemary();

// Add a new leaf
const leafId = brain.addLeaf('Rosemary.js is amazing!', ['technology', 'productivity']);

// Get leaf content
console.log(brain.getLeafById(leafId).content);

Features

  • Organic Knowledge Structure: Create a flexible, interconnected web of information.
  • Effortless Input: Capture thoughts and ideas quickly and easily.
  • Rich Connections: Link related concepts across different domains.
  • Smart Tagging System: Organize information with multi-dimensional tagging.
  • Powerful Search: Find information quickly with content-based and fuzzy search.
  • Import/Export: Seamlessly import and export your knowledge base in JSON and CSV formats.
  • Flexible Sorting: Sort leaves by creation date, last modified date, tag count, or connection count.
  • Related Content Discovery: Find related leaves based on connections or similar tags.
  • CLI Interface: Interact with your knowledge base directly from the command line.

Basic Usage Examples

Here are some examples to help you get started with Rosemary.js:

Adding and Retrieving Leaves

const brain = new Rosemary();

// Add leaves
const leaf1Id = brain.addLeaf('JavaScript is versatile', ['programming', 'web']);
const leaf2Id = brain.addLeaf('Python is great for data science', ['programming', 'data']);

// Retrieve leaves
const leaf1 = brain.getLeafById(leaf1Id);
console.log(leaf1.content); // Output: JavaScript is versatile

// Get all leaves
const allLeaves = brain.getAllLeaves();
console.log(allLeaves.length); // Output: 2

Working with Tags

// Get all tags
const allTags = brain.getAllTags();
console.log(allTags); // Output: ['programming', 'web', 'data']

// Find leaves by tag
const programmingLeaves = brain.getLeavesByTag('programming');
console.log(programmingLeaves.length); // Output: 2

// Add a tag to an existing leaf
brain.tagLeaf(leaf1Id, 'frontend');

Connecting Leaves

// Connect two leaves
brain.connectLeaves(leaf1Id, leaf2Id, 'related programming languages');

// Get connected leaves
const connectedLeaves = brain.getConnectedLeaves(leaf1Id);
console.log(connectedLeaves.length); // Output: 1

Searching

// Search by content
const results = brain.getLeavesByContent('data');
console.log(results.length); // Output: 1

// Advanced search (if implemented)
const advancedResults = brain.search('JavaScript OR Python', ['programming']);
console.log(advancedResults.length); // Output: 2

CLI Usage

Rosemary.js comes with a powerful CLI for interacting with your knowledge base. To use the CLI:

npm install -g rosemary-js

Then you can use the following commands:

# Add a new leaf
rosemary add

# Print a report of all leaves
rosemary report

# Search leaves by content
rosemary search <query>

# Connect two leaves
rosemary connect <id1> <id2> [-r <relationship>]

# Get related leaves
rosemary related <id> [-d <distance>]

# Delete a leaf
rosemary delete <id>

# Clear all data
rosemary clear

# Start the Creative Writing Wizard
rosemary creative-wizard

# Export data
rosemary export [-f <format>] [-o <output-file>]

# Import data
rosemary import <input-file>

# Specify data file location (can be used with any command)
rosemary <command> -d <data-file-path>

The CLI now supports specifying a custom data file location with the -d option, allowing you to manage multiple knowledge bases.

The Creative Writing Wizard provides an interactive interface for:

  • Adding new ideas
  • Viewing all ideas
  • Connecting similar ideas
  • Viewing most connected ideas
  • Generating random idea chains
  • Searching ideas

For more detailed information on each command, use:

rosemary help <command>

Upcoming Features

I will be constantly working to improve Rosemary.js. Here are some features I am excited about:

  • Visualization Module: Generate mind maps and network graphs of your knowledge base.
  • Leaf Templates: Create and use templates for common types of information.
  • Periodic Review System: Implement spaced repetition for effective knowledge reinforcement.
  • Plugin System: Extend Rosemary.js functionality with a lightweight plugin architecture.

Have an idea for a feature? I'd love to hear it! Feel free to open an issue or contribute to the development.

Get Involved

Join the Rosemary.js community! Here's how you can get involved:

  • Star the repo: Show your support and stay updated with GitHub stars.
  • Contribute: Check out our Contributing Guide to get started.
  • Spread the word: Tell your friends and colleagues about Rosemary.js.
  • Share your experience: I'd love to hear how you're using Rosemary.js. Share your stories on GitHub Discussions or social media.

Version Naming Convention

Rosemary.js versions are named after aromatic herbs and spices, reflecting the library's goal of cultivating a rich and flavorful knowledge base. Each major version will be named after a new herb or spice, with minor versions using variations or subspecies.

Current Version: Rosemary Tuscan Blue (1.1.0)

Contributing

I welcome contributions! Please see our Contributing Guide for more details.

License

Rosemary.js is MIT licensed.

About the Author

Rosemary.js is maintained by me, Luisfer Romero Calero, a creative software developer. I created this library from Sevilla, Spain, and Bangkok, Thailand. I had the idea in 2016 and now I am implementing it.

🔍 Open to New Opportunities: I'm currently exploring new challenges in software development. Please reach out if you want to work together, or just to chat about software development!


Cultivate your knowledge. Let your ideas flourish. Grow your digital second brain with Rosemary.js. 🧠🌿