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

@krishna117/diary

v1.0.1

Published

A polished, professional CLI diary application with rich UX and smart features

Readme

📔 Diary

A polished, professional CLI diary application built with TypeScript and Node.js. Beautiful TUI, rich features, interview-ready code.

Version License Node

✨ Features

🏠 Home Screen

  • Clean, intentional interface
  • 7 main actions (New, Open, Search, Filter, Stats, Settings, Exit)
  • Polished emoji-driven design

➕ New Entry

  • Rich entry creation with title, content, tags, and mood
  • Integrates with system editor (nano, vim, code)
  • Auto-saves with timestamp and ID

📖 Open Entry

  • List all entries sorted by date (newest first)
  • Quick preview of each entry
  • View full entry details

📄 Entry Detail View

  • Full entry display with metadata
  • Edit content, tags, or mood
  • Delete entries with confirmation

🔍 Search

  • Search by title, content, tag, or date
  • Powerful filtering capabilities
  • Returns matching entries with full details

🏷️ Filter by Tag

  • View all available tags
  • Filter entries by selected tag
  • Queryable diary system

📊 Stats

  • Total entries count
  • Most used tag
  • Most common mood
  • Longest streak
  • Last entry date

⚙️ Settings

  • Change default editor
  • Export diary (JSON/TXT)
  • Reset diary (with safety confirmations)

📦 Data Model

Each diary entry is a rich object:

{
  id: "uuid-string",
  title: "Entry Title",
  content: "Full entry text...",
  tags: ["tag1", "tag2"],
  mood: "happy",
  date: "2026-02-06",
  createdAt: "22:41",
  updatedAt: "22:41"
}

All data is persisted in ~/.diary/entries.json.

🚀 Installation

npm

npm install -g @yourusername/diary
diary

From Source

git clone https://github.com/yourusername/diary.git
cd diary
npm install
npm run build
npm start

💻 Development

Setup

npm install

Run in Development

npm run dev

Build

npm run build

Run Built App

npm start

🎯 Usage

diary

Then follow the interactive menu. All data is automatically saved.

Quick Examples

Create a new entry:

  1. Select "➕ New Entry"
  2. Enter title
  3. Add tags (optional, comma-separated)
  4. Select mood
  5. Write content in editor
  6. Save and exit

Search entries:

  1. Select "🔍 Search"
  2. Choose search type
  3. Enter query
  4. View results

View statistics:

  1. Select "📊 Stats"
  2. See mood tracking, streaks, and tags

🏗️ Architecture

src/
├── bin/
│   └── diary.ts          # CLI entry point
├── core/
│   ├── diary.ts          # Main diary logic
│   └── entry.ts          # Entry model
├── screens/
│   ├── homeScreen.ts
│   ├── newEntryScreen.ts
│   ├── openEntryScreen.ts
│   ├── entryDetailScreen.ts
│   ├── searchScreen.ts
│   ├── filterByTagScreen.ts
│   ├── statsScreen.ts
│   └── settingsScreen.ts
├── storage/
│   └── fileManager.ts    # File persistence
├── utils/
│   ├── constants.ts
│   └── helpers.ts
└── index.ts              # Library exports

🔧 Technologies

  • Runtime: Node.js (v14+)
  • Language: TypeScript
  • CLI: inquirer.js
  • Colors: chalk
  • Storage: File system JSON
  • Architecture: MVC pattern

📝 Data Persistence

  • Entries stored in ~/.diary/entries.json
  • Automatic saving on every change
  • Export to JSON/TXT formats
  • Safety confirmations for destructive actions

🎨 UI/UX Features

  • ✅ Interactive menu navigation
  • ✅ Rich emoji indicators
  • ✅ Color-coded actions
  • ✅ Clean, readable output
  • ✅ Confirmation dialogs for critical actions
  • ✅ Helpful error messages
  • ✅ Sorted and paginated lists

📊 Mood Tracking

Supported moods:

  • 😊 Happy
  • 😐 Neutral
  • 😞 Sad
  • 😡 Angry
  • 🤯 Stressed

🔐 Future Features

  • Password encryption
  • Cloud sync
  • Calendar view
  • Daily reminders
  • AI mood inference
  • Theme system
  • Plugin architecture

🤝 Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push and open a pull request

📄 License

MIT License - feel free to use this in your projects!

👤 Author

Your Name - @yourhandle

🙏 Acknowledgments

Built as a professional-grade CLI application showcasing:

  • Clean architecture
  • Rich UX/UI design
  • TypeScript best practices
  • Data persistence
  • User-respecting interface

Made with ❤️ as a demonstration of professional CLI application design.