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

eddram

v0.1.2

Published

Constructor visual de esquemas y diagramas ASCII. Instala el paquete y ejecuta `eddram` para abrirlo en tu navegador.

Readme

EDDRAM

Constructor visual de esquemas y diagramas ASCII: dibuja cajas, flechas, árboles de directorios, tablas y separadores sobre una rejilla monoespaciada y copia el resultado listo para pegar en Markdown, READMEs, documentación técnica, comentarios de código o prompts de IA.

┌──────────┐      ╭───────────╮      ╔════════════╗
│  Cajas   │─────▶│ Conectores│─────▶║  Markdown  ║
└──────────┘      ╰───────────╯      ╚════════════╝

Stack

TypeScript · Bun · Elysia · Drizzle (bun:sqlite) · Vite 8 · React 19 · Tailwind 4 · react-router · TanStack Query · Axios · satteri · react-call · shadcn/ui

Estructura

eddram/
├── apps/
│   ├── server/          # API Elysia + Drizzle + SQLite
│   │   ├── drizzle/     # migraciones generadas por drizzle-kit
│   │   └── src/
│   │       ├── db/      # schema, conexión, migrate, seed
│   │       └── routes/  # /api/schemas, /api/templates
│   └── web/             # SPA React
│       └── src/
│           ├── api/     # axios + funciones tipadas por recurso
│           ├── hooks/   # TanStack Query (queries/mutations optimistas)
│           ├── editor/  # lienzo, paleta, inspector, autoguardado, undo/redo
│           └── pages/   # /, /schemas, /editor/:id?, /templates
├── packages/
│   ├── shared/          # tipos compartidos + motor ASCII (puro, con tests)
│   └── ui/              # componentes shadcn/ui
└── turbo.json

Uso como CLI

EDDRAM se publica como paquete de npm bajo licencia MIT. Instálalo de forma global y ejecuta eddram desde cualquier terminal: arranca el servidor y abre la aplicación en tu navegador por defecto.

bun add -g @edgarlopezcalomarde/eddram
eddram

También puede ejecutarse sin instalar con bunx @edgarlopezcalomarde/eddram.

Opciones: eddram --port 4000 (puerto distinto) y eddram --no-open (no abrir el navegador). Los esquemas se guardan en ~/.eddram/eddram.db.

Publicar una nueva versión (mantenedores)

bun run --cwd apps/server release:build   # build del web + bundle del cli + assets en apps/server/dist
cd apps/server/dist
bun publish --access public

release:build bundlea el servidor y sus dependencias (incluido @workspace/shared) en un único dist/cli.js con bun build --target bun, así que el paquete publicado no depende de los workspaces del monorepo.

Puesta en marcha

Requiere Bun ≥ 1.2.

bun install

# base de datos (se crea en apps/server/data/eddram.db)
bun run db:migrate   # aplica migraciones
bun run db:seed      # carga las plantillas

# desarrollo: server (http://localhost:3000) + web (http://localhost:5173)
bun run dev

El cliente de Vite proxya /api hacia el servidor, así que basta con abrir http://localhost:5173. Las migraciones y el seed también se ejecutan automáticamente al arrancar el servidor (son idempotentes).

Otros comandos

bun run test        # tests del motor ASCII (bun test)
bun run typecheck   # tsc en todos los workspaces
bun run lint        # eslint
bun run db:generate # regenerar migraciones tras cambiar el schema de Drizzle

Producción

bun run build                                  # build del frontend
cd apps/server && NODE_ENV=production bun run start

En producción Elysia sirve el build estático de apps/web/dist (con fallback SPA) además de la API en el mismo puerto.

Notas de diseño

  • Motor ASCII (packages/shared/src/ascii-engine/): módulo puro y testeable, separado por completo de React. Pinta cada elemento en una matriz de caracteres respetando el orden z; las intersecciones de líneas se resuelven mediante máscaras de conectividad (, , …) y el output recorta espacios a la derecha y filas vacías finales. El servidor reutiliza el mismo motor para renderizar las previews de las plantillas.
  • Charsets: cada esquema se guarda como lista de elementos, no como texto, por lo que alternar entre ASCII puro (+-|) y Unicode box-drawing (┌─┐) es una conversión sin pérdida.
  • Autoguardado: debounce de ~2 s sobre un contador de versión del reducer; los updates usan mutations de TanStack Query con actualización optimista de caché (onMutate) y rollback en caso de error.
  • Undo/redo: pilas de snapshots en el reducer del editor; los gestos de arrastre y las sesiones de escritura colapsan en un único paso de deshacer (Ctrl+Z / Ctrl+Shift+Z).
  • Dependencia WASM: la preview de Markdown usa el build WASM de satteri (@bruits/satteri-wasm32-wasi), instalado vía tarball porque el paquete declara cpu: none y bun lo omitiría en una instalación normal.