droppjs
v0.1.13
Published
Advanced all-in-one media library for Node.js (core, adapters, storage, transformers, CLI)
Readme
Dropp
Dropp is a media management toolkit for Node.js and TypeScript.
Think of it as your media team in a box: upload files, transform them, store them anywhere, and keep metadata tidy without building a mini startup just to handle image uploads.
Supported upload categories out of the box: images, videos, audio files, and documents.
What you get
- One all-in-one package:
droppjs - Framework-agnostic core + CLI in the same package
- ORM adapters for Prisma, TypeORM, Drizzle, Sequelize, MikroORM, Mongoose, and Kysely
- Storage adapters for Local, S3, Cloudflare R2, Azure Blob, and GCS
- Image/video transformers
- Plugin hooks and ready-made plugins
Short version: one package, fewer headaches, more shipping.
Single package structure
src/core- orchestration engine and attach/get/delete workflowssrc/cli-droppcommand-line interfacesrc/db/*- ORM repository adapterssrc/storage/*- storage driverssrc/transformer/*- media transformation driverssrc/queue/bullmq- async processing queue adaptersrc/plugins/*- plugin ecosystemsrc/types- shared contracts and domain typessrc/config- config schema and loading utilities
Fast start
- Install dependencies:
pnpm install
- Build:
pnpm build
- Initialize config:
node ./bin/run.js init
- Run doctor checks:
node ./bin/run.js doctor --verbose
If doctor is happy, your future self will also be happy.
If doctor is unhappy, your future self will still be happy you checked early.
Documentation index
- Cookbook: Complete Feature Guide ← Start here (attach, delete, batch ops, pagination, plugins)
- Plugin Development Guide ← Build custom plugins
- Docs hub: docs/README.md
- Quick start: docs/QUICK_START.md
- API reference (core/adapters/types): docs/API_REFERENCE.md
- CLI command reference: docs/CLI_REFERENCE.md
- ORM guide: docs/ORM_GUIDE.md
- Framework guide: docs/FRAMEWORK_GUIDE.md
- Adapter reference: docs/ADAPTERS.md
- Plugin development: docs/PLUGIN_GUIDE.md
TL;DR user flow
dropp config:initdropp doctor --verbosedropp attach ./sample.jpg --model post --modelId 1 --collection coverdropp list --limit 10
If step 4 shows your file, you win.
Optional celebration: dramatic victory music.
SDK usage (code, not only CLI)
Dropp is not CLI-only.
await dropp.attach({...})await dropp.replace(id, {...})for hard replace (default)await dropp.replace(id, {...}, { version: true })for versioned replace
See docs/API_REFERENCE.md for full code examples.
Repository adapter examples
Ready-to-use examples live in:
- Adapters: examples/adapters/README.md
examples/repositories/prismaexamples/repositories/typeormexamples/repositories/drizzleexamples/repositories/sequelizeexamples/repositories/mikroormexamples/repositories/mongooseexamples/repositories/kysely
Built-in plugins
- Watermark - brand overlays and text watermarking
- AI Tagging - automatic tag generation
- SEO - alt text and metadata helpers
See docs/PLUGIN_GUIDE.md for plugin authoring and lifecycle hooks.
