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

astroadmin

v0.2.0

Published

Admin interface for Astro Content Collections - auto-generates forms from your Zod schemas

Readme

AstroAdmin

Admin interface for Astro Content Collections. Auto-generates forms from your Zod schemas.

Features

  • Schema-driven forms - Auto-generates fields from src/content/config.ts
  • Block editor - Visual editing for discriminated unions (page builders)
  • Live preview - See changes in real-time via iframe
  • Image uploads - Upload and manage images with alt text
  • Git integration - Commit changes directly from the admin
  • Collection management - Create and delete entries

Requirements

Before using AstroAdmin, ensure your project has:

  • [ ] Node.js 18+
  • [ ] Astro 4.0+ with astro.config.mjs or astro.config.ts
  • [ ] Content Collections set up in src/content/config.ts
your-astro-site/
├── astro.config.mjs       ← Required
├── src/
│   └── content/
│       ├── config.ts      ← Required (collection schemas)
│       └── pages/         ← Your collections
│           └── home.md

Don't have Content Collections? See the setup guide.

Installation

npm install astroadmin

Usage

# Start admin server (from your Astro project root)
npx astroadmin dev

# With options
npx astroadmin dev --port 3030 --project ./my-astro-site

The server URL will be printed when it starts. Default credentials: admin / admin

Documentation

Astro Integration (optional)

For collections that aren't pages (e.g., testimonials, team members), AstroAdmin can preview them rendered inside their block components. Add the integration to your Astro config:

// astro.config.mjs
import { defineConfig } from 'astro/config';
import astroadmin from 'astroadmin/integration';

export default defineConfig({
  integrations: [astroadmin()],
});

This injects a /component-preview/ route during development that renders your block components with the item being edited. Without this integration, non-page collections will show a 404 in the preview iframe.

Requirements:

  • Block components in src/components/blocks/ following the naming convention {BlockType}Block.astro (e.g., TestimonialsBlock.astro)
  • Fields referencing collections should use the naming convention {collection}Ids (e.g., testimonialIds)

Configuration (optional)

Create astroadmin.config.js in your project root:

export default {
  preview: {
    url: 'http://localhost:4321', // Astro dev server
  },
  auth: {
    username: process.env.ADMIN_USER || 'admin',
    password: process.env.ADMIN_PASSWORD || 'admin',
  },
};

Troubleshooting

"Invalid Astro project" error

This means AstroAdmin couldn't find the required files:

  1. Run from project root - Where astro.config.mjs is located
  2. Set up Content Collections - Create src/content/config.ts
# Quick fix
mkdir -p src/content
touch src/content/config.ts

See Requirements for details.

Preview not loading

  1. Start your Astro dev server: npm run dev
  2. Check the preview URL in your config matches the Astro server

How it works

  1. Parses your src/content/config.ts using esbuild
  2. Converts Zod schemas to JSON Schema via zod-to-json-schema
  3. Auto-generates form fields from the schema
  4. Detects discriminated unions for block-based editing
  5. Saves changes to markdown/JSON files in src/content/

License

MIT