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

@filo-cms/cms

v0.3.2

Published

Filo CMS — self-hosted headless/hybrid CMS as a Nuxt layer. Add `extends: ["@filo-cms/cms"]` to your nuxt.config to get the full admin panel and API.

Readme

@filo-cms/cms

Filo CMS — a self-hosted headless/hybrid CMS shipped as a Nuxt layer. One dependency gives your project the full admin panel (/admin), a REST delivery API (/api/v1), authentication with RBAC and API keys, media library, content modeling, live preview and a plugin system.

Built on Nuxt 4, Nitro, PostgreSQL and Drizzle ORM.

Quick start (recommended)

npm create filo-cms@latest my-app
cd my-app
docker compose up -d   # if you chose the generated Postgres
npm run dev

On first boot the CMS runs migrations and seeds the database automatically, then creates the admin account from ADMIN_EMAIL / ADMIN_PASSWORD in .env. Log in at http://localhost:3000/admin.

Manual install

npm install @filo-cms/cms nuxt
// nuxt.config.ts
export default defineNuxtConfig({
  compatibilityDate: "2025-07-01",
  extends: ["@filo-cms/cms"],
});

Required environment variables:

| Variable | Purpose | |---|---| | DATABASE_URL | file: (SQLite), libsql:// (Turso) or postgres:// (PostgreSQL) | | NUXT_SESSION_PASSWORD | seals session cookies (min. 32 chars) | | NUXT_ENCRYPTION_KEY | encrypts OAuth secrets at rest (32-byte hex) | | NUXT_PUBLIC_APP_URL | public URL of the instance | | ADMIN_EMAIL / ADMIN_PASSWORD | first admin account, ensured on boot |

Optional tuning: NUXT_FILO_AUTO_MIGRATE, NUXT_FILO_AUTO_SEED, NUXT_FILO_CORS_ORIGINS, NUXT_FILO_PUBLIC_RATE_LIMIT, NUXT_FILO_AUTH_RATE_LIMIT, UPLOADS_DIR, NUXT_FILO_CONTENT_TYPE_BUILDER (content-type builder is dev-only by default, Strapi-style).

What you get

  • Admin panel at /admin: content types built in the UI (text, richtext, media, relations, components, dynamic zones), draft → review → publish workflow, scheduling, revisions, media library, users/roles/permissions, API keys, webhooks, audit log, import/export
  • REST delivery API: GET /api/v1 is a machine-readable index of every endpoint on your instance; entries support Strapi-style querying — ?filter[price][gte]=100&sort=publishedAt:desc&search=nuxt
  • Auth: email+password sessions, OAuth/OIDC configured from the panel, scoped filo_... API keys, granular RBAC
  • Live preview: point a content type at a preview route on your site (Settings → Live preview) and the entry editor streams drafts into it as you type — see @filo-cms/sdk

Extend it like Strapi

Your project's server/ directory merges with the CMS. Filo's utilities are auto-imported:

// server/api/my-endpoint.get.ts
export default defineEventHandler(async (event) => {
  await requirePermission(event, "content_entries.view"); // sessions AND API keys
  const db = useDb(); // Drizzle client
  return { ok: true };
});

server/middleware/* runs on every request. Files in your app/ directory override the layer's UI (e.g. your own app/pages/login.vue). Custom permissions, content types and admin pages are registered with @filo-cms/plugin-kit.

CLI

npx filo migrate                                        # apply DB migrations
npx filo seed                                           # seed core data
npx filo create-admin --email [email protected] --password secret

Ecosystem

| Package | Purpose | |---|---| | create-filo-cms | one-command project scaffolder | | @filo-cms/sdk | typed API client + live preview for consuming sites | | @filo-cms/plugin-kit | author CMS plugins as Nuxt modules | | @filo-cms/db | Drizzle schema, migrations, seed | | @filo-cms/types | shared TypeScript contracts |

Links