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

acaraje

v1.0.0

Published

A CLI that scaffolds a full **Next.js admin panel** from a database schema you already have — point it at a `schema.prisma` (or a raw `schema.sql`) and it generates CRUD screens, a schema and relations viewer, a fake-data seeder, a file storage browser, a

Readme

Acaraje

A CLI that scaffolds a full Next.js admin panel from a database schema you already have — point it at a schema.prisma (or a raw schema.sql) and it generates CRUD screens, a schema and relations viewer, a fake-data seeder, a file storage browser, and env-based auth, wired end to end and ready to run.

[!IMPORTANT] Read Warnings and Considerations before generating the admin panel.

Introduction

Most admin panels start the same way: you have a database, and you need CRUD screens, basic auth, and a way to browse/upload files — none of which is interesting to write by hand for every new project. Acaraje reads your existing schema and generates that panel for you as real, readable source code (not a black-box runtime), using ts-poet template generators under the hood.

Two schema sources are supported:

  • Prisma — point it at your schema.prisma; the datasource provider (postgresql, mysql, or sqlite) is read straight from the file.
  • Pure SQL — point it at a raw schema.sql for PostgreSQL, MySQL, or SQLite; routes are generated against Kysely instead of Prisma.

The generated app comes with:

  • A dashboard summarizing your schema (model/field/relation counts, field-type distribution).
  • CRUD — a searchable, filterable, sortable table per model, plus create/edit forms with per-field-type inputs (relations render as a searchable picker, enums as a select, etc.).
  • A schema viewer (models, fields, enums) and a relations view grouping every one-to-one / one-to-many / many-to-one / many-to-many relation by model.
  • A seeder panel to generate fake data per model via @faker-js/faker, with per-field rules.
  • A drive page to browse/upload/delete files against MinIO or Google Cloud Storage.
  • Single-account auth (env-configured username/password, signed session cookie) — no user table, no external auth provider.

Warnings and Considerations

Acaraje generates a starting point, not a finished product. What comes out of create-acaraje is an editable source code meant to be a one-click tool for database manipulation in local development, and later to be adapted to your project's needs — not something to publish as-is.

A few specific things worth knowing:

  • Auth is env-based on purpose, and it's minimal. There's no user table and no external auth provider — a single admin account, configured entirely through ACARAJE_ADMIN_USERNAME / ACARAJE_ADMIN_PASSWORD / ACARAJE_AUTH_SECRET in .env. That was a deliberate choice: it keeps you in full control of your own database and credentials instead of wiring a third-party identity provider into your schema for you. We strongly recommend replacing the current method of saving credentials with proper auth before any real use before exposing the panel to anyone but yourself.
  • Default/local credentials everywhere else, too. The generated docker-compose.yml uses fixed, well-known credentials and ports for Postgres/MySQL/MinIO — fine for a local dev loop, not for anything shared or reachable outside your machine.
  • No authorization model beyond "logged in or not." The CRUD, drive, and seeder routes trust any authenticated session completely. If your real project needs per-model permissions, field- level restrictions, audit logging, or soft deletes, that's on you to add — it isn't generated.

In short: use Acaraje to skip the boring part of standing up an admin panel, then treat the result as your own codebase to secure and extend, not a managed product.

Quickstart

Prerequisites

  • Node.js 18.18+ and npm
  • A project directory that already has your schema in place:
    • Prisma mode: <project>/prisma/schema.prisma
    • Pure SQL mode: <project>/database/schema.sql
  • Docker (optional — only needed if you want the generated docker-compose.yml for a local development environment)

Install the CLI

In your directory that has your schemas in place run:

npx acaraje init

You'll be asked:

| Prompt | What it controls | Default | | --- | --- | --- | | Panel name | Route segment the admin UI is mounted under (app/<name>/...) | Acaraje | | ORM | prisma or pure-sql (Kysely) | — | | Database provider (pure-sql only) | postgresql, mysql, or sqlite | — | | Schema location | Folder holding schema.prisma / schema.sql | /prisma or /database | | Storage | minio or gcs | — | | Use Docker locally? | Whether to also write docker-compose.yml | — | | Username / Password | Admin login for the generated panel | admin / password |

Acaraje then generates the app in place, runs npm install for you and, in Prisma mode, prisma generate

Note: Username and Password are stored in the generated .env file rather than in the database, so they don't require fields that may be unnecessary for your database schema.

Run it

docker compose up -d # If you opted to use docker for development
npm run dev

Visit http://localhost:3000/login and log in with the username/password you chose.

Dashboard Technologies

The generated admin panel is a standalone app — none of this is a dependency of the CLI itself:

| Layer | Technology | | --- | --- | | Framework | Next.js 15 (App Router), React 19, TypeScript | | Styling | Tailwind CSS, Radix UI primitives, class-variance-authority, lucide-react icons | | Data fetching | TanStack Query | | Tables & forms | TanStack Table, TanStack Form | | Validation | Zod | | ORM / DB access | Prisma or Kysely (raw SQL), depending on the ORM you chose | | File storage | MinIO (S3-compatible) or Google Cloud Storage | | Fake data | @faker-js/faker | | Auth | Signed session cookie, env-configured single admin account | | Notifications | Sonner | | Testing | Vitest |

The CLI itself is a small Node/TypeScript tool built on commander (argument parsing), @clack/prompts (interactive prompts), ts-poet (typed code generation), and zod (prompt-answer validation), bundled with tsup.

Environment Variables

See .env.example at the repo root — most of those variables belong to the generated project (copy them into its own .env, which create-acaraje also generates for you pre-filled with the credentials and storage settings you chose).