Aviary
Packages

Overview

The full nestjs-media package set — core, the NestJS module, the browser client, disks, ORM stores, the image engine, and the ecosystem glue points.

Everything ships under the @dudousxd/nestjs-media* scope, versioned together. Install only what you use — disks, stores, and the image engine are separate packages so you never pull an S3 SDK or sharp into an app that doesn't need it.

The map

PackageRole
-coreSPIs (StorageDriver, MediaStore, ImageProcessor), StorageManager, MediaLibrary, uploadMode, diagnostics, resumable-upload engine, tus handler
(umbrella)NestJS MediaModule + MediaService + tus controller + the /storage subpath
-clientframework-agnostic browser client — uploadMedia (tus) + mediaUrl
-disk-locallocal filesystem driver
-disk-s3S3 driver (presign + native multipart)
-image-sharpsharp-backed ImageProcessor
-database-typeormTypeORM media store (non-destructive auto-schema)
-database-mikro-ormMikroORM media store (safe auto-schema)
-database-drizzleDrizzle media store (sqlite, migration-first)
-database-prismaPrisma media store (consumer-managed schema)
-telescopeTelescope watcher consuming nestjs:media:*
-codegenCodegen extension emitting a typed media client
-reactuseMediaUpload hook + MediaUploader component
-testingin-memory driver/store/upload-session + conformance suites

How they layer

-react ─┐
        ├─▸ -client ──▸ (tus HTTP) ──▸ umbrella ─▸ -core
-codegen┘                                          │
                          -disk-local / -disk-s3 ──┤  (StorageDriver)
                          -image-sharp ────────────┤  (ImageProcessor)
   -database-{typeorm,mikro-orm,drizzle,prisma} ───┤  (MediaStore)
                          -telescope ──────────────┘  (diagnostics consumer)

-core defines the contracts; everything else either implements one (disks, stores, the image engine) or consumes the library (the umbrella module, the glue points). Start at -core for the SPIs, or jump to the package you're wiring.

On this page