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

@wayofmono/wo-cto-dashboard

v0.6.3

Published

CTO Dashboard & Developer Portal for Way-Of projects

Readme

WayOfDev CTO Dashboard

Production CTO Dashboard & Developer Portal for Way-Of projects (WayOfMono, WayOfWork, OptiCat)

🚀 Quick Start

One-liner (no clone, no install)

npx @wayofmono/wo-cto-dashboard

Global install (use wodev anywhere)

# Option A: local prefix (recommended — no sudo, everything works)
npm config set prefix ~/.npm-global
echo 'export PATH="$PATH:~/.npm-global/bin"' >> ~/.bashrc
source ~/.bashrc
npm install -g @wayofmono/wo-cto-dashboard
wodev                      # production server (default)

# Option B: sudo global install
sudo npm install -g @wayofmono/wo-cto-dashboard
sudo wodev --build         # one-time build (needs root for .next/)
wodev                      # production server (read-only, works as user)

# Option C: development mode (hot reload)
wodev --dev

From source (clone)

git clone https://github.com/Way-Of/wayofdev.git
cd wayofdev
pnpm install
pnpm dev

CLI Reference

| Command | Mode | Description | |---------|------|-------------| | wodev | production | Starts production server (read-only, requires build) | | wodev --dev | development | Starts dev server with hot reload (writes .next/) | | wodev --build | build | Builds for production (writes .next/) | | wodev --update | — | Updates to latest npm version | | wodev --setup | — | Configure GitHub OAuth (per-user, one-time) | | wodev --uninstall | — | Remove dashboard globally | | wodev --version | — | Prints version | | wodev --help | — | Shows help |

Port: http://localhost:6969 (override with PORT=8080 wodev)

📋 Features

| View | Description | |------|-------------| | Overview | Ticket stats, velocity, blockers | | Tickets | Kanban with filters, review queue, GitHub/Local source switch + branch selector | | Standup | Daily async check-ins (yesterday/today/blockers) | | Skills | Real-time skill health across all machines | | Ideas | Prioritized idea board with voting | | Developers | Workflow and assignment tracking | | Docs | Architecture docs and decision records |

🔐 GitHub Authentication

Optional — the dashboard works with pincode login alone. GitHub login is only needed for authenticated API calls (private repo ticket fetching, 5000 req/hr vs 60).

Pre-Configured (Zero Setup)

The npm package ships with the Way-Of org's shared OAuth App pre-embedded. Just run wodev and click "Sign in with GitHub" — no setup required.

npm install -g @wayofmono/wo-cto-dashboard
wodev
# Open http://localhost:6969 → click "Sign in with GitHub"

Custom OAuth (For Other Orgs)

If you're using the dashboard for your own organization, run wodev --setup to configure your own OAuth App:

wodev --setup
# Creates OAuth at https://github.com/settings/developers
# Callback: http://localhost:6969/api/auth/callback/github
# Enter your Client ID + Secret
sudo wodev --build
wodev

Credentials are saved to ~/.config/wodev/.env and auto-loaded (overrides embedded defaults).

How Developer Mapping Works

When you sign in with GitHub, the dashboard looks up your GitHub username in the team's developer list (thoughts/ repo). If your GitHub username matches a registered developer, you're recognized with your role and permissions.

Without GitHub Auth

Use the pincode login with your GitHub username + team pincode. All features work normally; only the "GitHub source" ticket switcher requires OAuth.

📦 Data Source

Tickets loaded from f-rr-d (förråd) GitHub repo: https://github.com/Way-Of/f-rr-d

  • Projects: WayOfMono (WOMONO), WayOfWork (WOW), OptiCat (OPT)
  • Source switch: Local filesystem ↔ GitHub (main/develop/staging branches)
  • Fallback: Auto-falls back to local if GitHub unavailable

🛠️ Commands

pnpm dev          # Start dev server (port 6969)
pnpm build        # Production build
pnpm start        # Run production build
pnpm lint         # Run ESLint
pnpm db:push      # Push Prisma schema to SQLite

🖥️ Electron App

pnpm electron:dev    # Dev with Electron wrapper
pnpm electron:build  # Build distributable
pnpm electron:dist   # Build + package (no publish)

📁 Project Structure

wayofdev/
├── src/
│   ├── app/              # Next.js 16 App Router
│   │   ├── api/          # API routes (tickets, developers, docs, auth)
│   │   └── page.tsx      # Login page
│   ├── components/
│   │   ├── dashboard/    # Dashboard views
│   │   └── ui/           # Radix UI components
│   ├── lib/
│   │   ├── auth.ts       # NextAuth.js GitHub provider
│   │   ├── thoughts.ts   # f-rr-d data fetching (GitHub API)
│   │   └── types.ts      # TypeScript types
│   └── store/
│       └── dashboard-store.ts  # Zustand state
├── prisma/
│   └── schema.prisma     # SQLite schema
├── electron/             # Electron main/preload
├── public/               # Static assets
└── .github/workflows/    # CI/CD

🔧 Tech Stack

  • Framework: Next.js 16 (App Router, Turbopack)
  • Auth: NextAuth.js (GitHub OAuth)
  • Database: Prisma + SQLite (dev), PostgreSQL (prod)
  • State: Zustand
  • UI: Radix UI + Tailwind CSS
  • Icons: Lucide React
  • Desktop: Electron 30

🌐 Deployment

Vercel (Recommended)

vercel --prod

Add env vars in Vercel dashboard.

Docker

docker build -t wayofdev .
docker run -p 6969:6969 --env-file .env wayofdev

Electron Auto-Updates

Built with electron-builder, publishes to GitHub Releases on wayofdev repo.

📊 API Endpoints

| Method | Endpoint | Description | |--------|----------|-------------| | GET | /api/health | Health check | | GET | /api | Dashboard data (tickets, devs, docs) | | GET | /api?type=tickets&source=github&branch=main | Tickets from GitHub | | GET | /api?type=developers&source=github | Developers from GitHub | | GET | /api?type=docs | Documentation | | POST | /api/ideas | Create idea | | POST | /api/standup | Create standup entry | | POST | /api/news | Create news item | | GET | /api/skills/report | Skills health |

📝 Environment Variables

| Variable | Required | Description | |----------|----------|-------------| | GITHUB_CLIENT_ID | No* | GitHub OAuth App Client ID (set via wodev --setup) | | GITHUB_CLIENT_SECRET | No* | GitHub OAuth App Secret (set via wodev --setup) | | NEXTAUTH_SECRET | No | Auto-generated as random hex | | NEXTAUTH_URL | No | Auto-set to http://localhost:{PORT} | | DATABASE_URL | No | SQLite: file:./dev.db |

*Only needed for private GitHub repo access

🤝 Contributing

  1. Fork the repo
  2. Create feature branch
  3. Make changes
  4. Run pnpm lint and pnpm build
  5. Open PR

📄 License

MIT © Way-Of