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

@robarkesteijn/nexus

v0.1.0

Published

A Nuxt layer providing a CMS system with page management, templates, media handling, and authentication

Readme

CMS Layer for Nuxt

A Nuxt layer providing a complete, self-hosted CMS system with authentication, user management, and content editing features. Designed to be extended by other Nuxt applications through the Nuxt layers system.

npm version License: MIT

Installation

npm install @robarkesteijn/nexus
# or
pnpm add @robarkesteijn/nexus
# or
yarn add @robarkesteijn/nexus

Quick Start

In your Nuxt project's nuxt.config.ts:

export default defineNuxtConfig({
  extends: ['@robarkesteijn/nexus'],
})

That's it! The CMS layer will automatically provide:

  • Admin dashboard at /admin
  • Authentication system
  • User management
  • Content management (pages, templates)
  • Media management
  • All necessary API routes and components

Core Features

  • Authentication & Sessions

    • Login/logout system with secure password hashing (bcryptjs)
    • Session management via cookies
    • Middleware to protect /admin routes
  • User Management

    • Admin dashboard for managing users
    • Add, edit, and delete users through a UI
    • Role-based permissions (admin, editor, viewer)
    • Passwords are always stored securely and never exposed
  • Content Management

    • ✅ Full CRUD for posts/pages stored in SQLite
    • Post status management (draft, published, archived)
    • Slug-based URLs and SEO-friendly structure
    • Extensible design for handling additional content types
  • Media Management

    • 🔶 Basic upload infrastructure in place
    • Local file storage in Docker volume
    • Designed to work without third-party storage providers
  • Persistence

    • Uses SQLite (better-sqlite3) for simplicity and portability
    • Database and uploaded files stored in a mounted .data volume (survives redeploys)
    • Optionally containerized with Docker for both development and production
  • UI

    • Built with Nuxt UI 4.x for modern, accessible components
    • Custom theme with spring-green primary colors
    • Uses modals, forms, data tables, and toasts for a clean admin interface

Philosophy

  • Keep it lightweight and self-contained
  • Minimize reliance on external SaaS (can be hosted anywhere)
  • Easy to extend via Nuxt layers so each new site reuses the CMS core

Requirements

  • Node.js: >=24.0.0 <25.0.0
  • pnpm: >=10.0.0 <11.0.0 (or npm/yarn)
  • Nuxt: ^4.0.0

Links


🛠️ Development

This section is for developing the layer itself. If you just want to use the layer, see Installation above.

The project includes a .playground directory for testing the layer during development.

Local Development (without Docker)

# Install dependencies
pnpm install

# Run development server
pnpm dev

# Build for production
pnpm build

# Preview production build
pnpm preview

Docker Development

This project uses Docker with separate configs for production and development.

📦 Requirements

🔹 Running in Development (Hot Reload)

Run the Nuxt dev server inside Docker:

make dev

Stop with:

make down

🔹 Running in Production Mode

Builds and serves the optimized Nuxt app:

make prod

Stop with:

make down

🔹 Rebuilding Containers

Rebuild production:

make rebuild

Rebuild development:

make rebuild-dev

🔹 Volumes

cms-data → persisted at /srv/cms-data inside the container

To remove everything (including volumes):

make clean

🔹 First Time Setup

When starting the application for the first time (or after removing volumes), a default admin user will be automatically created:

  • Email: [email protected] (or set DEFAULT_ADMIN_EMAIL environment variable)
  • Password: admin123 (or set DEFAULT_ADMIN_PASSWORD environment variable)
  • Role: Admin

⚠️ Important: Change the default password after first login for security!

Environment Variables

You can customize the default admin user by setting these environment variables:

[email protected]
DEFAULT_ADMIN_PASSWORD=your-secure-password

🔹 Enter Dev Container Shell

make shell

Opens an interactive shell inside the running dev container. Useful for running commands like:

pnpm add <package>       # Install new dependencies
pnpm update              # Update packages
ls node_modules          # Inspect installed dependencies

Publishing

This package is automatically published to npm when a GitHub release is created. See the GitHub Actions workflow for details.

To publish manually:

npm publish --access public

License

MIT